[SCM] ViennaCL packaging branch, master, updated. debian/1.1.2-6-15-g1630552

Michael Wild themiwi at users.sourceforge.net
Thu Feb 16 19:56:42 UTC 2012


The following commit has been merged in the master branch:
commit 036822943b407bdedb37ad638a3e22b1d54f4128
Author: Michael Wild <themiwi at users.sourceforge.net>
Date:   Thu Feb 16 16:28:00 2012 +0000

    New upstream version 1.2.0

diff --git a/CMakeLists.txt b/CMakeLists.txt
old mode 100755
new mode 100644
index b22748a..0b1be9f
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,261 +1,91 @@
-PROJECT(ViennaCL)
+# Project setup
+###############
 
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
+if(COMMAND cmake_policy)
+  cmake_policy(SET CMP0003 NEW)
+endif(COMMAND cmake_policy)
 
-#if you don't want the full compiler output, remove or comment the following line
-SET(CMAKE_VERBOSE_MAKEFILE ON)
+project(ViennaCL)
 
 
-# ************************** Section 1: Configure external dependencies **************************
-
 #
-# If you are interested in the impact of different kernel parameters on performance,
-# you may want to give ViennaProfiler a try (see http://sourceforge.net/projects/viennaprofiler/)
-# Set your connection parameters in examples/parameters/common_vprof.hpp accordingly.
+# User customizations if CMake does not find Boost or OpenCL
 #
-#SET(ENABLE_VIENNAPROFILER ON)
-#SET(MYSQLPATH "/opt/boost")        #path to MySQL header files
-#SET(MYSQLPPPATH "/opt/boost")        #path to MySQL++ header files
-
 
-#
-# If you want to build the examples that use boost::numeric::ublas, enable the following:
-#
-#SET(ENABLE_UBLAS ON)
-#SET(BOOSTPATH "/opt/boost")             #put your path to boost here if not in global include folder
+# Set boost path here if not found automatically by CMake
+#SET(BOOST_ROOT "C:/Program\ Files\ (x86)/boost/boost_1_42")     # adjust this on Windows
+#SET(BOOST_ROOT "/opt/local/include")                            # adjust this on MacOS or Linux
 
-#
-# alternate boost path for macs
-#
+# For out-of-the-box support on MacOS:
 IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-   INCLUDE_DIRECTORIES("/opt/local/include") 
+  INCLUDE_DIRECTORIES("/opt/local/include") 
+  set(CMAKE_EXE_LINKER_FLAGS "-framework OpenCL")
 ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 
 
+# Common options - There is usually no need to change anything below this line
+################
 
-#
-# If you want to build the examples that use Eigen, uncomment the following:
-#
-#SET(ENABLE_EIGEN ON)
-#SET(EIGENPATH "/path/to/eigen/")  #put your path to Eigen here if not in global include folder
-
-
-#
-# If you want to build the examples that use MTL4, uncomment the following:
-#
-#SET(ENABLE_MTL4 ON)
-#SET(MTL4PATH "/path/to/MTL-4/")  #put your path to MTL4 here if not in global include folder
-
-
-
-# **************************  Section 2: Configure OpenCL **************************
-
-#
-# AMD APP SDK:
-# add include and lib path to build environment
-# The linker will most likely pick the correct link directory
-# Otherwise, feel free to comment the wrong link directory for your machine.
-#
-# The following lines can be commented if AMD APP SDK is not in use.
-#
-SET(AppSDK $ENV{AMDAPPSDKROOT})
-IF(AppSDK)
- INCLUDE_DIRECTORIES($ENV{AMDAPPSDKROOT}/include) 
- LINK_DIRECTORIES($ENV{AMDAPPSDKROOT}/lib/x86)       #use this on 32 bit systems
- LINK_DIRECTORIES($ENV{AMDAPPSDKROOT}/lib/x86_64)    #use this on 64 bit systems
-ENDIF(AppSDK)
-#
-# Note that the environment variable was ATISTREAMSDKROOT in older versions of the SDK:
-#
-SET(StreamSDK $ENV{ATISTREAMSDKROOT})
-IF(StreamSDK)
- INCLUDE_DIRECTORIES($ENV{ATISTREAMSDKROOT}/include) 
- LINK_DIRECTORIES($ENV{ATISTREAMSDKROOT}/lib/x86)       #use this on 32 bit systems
- LINK_DIRECTORIES($ENV{ATISTREAMSDKROOT}/lib/x86_64)    #use this on 64 bit systems
-ENDIF(StreamSDK)
-
-
-#
-# Intel OpenCL SDK:
-# add include and lib path to build environment
-# The linker will most likely pick the correct link directory
-# Otherwise, feel free to comment the wrong link directory for your machine.
-#
-# The following lines can be commented if Intel OpenCL SDK is not in use.
-#
-SET(IntelSDK $ENV{INTELOCLSDKROOT})
-IF(IntelSDK)
- INCLUDE_DIRECTORIES($ENV{INTELOCLSDKROOT}/include) 
- LINK_DIRECTORIES($ENV{INTELOCLSDKROOT}/lib/x86)       #use this on 32 bit systems
- LINK_DIRECTORIES($ENV{INTELOCLSDKROOT}/lib/x64)    #use this on 64 bit systems
-ENDIF(IntelSDK)
-
-#
-# For NVIDIA hardware, there should be no need for additional configurations at this point
-#
-
+set(VERSION_MAJOR 1)
+set(VERSION_MINOR 2)
+set(VERSION_PATCH 0)
+set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
 
-# ************************** Section 3: ViennaCL standalone builds **************************
+list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
 
-#
-# Specify include and source directory
-#
-INCLUDE_DIRECTORIES(".")
-INCLUDE_DIRECTORIES("external/")
+include(ViennaCLCommon)
 
-
-#add definitions, compiler switches, etc.
+# Set release build:
 IF(DEFINED CMAKE_BUILD_TYPE)
  SET (CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE})
 ELSE()
  SET (CMAKE_BUILD_TYPE Release)
 ENDIF()
 
-#
-# Set high warning level on GCC and enable optimizations (or debug)
-#
-IF(CMAKE_COMPILER_IS_GNUCXX)
-   #ADD_DEFINITIONS(-Wall -O0 -g)             #debug build
-   ADD_DEFINITIONS(-Wall -pedantic -O3)       #release build
-ENDIF(CMAKE_COMPILER_IS_GNUCXX)
-
-#
-# Standalone ViennaCL executables
-#
+# User options
+##############
 
-#tutorials:
-ADD_EXECUTABLE(blas1 examples/tutorial/blas1.cpp)
-ADD_EXECUTABLE(custom-kernels examples/tutorial/custom-kernels.cpp)
-ADD_EXECUTABLE(custom-context examples/tutorial/custom-context.cpp)
-ADD_EXECUTABLE(viennacl-info examples/tutorial/viennacl-info.cpp)
+option(BUILD_DOXYGEN_DOCS "Build the Doxygen-generated API docs" ON)
 
-#benchmarks
-ADD_EXECUTABLE(vectorbench examples/benchmarks/vector.cpp)
-ADD_EXECUTABLE(openclbench examples/benchmarks/opencl.cpp)
-ADD_EXECUTABLE(blas3bench examples/benchmarks/blas3.cpp)
+option(BUILD_MANUAL "Build the PDF manual" ON)
 
-#parameters:
-ADD_EXECUTABLE(vectorparams examples/parameters/vector.cpp
-                            external/pugixml/src/pugixml.cpp)
-ADD_EXECUTABLE(matrixparams examples/parameters/matrix.cpp
-                            external/pugixml/src/pugixml.cpp)
-ADD_EXECUTABLE(sparseparams examples/parameters/sparse.cpp
-                            external/pugixml/src/pugixml.cpp)
-ADD_EXECUTABLE(parameter_reader examples/parameters/parameter_reader.cpp
-                                external/pugixml/src/pugixml.cpp)                        
-
-#
-# Mac OS X specific linker part
-#
-IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-   set(CMAKE_EXE_LINKER_FLAGS "-framework OpenCL")
-ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+mark_as_advanced(BUILD_DOXYGEN_DOCS BUILD_MANUAL)
 
-#
-# Linux and Windows specific linker part
-#
-IF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
-   #tutorials
-   TARGET_LINK_LIBRARIES(blas1 OpenCL)
-   TARGET_LINK_LIBRARIES(custom-kernels OpenCL)
-   TARGET_LINK_LIBRARIES(custom-context OpenCL)
-   TARGET_LINK_LIBRARIES(viennacl-info OpenCL)
+# Find prerequisites
+####################
 
-   #benchmarks
-   TARGET_LINK_LIBRARIES(vectorbench OpenCL)
-   TARGET_LINK_LIBRARIES(openclbench OpenCL)
-   TARGET_LINK_LIBRARIES(blas3bench OpenCL)
+if(BUILD_DOXYGEN_DOCS)
+   find_package(Doxygen REQUIRED)
+endif()
 
-   #parameter estimation
-   TARGET_LINK_LIBRARIES(vectorparams OpenCL)
-   TARGET_LINK_LIBRARIES(matrixparams OpenCL)
-   TARGET_LINK_LIBRARIES(sparseparams OpenCL)
-   TARGET_LINK_LIBRARIES(parameter_reader OpenCL)   
-ENDIF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
+if(BUILD_MANUAL)
+   find_package(LATEX REQUIRED)
+endif()
 
+# Compile options
+#################
 
-# ************************** Section 4: ViennaCL with external libraries **************************
+include_directories(BEFORE ${PROJECT_SOURCE_DIR})
 
-#
-# ViennaProfiler related configuration
-#
-IF(DEFINED ENABLE_VIENNAPROFILER)
-   INCLUDE_DIRECTORIES(${MYSQLPATH})
-   INCLUDE_DIRECTORIES(${MYSQLPPPATH})
+# Subdirectories
+################
 
-   #vector:
-   ADD_EXECUTABLE(vectorparams_vprof examples/parameters/vector.cpp
-                                     external/pugixml/src/pugixml.cpp)
-   SET_PROPERTY(TARGET vectorparams_vprof PROPERTY COMPILE_DEFINITIONS ENABLE_VIENNAPROFILER)
-   TARGET_LINK_LIBRARIES(vectorparams_vprof OpenCL mysqlpp)
+add_subdirectory(auxiliary)
 
-   #dense matrix:
-   ADD_EXECUTABLE(matrixparams_vprof examples/parameters/matrix.cpp
-                                     external/pugixml/src/pugixml.cpp)
-   SET_PROPERTY(TARGET matrixparams_vprof PROPERTY COMPILE_DEFINITIONS ENABLE_VIENNAPROFILER)
-   TARGET_LINK_LIBRARIES(matrixparams_vprof OpenCL mysqlpp)
+if(BUILD_EXAMPLES)
+   add_subdirectory(examples)
+endif()
 
-   #sparse matrix:
-   ADD_EXECUTABLE(sparseparams_vprof examples/parameters/sparse.cpp
-                                     external/pugixml/src/pugixml.cpp)
-   SET_PROPERTY(TARGET sparseparams_vprof PROPERTY COMPILE_DEFINITIONS ENABLE_VIENNAPROFILER)
-   TARGET_LINK_LIBRARIES(sparseparams_vprof OpenCL mysqlpp)
-ENDIF(DEFINED ENABLE_VIENNAPROFILER)
+if(BUILD_TESTING)
+   add_subdirectory(tests)
+endif()
 
+add_subdirectory(doc)
 
-#
-# ublas related configuration
-#
-IF(DEFINED ENABLE_UBLAS)
-  INCLUDE_DIRECTORIES(${BOOSTPATH})
-  
-  #tutorials:
-  ADD_EXECUTABLE(blas2 examples/tutorial/blas2.cpp) 
-  ADD_EXECUTABLE(blas3 examples/tutorial/blas3.cpp)
-  ADD_EXECUTABLE(iterative examples/tutorial/iterative.cpp)
-  ADD_EXECUTABLE(iterative-ublas examples/tutorial/iterative-ublas.cpp)
-
-  #benchmarks:
-  ADD_EXECUTABLE(sparsebench examples/benchmarks/sparse.cpp)
-  ADD_EXECUTABLE(solverbench examples/benchmarks/solver.cpp)
-
-  IF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
-    TARGET_LINK_LIBRARIES(iterative OpenCL)
-    TARGET_LINK_LIBRARIES(blas2 OpenCL)
-    TARGET_LINK_LIBRARIES(blas3 OpenCL)
-
-    TARGET_LINK_LIBRARIES(sparsebench OpenCL)
-    TARGET_LINK_LIBRARIES(solverbench OpenCL)
-  ENDIF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
-
-ENDIF(DEFINED ENABLE_UBLAS)
-
-
-
-#
-# Eigen related configuration
-#
-IF(DEFINED ENABLE_EIGEN)
-  INCLUDE_DIRECTORIES(${EIGENPATH})
-  ADD_EXECUTABLE(iterative-eigen examples/tutorial/iterative-eigen.cpp)
-  ADD_EXECUTABLE(eigen-with-viennacl examples/tutorial/eigen-with-viennacl.cpp)
-  
-  IF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
-    TARGET_LINK_LIBRARIES(eigen-with-viennacl OpenCL)
-  ENDIF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
-ENDIF(DEFINED ENABLE_EIGEN)
-
-
-
-#
-# MTL4 related configuration
-#
-IF(DEFINED ENABLE_MTL4)
-  INCLUDE_DIRECTORIES(${MTL4PATH})
-  ADD_EXECUTABLE(iterative-mtl4 examples/tutorial/iterative-mtl4.cpp)
-  ADD_EXECUTABLE(mtl4-with-viennacl examples/tutorial/mtl4-with-viennacl.cpp)
+# Install
+#########
 
-  IF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
-    TARGET_LINK_LIBRARIES(mtl4-with-viennacl OpenCL)
-  ENDIF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
-ENDIF(DEFINED ENABLE_MTL4)
+install(DIRECTORY viennacl
+   DESTINATION ${INSTALL_INCLUDE_DIR} COMPONENT dev
+   FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp")
diff --git a/LICENSE b/LICENSE
index 75edd98..fd650fb 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010, 2011, Institute for Microelectronics, TU Wien
+Copyright (c) 2010, Institute for Microelectronics, TU Wien
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/auxiliary/CMakeLists.txt b/auxiliary/CMakeLists.txt
new file mode 100644
index 0000000..cfd1ce6
--- /dev/null
+++ b/auxiliary/CMakeLists.txt
@@ -0,0 +1,301 @@
+include_directories(${Boost_INCLUDE_DIRS})
+
+add_executable(generate-blas3-solve-align1 generate-blas3-solve-align1.cpp)
+add_executable(generate-blas3-prod-align1 generate-blas3-prod-align1.cpp)
+
+function(generate_blas3_prod_align1 outvar)
+   set(crstr_0 col)
+   set(crstr_1 row)
+   set(ATstr_0 A)
+   set(ATstr_1 T)
+   set(outfiles)
+
+   foreach(ar 0 1) # A is column/row major
+   foreach(br 0 1) # B is column/row major
+   foreach(cr 0 1) # C is column/row major
+   foreach(at 0 1) # A is (not) transposed
+   foreach(bt 0 1) # B is (not) transposed
+      set(d "${CMAKE_CURRENT_BINARY_DIR}")
+      set(d "${d}/matrix_prod_${crstr_${ar}}_${crstr_${br}}_${crstr_${cr}}")
+      set(d "${d}/align1")
+      file(MAKE_DIRECTORY "${d}")
+      set(o "${d}/prod_${ATstr_${at}}${ATstr_${bt}}.cl")
+      file(RELATIVE_PATH ro "${CMAKE_CURRENT_BINARY_DIR}" "${o}")
+      add_custom_command(OUTPUT "${o}"
+         COMMAND generate-blas3-prod-align1
+            ${ar} ${br} ${cr} ${at} ${bt} > "${o}"
+         COMMENT "Generating ${ro}"
+         WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+         VERBATIM)
+      list(APPEND outfiles "${o}")
+   endforeach()
+   endforeach()
+   endforeach()
+   endforeach()
+   endforeach()
+   set(${outvar} "${outfiles}" PARENT_SCOPE)
+endfunction()
+
+function(generate_blas3_solve_align1 outvar)
+   set(crstr_0 col)
+   set(crstr_1 row)
+   set(tstr_0)
+   set(tstr_1 trans_)
+   set(ulstr_0 lower)
+   set(ulstr_1 upper)
+   set(unitstr_0)
+   set(unitstr_1 unit_)
+   set(outfiles)
+
+   foreach(ar 0 1) # A is column/row major
+   foreach(br 0 1) # A is column/row major
+   foreach(at 0 1) # A is transposed
+   foreach(bt 0 1) # B is transposed
+   foreach(ul 0 1) # upper/lower
+   foreach(un 0 1) # unit
+      set(d "${CMAKE_CURRENT_BINARY_DIR}")
+      set(d "${d}/matrix_solve_${crstr_${ar}}_${crstr_${br}}")
+      set(d "${d}/align1")
+      file(MAKE_DIRECTORY "${d}")
+      set(o "${d}/${tstr_${at}}${unitstr_${un}}${ulstr_${ul}}_${tstr_${bt}}solve.cl")
+      file(RELATIVE_PATH ro "${CMAKE_CURRENT_BINARY_DIR}" "${o}")
+      add_custom_command(OUTPUT "${o}"
+         COMMAND generate-blas3-solve-align1
+            ${ar} ${br} ${at} ${bt} ${ul} ${un} > "${o}"
+         COMMENT "Generating ${ro}"
+         WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+         VERBATIM)
+      list(APPEND outfiles "${o}")
+   endforeach()
+   endforeach()
+   endforeach()
+   endforeach()
+   endforeach()
+   endforeach()
+   set(${outvar} "${outfiles}" PARENT_SCOPE)
+endfunction()
+
+# Matrix-Matrix products
+generate_blas3_prod_align1(MATRIX_PROD_SRCS)
+
+# Matrix-Matrix triangular solver
+generate_blas3_solve_align1(MATRIX_SOLVE_SRCS)
+
+set(COMPRESSED_MATRIX_SRCS
+   compressed_matrix/align1/bicgstab_kernel1.cl
+   compressed_matrix/align1/bicgstab_kernel2.cl
+   compressed_matrix/align1/jacobi.cl
+   compressed_matrix/align1/jacobi_precond.cl
+   compressed_matrix/align1/lu_backward.cl
+   compressed_matrix/align1/lu_forward.cl
+   compressed_matrix/align1/row_scaling_1.cl
+   compressed_matrix/align1/row_scaling_2.cl
+   compressed_matrix/align1/vec_mul.cl
+   compressed_matrix/align4/vec_mul.cl
+   compressed_matrix/align8/vec_mul.cl)
+
+set(COORDINATE_MATRIX_SRCS
+   coordinate_matrix/align1/vec_mul.cl
+   coordinate_matrix/align128/dummy)
+
+set(MATRIX_COL_SRCS
+   matrix_col/align1/add.cl
+   matrix_col/align1/clear.cl
+   matrix_col/align1/cpu_inplace_mult.cl
+   matrix_col/align1/fft_direct.cl
+   matrix_col/align1/fft_radix2.cl
+   matrix_col/align1/fft_radix2_local.cl
+   matrix_col/align1/fft_reorder.cl
+   matrix_col/align1/inplace_add.cl
+   matrix_col/align1/inplace_divide.cl
+   matrix_col/align1/inplace_mult.cl
+   matrix_col/align1/inplace_sub.cl
+   matrix_col/align1/lower_triangular_substitute_inplace.cl
+   matrix_col/align1/lu_factorize.cl
+   matrix_col/align1/rank1_update.cl
+   matrix_col/align1/scaled_rank1_update.cl
+   matrix_col/align1/sub.cl
+   matrix_col/align1/trans_lower_triangular_substitute_inplace.cl
+   matrix_col/align1/trans_unit_lower_triangular_substitute_inplace.cl
+   matrix_col/align1/trans_unit_upper_triangular_substitute_inplace.cl
+   matrix_col/align1/trans_upper_triangular_substitute_inplace.cl
+   matrix_col/align1/trans_vec_mul.cl
+   matrix_col/align1/unit_lower_triangular_substitute_inplace.cl
+   matrix_col/align1/unit_upper_triangular_substitute_inplace.cl
+   matrix_col/align1/upper_triangular_substitute_inplace.cl
+   matrix_col/align1/vec_mul.cl
+   matrix_col/align16/dummy)
+
+set(MATRIX_ROW_SRCS
+   matrix_row/align1/add.cl
+   matrix_row/align1/clear.cl
+   matrix_row/align1/cpu_inplace_mult.cl
+   matrix_row/align1/fft_direct.cl
+   matrix_row/align1/fft_radix2.cl
+   matrix_row/align1/fft_radix2_local.cl
+   matrix_row/align1/fft_reorder.cl
+   matrix_row/align1/inplace_add.cl
+   matrix_row/align1/inplace_divide.cl
+   matrix_row/align1/inplace_mult.cl
+   matrix_row/align1/inplace_sub.cl
+   matrix_row/align1/lower_triangular_substitute_inplace.cl
+   matrix_row/align1/lu_factorize.cl
+   matrix_row/align1/rank1_update.cl
+   matrix_row/align1/scaled_rank1_update.cl
+   matrix_row/align1/sub.cl
+   matrix_row/align1/trans_lower_triangular_substitute_inplace.cl
+   matrix_row/align1/trans_unit_lower_triangular_substitute_inplace.cl
+   matrix_row/align1/trans_unit_upper_triangular_substitute_inplace.cl
+   matrix_row/align1/trans_upper_triangular_substitute_inplace.cl
+   matrix_row/align1/trans_vec_mul.cl
+   matrix_row/align1/unit_lower_triangular_substitute_inplace.cl
+   matrix_row/align1/unit_upper_triangular_substitute_inplace.cl
+   matrix_row/align1/upper_triangular_substitute_inplace.cl
+   matrix_row/align1/vec_mul.cl
+   matrix_row/align16/dummy)
+
+set(SCALAR_SRCS
+   scalar/align1/add.cl
+   scalar/align1/cpu_add.cl
+   scalar/align1/cpu_div.cl
+   scalar/align1/cpu_inplace_add.cl
+   scalar/align1/cpu_inplace_div.cl
+   scalar/align1/cpu_inplace_mul.cl
+   scalar/align1/cpu_inplace_sub.cl
+   scalar/align1/cpu_mul.cl
+   scalar/align1/cpu_sub.cl
+   scalar/align1/divide.cl
+   scalar/align1/inplace_add.cl
+   scalar/align1/inplace_div.cl
+   scalar/align1/inplace_mul.cl
+   scalar/align1/inplace_sub.cl
+   scalar/align1/mul.cl
+   scalar/align1/sub.cl)
+
+set(VECTOR_SRCS
+   vector/align16/add.cl
+   vector/align16/cpu_inplace_mul.cl
+   vector/align16/cpu_mult.cl
+   vector/align16/divide.cl
+   vector/align16/inplace_add.cl
+   vector/align16/inplace_divide.cl
+   vector/align16/inplace_mult.cl
+   vector/align16/inplace_sub.cl
+   vector/align16/mult.cl
+   vector/align16/sub.cl
+   vector/align1/add.cl
+   vector/align1/clear.cl
+   vector/align1/cpu_inplace_mul_add.cl
+   vector/align1/cpu_inplace_mult.cl
+   vector/align1/cpu_mul_add.cl
+   vector/align1/cpu_mult.cl
+   vector/align1/diag_precond.cl
+   vector/align1/divide.cl
+   vector/align1/index_norm_inf.cl
+   vector/align1/inner_prod.cl
+   vector/align1/inplace_add.cl
+   vector/align1/inplace_div_add.cl
+   vector/align1/inplace_divide.cl
+   vector/align1/inplace_div_sub.cl
+   vector/align1/inplace_mul_add.cl
+   vector/align1/inplace_mul_sub.cl
+   vector/align1/inplace_mult.cl
+   vector/align1/inplace_sub.cl
+   vector/align1/mul_add.cl
+   vector/align1/mul_sub.cl
+   vector/align1/mult.cl
+   vector/align1/norm_1.cl
+   vector/align1/norm_2.cl
+   vector/align1/norm_inf.cl
+   vector/align1/plane_rotation.cl
+   vector/align1/sqrt_sum.cl
+   vector/align1/sub.cl
+   vector/align1/sum.cl
+   vector/align1/swap.cl
+   vector/align1/vmax.cl
+   vector/align4/cpu_inplace_mul_add.cl
+   vector/align4/cpu_mul_add.cl
+   vector/align4/inplace_div_add.cl
+   vector/align4/inplace_div_sub.cl
+   vector/align4/inplace_mul_add.cl
+   vector/align4/inplace_mul_sub.cl
+   vector/align4/mul_add.cl)
+
+set(FFT_SRCS
+   fft/align1/bluestein_post.cl
+   fft/align1/bluestein_pre.cl
+   fft/align1/complex_to_real.cl
+   fft/align1/fft_div_vec_scalar.cl
+   fft/align1/fft_mult_vec.cl
+   fft/align1/real_to_complex.cl
+   fft/align1/reverse_inplace.cl
+   fft/align1/transpose.cl
+   fft/align1/transpose_inplace.cl
+   fft/align1/vandermonde_prod.cl
+   fft/align1/zero2.cl
+   )
+
+set(SPAI_SRCS
+   spai/align1/assemble_blocks.cl
+   spai/align1/block_bv_assembly.cl
+   spai/align1/block_least_squares.cl
+   spai/align1/block_q_mult.cl
+   spai/align1/block_qr.cl
+   spai/align1/block_qr_assembly.cl
+   spai/align1/block_qr_assembly_1.cl
+   spai/align1/block_r_assembly.cl
+   )
+
+set(CL_SRCS)
+foreach(f IN LISTS COMPRESSED_MATRIX_SRCS COORDINATE_MATRIX_SRCS
+      MATRIX_COL_SRCS MATRIX_ROW_SRCS SCALAR_SRCS VECTOR_SRCS FFT_SRCS SPAI_SRCS)
+   get_filename_component(d "${CMAKE_CURRENT_BINARY_DIR}/${f}" PATH)
+   file(MAKE_DIRECTORY "${d}")
+   configure_file(${f} "${CMAKE_CURRENT_BINARY_DIR}/${f}" COPYONLY)
+   list(APPEND CL_SRCS "${CMAKE_CURRENT_BINARY_DIR}/${f}")
+endforeach()
+list(APPEND CL_SRCS ${MATRIX_PROD_SRCS} ${MATRIX_SOLVE_SRCS})
+
+add_executable(converter converter.cpp)
+target_link_libraries(converter ${Boost_LIBRARIES})
+
+set(KERNEL_HDRS)
+set(KERNEL_SRCS)
+foreach(d
+      compressed_matrix
+      coordinate_matrix
+      matrix_col
+      matrix_prod_col_col_col
+      matrix_prod_col_col_row
+      matrix_prod_col_row_col
+      matrix_prod_col_row_row
+      matrix_prod_row_col_col
+      matrix_prod_row_col_row
+      matrix_prod_row_row_col
+      matrix_prod_row_row_row
+      matrix_row
+      matrix_solve_col_col
+      matrix_solve_col_row
+      matrix_solve_row_col
+      matrix_solve_row_row
+      scalar
+      vector
+      fft
+      spai
+      )
+   set(f "${PROJECT_SOURCE_DIR}/viennacl/linalg/kernels/${d}")
+   list(APPEND KERNEL_HDRS "${f}_kernels.h")
+   list(APPEND KERNEL_SRCS "${f}_source.h")
+endforeach()
+
+file(MAKE_DIRECTORY "${PROJECT_SOURCE_DIR}/viennacl/linalg/kernels")
+
+add_custom_command(OUTPUT ${KERNEL_HDRS} ${KERNEL_SRCS}
+   COMMAND converter
+   DEPENDS ${CL_SRCS}
+   WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+   COMMENT "Generating kernel headers and sources"
+   VERBATIM)
+
+add_custom_target(kernels ALL
+   DEPENDS ${KERNEL_HDRS} ${KERNEL_SRCS})
diff --git a/auxiliary/README b/auxiliary/README
index 3abeafe..f672a19 100644
--- a/auxiliary/README
+++ b/auxiliary/README
@@ -6,9 +6,9 @@ The generic location of the raw .cl files in auxiliary-folder is is:
 [type]/align[alignment]/[kernelname].cl
 
 where 
-[type]       ... the ViennaCL class the kernel is defined for
+[type]       ... the ViennaCL class the kernel is defined for (see VCLKernels.h)
 [alignment]  ... Alignment of data for vectorization (1,2,4,8,16,...)
-[kernelname] ... name of the kernel
+[kernelname] ... name of the kernel as defined in (see VCLKernels.h)
 
 Note that kernels for double precision are generated automatically by a string replace of "float" -> "double"
 
diff --git a/auxiliary/clean.sh b/auxiliary/clean.sh
deleted file mode 100755
index 3bd4109..0000000
--- a/auxiliary/clean.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-
-rm *.*~
-
-rm scalar/align1/*.cl~
-
-rm vector/align1/*.cl~
-rm vector/align4/*.cl~
-rm vector/align16/*.cl~
-
-rm matrix_row/align1/*.cl~
-rm matrix_row/align16/*.cl~
-rm matrix_col/align1/*.cl~
-rm matrix_col/align16/*.cl~
-
-rm matrix_prod_row_row_row/align1/*.cl~
-rm matrix_prod_row_row_col/align1/*.cl~
-rm matrix_prod_row_col_row/align1/*.cl~
-rm matrix_prod_row_col_col/align1/*.cl~
-
-rm matrix_prod_col_row_row/align1/*.cl~
-rm matrix_prod_col_row_col/align1/*.cl~
-rm matrix_prod_col_col_row/align1/*.cl~
-rm matrix_prod_col_col_col/align1/*.cl~
-
-rm matrix_solve_row_row/align1/*.cl~
-rm matrix_solve_row_col/align1/*.cl~
-rm matrix_solve_col_row/align1/*.cl~
-rm matrix_solve_col_col/align1/*.cl~
-
-
-rm compressed_matrix/align1/*.cl~
-rm compressed_matrix/align4/*.cl~
-rm compressed_matrix/align8/*.cl~
diff --git a/auxiliary/compressed_matrix/align1/jacobi.cl b/auxiliary/compressed_matrix/align1/jacobi.cl
new file mode 100644
index 0000000..6623ceb
--- /dev/null
+++ b/auxiliary/compressed_matrix/align1/jacobi.cl
@@ -0,0 +1,28 @@
+
+
+__kernel void jacobi(
+ __global const unsigned int * row_indices,
+ __global const unsigned int * column_indices,
+ __global const float * elements,
+ float weight,
+ __global const float * old_result,
+ __global float * new_result,
+ __global const float * rhs,
+ unsigned int size)
+ {
+  float sum, diag=1;
+  int col;
+  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
+  {
+    sum = 0;
+    for (unsigned int j = row_indices[i]; j<row_indices[i+1]; j++)
+    {
+      col = column_indices[j];
+      if (i == col)
+	diag = elements[j];
+      else 
+	sum += elements[j] * old_result[col]; 
+    } 
+      new_result[i] = weight * (rhs[i]-sum) / diag + (1-weight) * old_result[i]; 
+   } 
+ } 
diff --git a/auxiliary/convert.sh b/auxiliary/convert.sh
deleted file mode 100755
index d554fa4..0000000
--- a/auxiliary/convert.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-g++ generate-blas3-solve-align1.cpp -o generate-blas3-solve-align1
-g++ generate-blas3-prod-align1.cpp -o generate-blas3-prod-align1
-
-./generate-blas3.sh
-
-g++ converter.cpp -o converter -lboost_filesystem-mt
-./converter
diff --git a/auxiliary/converter b/auxiliary/converter
deleted file mode 100755
index 6728e74..0000000
Binary files a/auxiliary/converter and /dev/null differ
diff --git a/auxiliary/converter.cpp b/auxiliary/converter.cpp
index b6eb75e..a11de53 100644
--- a/auxiliary/converter.cpp
+++ b/auxiliary/converter.cpp
@@ -7,6 +7,8 @@
 #include <sstream>
 #include <string>
 
+#define BOOST_FILESYSTEM_VERSION 2
+
 #include <boost/filesystem/operations.hpp>
 #include <boost/filesystem/path.hpp>
 #include <iostream>
@@ -51,14 +53,14 @@ void createSourceFile(const char * dirname)
 {
     //Step 1: Open source file
     std::string header_name(dirname);
-    std::ofstream source_file(("../viennacl/linalg/kernels/" + header_name + "_source.h").c_str());
+    std::ofstream source_file(("../../viennacl/linalg/kernels/" + header_name + "_source.h").c_str());
 
     //Step 2: Write source header file preamble
     std::string dirname_uppercase(dirname);
     std::transform(dirname_uppercase.begin(), dirname_uppercase.end(), dirname_uppercase.begin(), toupper);
-    source_file << "#ifndef _VIENNACL_" << dirname_uppercase << "_SOURCE_HPP_" << std::endl;
-    source_file << "#define _VIENNACL_" << dirname_uppercase << "_SOURCE_HPP_" << std::endl;
-    source_file << "//Automatically generated file from aux-directory, do not edit manually!" << std::endl;
+    source_file << "#ifndef VIENNACL_LINALG_KERNELS_" << dirname_uppercase << "_SOURCE_HPP_" << std::endl;
+    source_file << "#define VIENNACL_LINALG_KERNELS_" << dirname_uppercase << "_SOURCE_HPP_" << std::endl;
+    source_file << "//Automatically generated file from auxiliary-directory, do not edit manually!" << std::endl;
     source_file << "namespace viennacl" << std::endl;
     source_file << "{" << std::endl;
     source_file << " namespace linalg" << std::endl;
@@ -70,7 +72,7 @@ void createSourceFile(const char * dirname)
     fs::path filepath = fs::system_complete( fs::path( dirname ) );
     if ( fs::is_directory( filepath ) )
     {
-        std::cout << "\nIn directory: " << filepath.directory_string() << std::endl;
+        //std::cout << "\n In directory " << filepath.directory_string() << std::endl;
 
         fs::directory_iterator end_iter;
         //write and register single precision sources:
@@ -80,7 +82,7 @@ void createSourceFile(const char * dirname)
         {
             if (fs::is_directory( alignment_itr->path() ))
             {
-                std::cout << "\nIn directory: " << alignment_itr->path().directory_string() << std::endl;
+                std::cout << "\nGenerating kernels from directory " << alignment_itr->path().directory_string() << std::endl;
 
                 //write and register single precision sources:
                 for ( fs::directory_iterator cl_itr( alignment_itr->path() );
@@ -259,7 +261,7 @@ void createKernelFile(const char * dirname)
 {
     //Step 1: Open kernel file
     std::string header_name(dirname);
-    std::ofstream kernel_file(("../viennacl/linalg/kernels/" + header_name + "_kernels.h").c_str());
+    std::ofstream kernel_file(("../../viennacl/linalg/kernels/" + header_name + "_kernels.h").c_str());
 
     //Step 2: Write kernel header file preamble
     std::string dirname_uppercase(dirname);
@@ -290,7 +292,7 @@ void createKernelFile(const char * dirname)
     fs::path filepath = fs::system_complete( fs::path( dir ) );
     if ( fs::is_directory( filepath ) )
     {
-        std::cout << "\nIn directory: " << filepath.directory_string() << std::endl;
+        //std::cout << "\nIn directory: " << filepath.directory_string() << std::endl;
 
         fs::directory_iterator end_iter;
         //write and register single precision sources:
@@ -316,7 +318,7 @@ void createKernelFile(const char * dirname)
     filepath = fs::system_complete( fs::path( dir ) );
     if ( fs::is_directory( filepath ) )
     {
-        std::cout << "\nIn directory: " << filepath.directory_string() << std::endl;
+        //std::cout << "\nIn directory: " << filepath.directory_string() << std::endl;
 
         fs::directory_iterator end_iter;
         //write and register single precision sources:
@@ -353,7 +355,6 @@ void createHeaders(const char * dirname)
 
 int main(int args, char * argsv[])
 {
-
     createHeaders("compressed_matrix");
     createHeaders("coordinate_matrix");
     createHeaders("matrix_row");
@@ -372,5 +373,7 @@ int main(int args, char * argsv[])
     createHeaders("matrix_solve_row_row");
     createHeaders("scalar");
     createHeaders("vector");
-
+    createHeaders("fft");
+    createHeaders("spai");
 }
+
diff --git a/auxiliary/fft/align1/bluestein_post.cl b/auxiliary/fft/align1/bluestein_post.cl
new file mode 100644
index 0000000..563d9ea
--- /dev/null
+++ b/auxiliary/fft/align1/bluestein_post.cl
@@ -0,0 +1,23 @@
+// Postprocessing phase of Bluestein algorithm
+__kernel void bluestein_post(__global float2* Z,
+                             __global float2* out,
+                             unsigned int size) 
+{
+    unsigned int glb_id = get_global_id(0);
+    unsigned int glb_sz = get_global_size(0);
+
+    unsigned int double_size = size << 1;
+    float sn_a, cs_a;
+    const float NUM_PI = 3.14159265358979323846;
+
+    for(unsigned int i = glb_id; i < size; i += glb_sz) {
+        unsigned int rm = i * i % (double_size);
+        float angle = (float)rm / size * (-NUM_PI);
+
+        sn_a = sincos(angle, &cs_a);
+
+        float2 b_i = (float2)(cs_a, sn_a);
+        out[i] = (float2)(Z[i].x * b_i.x - Z[i].y * b_i.y, Z[i].x * b_i.y + Z[i].y * b_i.x);
+    }
+}
+
diff --git a/auxiliary/fft/align1/bluestein_pre.cl b/auxiliary/fft/align1/bluestein_pre.cl
new file mode 100644
index 0000000..fe64e80
--- /dev/null
+++ b/auxiliary/fft/align1/bluestein_pre.cl
@@ -0,0 +1,34 @@
+// Preprocessing phase of Bluestein algorithm
+__kernel void bluestein_pre(__global float2* input,
+                            __global float2* A,
+                            __global float2* B,
+                            unsigned int size,
+                            unsigned int ext_size
+                           ) {
+    unsigned int glb_id = get_global_id(0);
+    unsigned int glb_sz = get_global_size(0);
+
+    unsigned int double_size = size << 1;
+
+    float sn_a, cs_a;
+    const float NUM_PI = 3.14159265358979323846;
+
+    for(unsigned int i = glb_id; i < size; i += glb_sz) {
+        unsigned int rm = i * i % (double_size);
+        float angle = (float)rm / size * NUM_PI;
+
+        sn_a = sincos(-angle, &cs_a);
+
+        float2 a_i = (float2)(cs_a, sn_a);
+        float2 b_i = (float2)(cs_a, -sn_a);
+
+        A[i] = (float2)(input[i].x * a_i.x - input[i].y * a_i.y, input[i].x * a_i.y + input[i].y * a_i.x);
+
+        B[i] = b_i;
+
+        // very bad instruction, to be fixed
+        if(i) 
+          B[ext_size - i] = b_i;
+    }
+}
+
diff --git a/auxiliary/fft/align1/complex_to_real.cl b/auxiliary/fft/align1/complex_to_real.cl
new file mode 100644
index 0000000..313d78a
--- /dev/null
+++ b/auxiliary/fft/align1/complex_to_real.cl
@@ -0,0 +1,8 @@
+__kernel void complex_to_real(__global float2* in,
+                              __global float* out,
+                              unsigned int size) {
+    for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0)) {
+        out[i] = in[i].x;
+    }
+}
+
diff --git a/auxiliary/fft/align1/fft_div_vec_scalar.cl b/auxiliary/fft/align1/fft_div_vec_scalar.cl
new file mode 100644
index 0000000..3c21cf7
--- /dev/null
+++ b/auxiliary/fft/align1/fft_div_vec_scalar.cl
@@ -0,0 +1,7 @@
+// divide a vector by a scalar (to be removed...)
+__kernel void fft_div_vec_scalar(__global float2* input1, unsigned int size, float factor) {
+    for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0)) {
+        input1[i] /= factor;
+    }
+}
+
diff --git a/auxiliary/fft/align1/fft_mult_vec.cl b/auxiliary/fft/align1/fft_mult_vec.cl
new file mode 100644
index 0000000..8fce0b4
--- /dev/null
+++ b/auxiliary/fft/align1/fft_mult_vec.cl
@@ -0,0 +1,13 @@
+// elementwise product of two complex vectors
+__kernel void fft_mult_vec(__global const float2* input1,
+                          __global const float2* input2,
+                          __global float2* output,
+                          unsigned int size) {
+    for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0)) {
+        float2 in1 = input1[i];
+        float2 in2 = input2[i];
+
+        output[i] = (float2)(in1.x * in2.x - in1.y * in2.y, in1.x * in2.y + in1.y * in2.x);
+    }
+}
+
diff --git a/auxiliary/fft/align1/real_to_complex.cl b/auxiliary/fft/align1/real_to_complex.cl
new file mode 100644
index 0000000..73888bc
--- /dev/null
+++ b/auxiliary/fft/align1/real_to_complex.cl
@@ -0,0 +1,11 @@
+// embedd a real-valued vector into a complex one
+__kernel void real_to_complex(__global float* in,
+                              __global float2* out,
+                              unsigned int size) {
+    for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0)) {
+        float2 val = 0;
+        val.x = in[i];
+        out[i] = val;
+    }
+}
+
diff --git a/auxiliary/fft/align1/reverse_inplace.cl b/auxiliary/fft/align1/reverse_inplace.cl
new file mode 100644
index 0000000..33c0a76
--- /dev/null
+++ b/auxiliary/fft/align1/reverse_inplace.cl
@@ -0,0 +1,11 @@
+// reverses the entries in a vector
+__kernel void reverse_inplace(__global float* vec, uint size) {
+    for(uint i = get_global_id(0); i < (size >> 1); i+=get_global_size(0)) {
+        float val1 = vec[i];
+        float val2 = vec[size - i - 1];
+
+        vec[i] = val2;
+        vec[size - i - 1] = val1;
+    }
+}
+
diff --git a/auxiliary/fft/align1/transpose.cl b/auxiliary/fft/align1/transpose.cl
new file mode 100644
index 0000000..5660fea
--- /dev/null
+++ b/auxiliary/fft/align1/transpose.cl
@@ -0,0 +1,16 @@
+// simplistic matrix transpose function
+__kernel void transpose(__global float2* input,
+                        __global float2* output,
+                        unsigned int row_num,
+                        unsigned int col_num) {
+    unsigned int size = row_num * col_num;
+    for(unsigned int i = get_global_id(0); i < size; i+= get_global_size(0)) {
+        unsigned int row = i / col_num;
+        unsigned int col = i - row*col_num;
+
+        unsigned int new_pos = col * row_num + row;
+
+        output[new_pos] = input[i];
+    }
+}
+
diff --git a/auxiliary/fft/align1/transpose_inplace.cl b/auxiliary/fft/align1/transpose_inplace.cl
new file mode 100644
index 0000000..fcbece7
--- /dev/null
+++ b/auxiliary/fft/align1/transpose_inplace.cl
@@ -0,0 +1,22 @@
+// inplace-transpose of a matrix
+__kernel void transpose_inplace(__global float2* input,
+                        unsigned int row_num,
+                        unsigned int col_num) {
+    unsigned int size = row_num * col_num;
+    for(unsigned int i = get_global_id(0); i < size; i+= get_global_size(0)) {
+        unsigned int row = i / col_num;
+        unsigned int col = i - row*col_num;
+
+        unsigned int new_pos = col * row_num + row;
+
+        //new_pos = col < row?0:1;
+        //input[i] = new_pos;
+
+        if(i < new_pos) {
+            float2 val = input[i];
+            input[i] = input[new_pos];
+            input[new_pos] = val;
+        }
+    }
+}
+
diff --git a/auxiliary/fft/align1/vandermonde_prod.cl b/auxiliary/fft/align1/vandermonde_prod.cl
new file mode 100644
index 0000000..9c2cadc
--- /dev/null
+++ b/auxiliary/fft/align1/vandermonde_prod.cl
@@ -0,0 +1,19 @@
+// computes the matrix vector product with a Vandermonde matrix
+__kernel void vandermonde_prod(__global float* vander,
+                                __global float* vector,
+                                __global float* result,
+                                uint size) {
+    for(uint i = get_global_id(0); i < size; i+= get_global_size(0)) {
+        float mul = vander[i];
+        float pwr = 1;
+        float val = 0;
+
+        for(uint j = 0; j < size; j++) {
+            val = val + pwr * vector[j];
+            pwr *= mul;
+        }
+            
+        result[i] = val;
+    }
+}
+
diff --git a/auxiliary/fft/align1/zero2.cl b/auxiliary/fft/align1/zero2.cl
new file mode 100644
index 0000000..ff8d6aa
--- /dev/null
+++ b/auxiliary/fft/align1/zero2.cl
@@ -0,0 +1,11 @@
+// Zero two complex vectors (to avoid kernel launch overhead)
+__kernel void zero2(__global float2* input1,
+                    __global float2* input2,
+                    unsigned int size) {
+    for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0)) {
+        input1[i] = 0;
+        input2[i] = 0;
+    }
+
+}
+
diff --git a/auxiliary/generate-blas3-prod-align1.cpp b/auxiliary/generate-blas3-prod-align1.cpp
index 25f3d0f..d30effa 100755
--- a/auxiliary/generate-blas3-prod-align1.cpp
+++ b/auxiliary/generate-blas3-prod-align1.cpp
@@ -52,84 +52,91 @@ void printMatrixMatrixProduct(bool row_major_A, bool row_major_B, bool row_major
   
   std::cout << "(" << std::endl;
   std::cout << "          __global const float * A," << std::endl;
-  std::cout << "          unsigned int A_rows," << std::endl;
-  std::cout << "          unsigned int A_cols," << std::endl;
+  std::cout << "          unsigned int A_row_start," << std::endl;
+  std::cout << "          unsigned int A_col_start," << std::endl;
+  std::cout << "          unsigned int A_row_size," << std::endl;   //number of elements starting from row_start!
+  std::cout << "          unsigned int A_col_size," << std::endl;
   std::cout << "          unsigned int A_internal_rows," << std::endl;
   std::cout << "          unsigned int A_internal_cols," << std::endl;
   std::cout << "          __global const float * B,  " << std::endl;
-  std::cout << "          unsigned int B_rows," << std::endl;
-  std::cout << "          unsigned int B_cols," << std::endl;
+  std::cout << "          unsigned int B_row_start," << std::endl;
+  std::cout << "          unsigned int B_col_start," << std::endl;
+  std::cout << "          unsigned int B_row_size," << std::endl;
+  std::cout << "          unsigned int B_col_size," << std::endl;
   std::cout << "          unsigned int B_internal_rows," << std::endl;
   std::cout << "          unsigned int B_internal_cols," << std::endl;
   std::cout << "          __global float * C," << std::endl;
-  std::cout << "          unsigned int C_rows," << std::endl;
-  std::cout << "          unsigned int C_cols," << std::endl;
+  std::cout << "          unsigned int C_row_start," << std::endl;
+  std::cout << "          unsigned int C_col_start," << std::endl;
+  std::cout << "          unsigned int C_row_size," << std::endl;
+  std::cout << "          unsigned int C_col_size," << std::endl;
   std::cout << "          unsigned int C_internal_rows," << std::endl;
   std::cout << "          unsigned int C_internal_cols," << std::endl;
   std::cout << "          __local float * bufA," << std::endl;
   std::cout << "          __local float * bufB) " << std::endl;
   std::cout << "{ " << std::endl;
-  std::cout << "  int block_size = get_local_size(0);" << std::endl;
-  std::cout << "  int row_block_id = get_group_id(0);" << std::endl;
-  std::cout << "  int col_block_id = get_group_id(1);" << std::endl;
-  std::cout << "  int row_thread_id = get_local_id(0);" << std::endl;
-  std::cout << "  int col_thread_id = get_local_id(1);" << std::endl;
+  std::cout << "  size_t block_size = get_local_size(0);" << std::endl;
+  std::cout << "  size_t row_block_id = get_group_id(0);" << std::endl;
+  std::cout << "  size_t col_block_id = get_group_id(1);" << std::endl;
+  std::cout << "  size_t row_thread_id = get_local_id(0);" << std::endl;
+  std::cout << "  size_t col_thread_id = get_local_id(1);" << std::endl;
+  std::cout << "  size_t row_block_id_ = get_local_id(1);" << std::endl;
   
   //traverse block row of A (taking mem layout and transpose operation into account)
   if (row_major_A && transpose_A)
   {
-    std::cout << "  int aBegin = row_block_id * block_size;" << std::endl;
-    std::cout << "  int aStep = block_size * A_internal_cols;" << std::endl;
+    std::cout << "  size_t aBegin = (row_block_id * block_size + A_col_start) + A_row_start * A_internal_cols;" << std::endl;
+    std::cout << "  size_t aStep = block_size * A_internal_cols;" << std::endl;
   }
   else if (row_major_A && !transpose_A)
   {
-    std::cout << "  int aBegin = row_block_id * block_size * A_internal_cols;" << std::endl;
-    std::cout << "  int aStep = block_size;" << std::endl;
+    std::cout << "  size_t aBegin = (row_block_id * block_size + A_row_start) * A_internal_cols + A_col_start;" << std::endl;
+    std::cout << "  size_t aStep = block_size;" << std::endl;
   }
   else if (!row_major_A && transpose_A)
   {
-    std::cout << "  int aBegin = row_block_id * block_size * A_internal_rows;" << std::endl;
-    std::cout << "  int aStep = block_size;" << std::endl;
+    std::cout << "  size_t aBegin = (row_block_id * block_size + A_col_start) * A_internal_rows + A_row_start;" << std::endl;
+    std::cout << "  size_t aStep = block_size;" << std::endl;
   }
   else if (!row_major_A && !transpose_A)
   {
-    std::cout << "  int aBegin = row_block_id * block_size;" << std::endl;
-    std::cout << "  int aStep = block_size * A_internal_rows;" << std::endl;
+    std::cout << "  size_t aBegin = (row_block_id * block_size + A_row_start) + A_col_start * A_internal_rows;" << std::endl;
+    std::cout << "  size_t aStep = block_size * A_internal_rows;" << std::endl;
   }
 
 
   if (row_major_B && transpose_B)
   {
-    std::cout << "  int bBegin = col_block_id * block_size * B_internal_cols;" << std::endl;
-    std::cout << "  int bStep = block_size;" << std::endl;
+    std::cout << "  size_t bBegin = (col_block_id * block_size + B_row_start) * B_internal_cols + B_col_start;" << std::endl;
+    std::cout << "  size_t bStep = block_size;" << std::endl;
   }
   else if (row_major_B && !transpose_B)
   {
-    std::cout << "  int bBegin = col_block_id * block_size;" << std::endl;
-    std::cout << "  int bStep = block_size * B_internal_cols;" << std::endl;
+    std::cout << "  size_t bBegin = (col_block_id * block_size + B_col_start) + B_row_start * B_internal_cols;" << std::endl;
+    std::cout << "  size_t bStep = block_size * B_internal_cols;" << std::endl;
   }
   else if (!row_major_B && transpose_B)
   {
-    std::cout << "  int bBegin = col_block_id * block_size;" << std::endl;
-    std::cout << "  int bStep = block_size * B_internal_rows;" << std::endl;
+    std::cout << "  size_t bBegin = (col_block_id * block_size + B_row_start) + B_col_start * B_internal_rows;" << std::endl;
+    std::cout << "  size_t bStep = block_size * B_internal_rows;" << std::endl;
   }
   else if (!row_major_B && !transpose_B)
   {
-    std::cout << "  int bBegin = col_block_id * block_size * B_internal_rows;" << std::endl;
-    std::cout << "  int bStep = block_size;" << std::endl;
+    std::cout << "  size_t bBegin = (col_block_id * block_size + B_col_start) * B_internal_rows + B_row_start;" << std::endl;
+    std::cout << "  size_t bStep = block_size;" << std::endl;
   }
 
 
   if (transpose_A)
   {
-    std::cout << "  int block_num = A_rows / block_size;" << std::endl;
-    std::cout << "  if (block_num * block_size != A_rows)" << std::endl;
+    std::cout << "  size_t block_num = A_row_size / block_size;" << std::endl;
+    std::cout << "  if (block_num * block_size != A_row_size)" << std::endl;
     std::cout << "    ++block_num;" << std::endl;
   }
   else
   {
-    std::cout << "  int block_num = A_cols / block_size;" << std::endl;
-    std::cout << "  if (block_num * block_size != A_cols)" << std::endl;
+    std::cout << "  size_t block_num = A_col_size / block_size;" << std::endl;
+    std::cout << "  if (block_num * block_size != A_col_size)" << std::endl;
     std::cout << "    ++block_num;" << std::endl;
   }
     
@@ -137,53 +144,80 @@ void printMatrixMatrixProduct(bool row_major_A, bool row_major_B, bool row_major
   
   //offset of the the memory access by the thread relative to the beginning of the block:
   if (row_major_A && transpose_A)
-    std::cout << "  int aOffset = row_thread_id + col_thread_id * A_internal_cols;" << std::endl;
+    std::cout << "  size_t aOffset = row_thread_id + col_thread_id * A_internal_cols;" << std::endl;
   else if (row_major_A && !transpose_A)
-    std::cout << "  int aOffset = row_thread_id * A_internal_cols + col_thread_id;" << std::endl;
+    std::cout << "  size_t aOffset = row_thread_id * A_internal_cols + col_thread_id;" << std::endl;
   else if (!row_major_A && transpose_A)
-    std::cout << "  int aOffset = row_thread_id * A_internal_rows + col_thread_id;" << std::endl;
+    std::cout << "  size_t aOffset = row_thread_id * A_internal_rows + col_thread_id;" << std::endl;
   else if (!row_major_A && !transpose_A)
-    std::cout << "  int aOffset = row_thread_id + col_thread_id * A_internal_rows;" << std::endl;
+    std::cout << "  size_t aOffset = row_thread_id + col_thread_id * A_internal_rows;" << std::endl;
 
   if (row_major_B && transpose_B)
-    std::cout << "  int bOffset = row_thread_id + col_thread_id * B_internal_cols;" << std::endl;
+    std::cout << "  size_t bOffset = row_thread_id + col_thread_id * B_internal_cols;" << std::endl;
   else if (row_major_B && !transpose_B)
-    std::cout << "  int bOffset = row_thread_id * B_internal_cols + col_thread_id;" << std::endl;
+    std::cout << "  size_t bOffset = row_thread_id * B_internal_cols + col_thread_id;" << std::endl;
   else if (!row_major_B && transpose_B)
-    std::cout << "  int bOffset = row_thread_id * B_internal_rows + col_thread_id;" << std::endl;
+    std::cout << "  size_t bOffset = row_thread_id * B_internal_rows + col_thread_id;" << std::endl;
   else if (!row_major_B && !transpose_B)
-    std::cout << "  int bOffset = row_thread_id + col_thread_id * B_internal_rows;" << std::endl;
+    std::cout << "  size_t bOffset = row_thread_id + col_thread_id * B_internal_rows;" << std::endl;
   
-  std::cout << "  for (int block = 0;" << std::endl;
+  std::cout << "  size_t row_thread_id_times_block_size = row_thread_id * block_size;" << std::endl;
+  std::cout << "  for (size_t block = 0;" << std::endl;
   std::cout << "           block < block_num;" << std::endl;
   std::cout << "           ++block)" << std::endl;
   std::cout << "  {" << std::endl;
   
   //read block from A and check for access within matrix:
-  if (transpose_A)
+/*  if (transpose_A)
     std::cout << "    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)" << std::endl;
   else 
     std::cout << "    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)" << std::endl;
   
   std::cout << "      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];" << std::endl;
   std::cout << "    else" << std::endl;
-  std::cout << "      bufA[row_thread_id * block_size + col_thread_id] = 0;" << std::endl;
+  std::cout << "      bufA[row_thread_id * block_size + col_thread_id] = 0;" << std::endl;*/
+
+  //new code:
+  if (transpose_A)
+    std::cout << "    bufA[row_thread_id_times_block_size + col_thread_id] = (block * block_size + col_thread_id < A_row_size && get_global_id(0) < A_col_size) ? A[aBegin + aOffset] : 0;" << std::endl;
+  else 
+    std::cout << "    bufA[row_thread_id_times_block_size + col_thread_id] = (block * block_size + col_thread_id < A_col_size && get_global_id(0) < A_row_size) ? A[aBegin + aOffset] : 0;" << std::endl;
+  
   
   
   //read block from B and check for access within matrix:
-  if (transpose_B)
+  /*if (transpose_B)
     std::cout << "    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )" << std::endl;
   else 
     std::cout << "    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )" << std::endl;
   
   std::cout << "      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; " << std::endl;
   std::cout << "    else" << std::endl;
-  std::cout << "      bufB[row_thread_id * block_size + col_thread_id] = 0;" << std::endl;
+  std::cout << "      bufB[row_thread_id * block_size + col_thread_id] = 0;" << std::endl;*/
+  
+  /*if (transpose_B)
+    std::cout << "    bufB[row_thread_id_times_block_size + col_thread_id] = ( (block * block_size + row_thread_id < B_col_size) && get_global_id(1) < B_row_size ) ? B[bBegin + bOffset] : 0;" << std::endl;
+  else 
+    std::cout << "    bufB[row_thread_id_times_block_size + col_thread_id] = ( (block * block_size + row_thread_id < B_row_size) && get_global_id(1) < B_col_size ) ? B[bBegin + bOffset] : 0;" << std::endl;*/
+  if (transpose_B)
+    std::cout << "    bufB[col_thread_id * block_size + row_thread_id] = ( (block * block_size + row_thread_id < B_col_size) && get_global_id(1) < B_row_size ) ? B[bBegin + bOffset] : 0;" << std::endl;
+  else 
+    std::cout << "    bufB[col_thread_id * block_size + row_thread_id] = ( (block * block_size + row_thread_id < B_row_size) && get_global_id(1) < B_col_size ) ? B[bBegin + bOffset] : 0;" << std::endl;
+  
   
   //computation of block-matrix-matrix product is the same for all cases:
   std::cout << "    barrier(CLK_LOCAL_MEM_FENCE);" << std::endl;
-  std::cout << "    for (int k = 0; k < block_size; ++k)" << std::endl;
-  std::cout << "      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];" << std::endl;
+  //std::cout << "    for (size_t k = 0; k < block_size; ++k)" << std::endl;
+  //std::cout << "      Csub += bufA[row_thread_id_times_block_size + k] * bufB[k * block_size + col_thread_id];" << std::endl;
+  //loop unrolling:
+  std::cout << "__local float * bufAptr = bufA + row_thread_id_times_block_size;" << std::endl;
+  std::cout << "__local float * bufBptr = bufB + col_thread_id * block_size;" << std::endl;
+  //std::cout << "      Csub += bufA[row_thread_id_times_block_size] * bufB[col_thread_id * block_size];" << std::endl;
+  for (size_t i=0; i<15; ++i)
+    std::cout << "      Csub += (*bufAptr) * (*bufBptr); ++bufAptr; ++bufBptr;" << std::endl;
+    //std::cout << "      Csub += bufAptr[" << i << "] * bufB[" << i << "  + col_thread_id * block_size];" << std::endl;
+    //std::cout << "      Csub += bufAptr[" << i << "] * bufB[" << i << " * block_size + col_thread_id];" << std::endl;
+    //std::cout << "      Csub += bufAptr[" << i << "] * bufB[" << i << "];" << std::endl;
   std::cout << "    barrier(CLK_LOCAL_MEM_FENCE);" << std::endl;
   std::cout << "    aBegin += aStep;" << std::endl;
   std::cout << "    bBegin += bStep;" << std::endl;
@@ -191,19 +225,19 @@ void printMatrixMatrixProduct(bool row_major_A, bool row_major_B, bool row_major
   
   
   if (transpose_A)
-    std::cout << "  if (get_global_id(0) < A_cols && ";
+    std::cout << "  if (get_global_id(0) < A_col_size && ";
   else
-    std::cout << "  if (get_global_id(0) < A_rows && ";
+    std::cout << "  if (get_global_id(0) < A_row_size && ";
   
   if (transpose_B)
-    std::cout << "get_global_id(1) < B_rows)" << std::endl;
+    std::cout << "get_global_id(1) < B_row_size)" << std::endl;
   else
-    std::cout << "get_global_id(1) < B_cols)" << std::endl;
+    std::cout << "get_global_id(1) < B_col_size)" << std::endl;
   
   if (row_major_C)
-    std::cout << "    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;" << std::endl;
+    std::cout << "    C[(get_global_id(0) + C_row_start) * C_internal_cols + get_global_id(1) + C_col_start] = Csub;" << std::endl;
   else
-    std::cout << "    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;" << std::endl;
+    std::cout << "    C[get_global_id(0) + C_row_start + (get_global_id(1) + C_col_start) * C_internal_rows] = Csub;" << std::endl;
   std::cout << "}" << std::endl;
   
 }
diff --git a/auxiliary/generate-blas3.sh b/auxiliary/generate-blas3.sh
deleted file mode 100755
index 55a49a6..0000000
--- a/auxiliary/generate-blas3.sh
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/bin/bash
-
-############### Step 1: Matrix-Matrix products #########################
-
-# all column-major:
-./generate-blas3-prod-align1 0 0 0 0 0 > matrix_prod_col_col_col/align1/prod_AA.cl
-./generate-blas3-prod-align1 0 0 0 0 1 > matrix_prod_col_col_col/align1/prod_AT.cl
-./generate-blas3-prod-align1 0 0 0 1 0 > matrix_prod_col_col_col/align1/prod_TA.cl
-./generate-blas3-prod-align1 0 0 0 1 1 > matrix_prod_col_col_col/align1/prod_TT.cl
-
-# C row-major, others column-major:
-./generate-blas3-prod-align1 0 0 1 0 0 > matrix_prod_col_col_row/align1/prod_AA.cl
-./generate-blas3-prod-align1 0 0 1 0 1 > matrix_prod_col_col_row/align1/prod_AT.cl
-./generate-blas3-prod-align1 0 0 1 1 0 > matrix_prod_col_col_row/align1/prod_TA.cl
-./generate-blas3-prod-align1 0 0 1 1 1 > matrix_prod_col_col_row/align1/prod_TT.cl
-
-# B row-major, others column-major:
-./generate-blas3-prod-align1 0 1 0 0 0 > matrix_prod_col_row_col/align1/prod_AA.cl
-./generate-blas3-prod-align1 0 1 0 0 1 > matrix_prod_col_row_col/align1/prod_AT.cl
-./generate-blas3-prod-align1 0 1 0 1 0 > matrix_prod_col_row_col/align1/prod_TA.cl
-./generate-blas3-prod-align1 0 1 0 1 1 > matrix_prod_col_row_col/align1/prod_TT.cl
-
-# A column-major, others row-major:
-./generate-blas3-prod-align1 0 1 1 0 0 > matrix_prod_col_row_row/align1/prod_AA.cl
-./generate-blas3-prod-align1 0 1 1 0 1 > matrix_prod_col_row_row/align1/prod_AT.cl
-./generate-blas3-prod-align1 0 1 1 1 0 > matrix_prod_col_row_row/align1/prod_TA.cl
-./generate-blas3-prod-align1 0 1 1 1 1 > matrix_prod_col_row_row/align1/prod_TT.cl
-
-# A row-major, others column-major:
-./generate-blas3-prod-align1 1 0 0 0 0 > matrix_prod_row_col_col/align1/prod_AA.cl
-./generate-blas3-prod-align1 1 0 0 0 1 > matrix_prod_row_col_col/align1/prod_AT.cl
-./generate-blas3-prod-align1 1 0 0 1 0 > matrix_prod_row_col_col/align1/prod_TA.cl
-./generate-blas3-prod-align1 1 0 0 1 1 > matrix_prod_row_col_col/align1/prod_TT.cl
-
-# A row-major, B column-major, C row-major:
-./generate-blas3-prod-align1 1 0 1 0 0 > matrix_prod_row_col_row/align1/prod_AA.cl
-./generate-blas3-prod-align1 1 0 1 0 1 > matrix_prod_row_col_row/align1/prod_AT.cl
-./generate-blas3-prod-align1 1 0 1 1 0 > matrix_prod_row_col_row/align1/prod_TA.cl
-./generate-blas3-prod-align1 1 0 1 1 1 > matrix_prod_row_col_row/align1/prod_TT.cl
-
-# A, B row-major, C column-major:
-./generate-blas3-prod-align1 1 1 0 0 0 > matrix_prod_row_row_col/align1/prod_AA.cl
-./generate-blas3-prod-align1 1 1 0 0 1 > matrix_prod_row_row_col/align1/prod_AT.cl
-./generate-blas3-prod-align1 1 1 0 1 0 > matrix_prod_row_row_col/align1/prod_TA.cl
-./generate-blas3-prod-align1 1 1 0 1 1 > matrix_prod_row_row_col/align1/prod_TT.cl
-
-# all row-major
-./generate-blas3-prod-align1 1 1 1 0 0 > matrix_prod_row_row_row/align1/prod_AA.cl
-./generate-blas3-prod-align1 1 1 1 0 1 > matrix_prod_row_row_row/align1/prod_AT.cl
-./generate-blas3-prod-align1 1 1 1 1 0 > matrix_prod_row_row_row/align1/prod_TA.cl
-./generate-blas3-prod-align1 1 1 1 1 1 > matrix_prod_row_row_row/align1/prod_TT.cl
-
-
-############### Step 2: Matrix-Matrix triangular solver #########################
-
-# all col-major
-./generate-blas3-solve-align1 0 0 0 0 0 0 > matrix_solve_col_col/align1/lower_solve.cl
-./generate-blas3-solve-align1 0 0 0 0 0 1 > matrix_solve_col_col/align1/unit_lower_solve.cl
-./generate-blas3-solve-align1 0 0 0 0 1 0 > matrix_solve_col_col/align1/upper_solve.cl
-./generate-blas3-solve-align1 0 0 0 0 1 1 > matrix_solve_col_col/align1/unit_upper_solve.cl
-./generate-blas3-solve-align1 0 0 0 1 0 0 > matrix_solve_col_col/align1/lower_trans_solve.cl
-./generate-blas3-solve-align1 0 0 0 1 0 1 > matrix_solve_col_col/align1/unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 0 0 0 1 1 0 > matrix_solve_col_col/align1/upper_trans_solve.cl
-./generate-blas3-solve-align1 0 0 0 1 1 1 > matrix_solve_col_col/align1/unit_upper_trans_solve.cl
-./generate-blas3-solve-align1 0 0 1 0 0 0 > matrix_solve_col_col/align1/trans_lower_solve.cl
-./generate-blas3-solve-align1 0 0 1 0 0 1 > matrix_solve_col_col/align1/trans_unit_lower_solve.cl
-./generate-blas3-solve-align1 0 0 1 0 1 0 > matrix_solve_col_col/align1/trans_upper_solve.cl
-./generate-blas3-solve-align1 0 0 1 0 1 1 > matrix_solve_col_col/align1/trans_unit_upper_solve.cl
-./generate-blas3-solve-align1 0 0 1 1 0 0 > matrix_solve_col_col/align1/trans_lower_trans_solve.cl
-./generate-blas3-solve-align1 0 0 1 1 0 1 > matrix_solve_col_col/align1/trans_unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 0 0 1 1 1 0 > matrix_solve_col_col/align1/trans_upper_trans_solve.cl
-./generate-blas3-solve-align1 0 0 1 1 1 1 > matrix_solve_col_col/align1/trans_unit_upper_trans_solve.cl
-
-# A col-major, B row_major
-./generate-blas3-solve-align1 0 1 0 0 0 0 > matrix_solve_col_row/align1/lower_solve.cl
-./generate-blas3-solve-align1 0 1 0 0 0 1 > matrix_solve_col_row/align1/unit_lower_solve.cl
-./generate-blas3-solve-align1 0 1 0 0 1 0 > matrix_solve_col_row/align1/upper_solve.cl
-./generate-blas3-solve-align1 0 1 0 0 1 1 > matrix_solve_col_row/align1/unit_upper_solve.cl
-./generate-blas3-solve-align1 0 1 0 1 0 0 > matrix_solve_col_row/align1/lower_trans_solve.cl
-./generate-blas3-solve-align1 0 1 0 1 0 1 > matrix_solve_col_row/align1/unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 0 1 0 1 1 0 > matrix_solve_col_row/align1/upper_trans_solve.cl
-./generate-blas3-solve-align1 0 1 0 1 1 1 > matrix_solve_col_row/align1/unit_upper_trans_solve.cl
-./generate-blas3-solve-align1 0 1 1 0 0 0 > matrix_solve_col_row/align1/trans_lower_solve.cl
-./generate-blas3-solve-align1 0 1 1 0 0 1 > matrix_solve_col_row/align1/trans_unit_lower_solve.cl
-./generate-blas3-solve-align1 0 1 1 0 1 0 > matrix_solve_col_row/align1/trans_upper_solve.cl
-./generate-blas3-solve-align1 0 1 1 0 1 1 > matrix_solve_col_row/align1/trans_unit_upper_solve.cl
-./generate-blas3-solve-align1 0 1 1 1 0 0 > matrix_solve_col_row/align1/trans_lower_trans_solve.cl
-./generate-blas3-solve-align1 0 1 1 1 0 1 > matrix_solve_col_row/align1/trans_unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 0 1 1 1 1 0 > matrix_solve_col_row/align1/trans_upper_trans_solve.cl
-./generate-blas3-solve-align1 0 1 1 1 1 1 > matrix_solve_col_row/align1/trans_unit_upper_trans_solve.cl
-
-# A row-major, B col-major
-./generate-blas3-solve-align1 1 0 0 0 0 0 > matrix_solve_row_col/align1/lower_solve.cl
-./generate-blas3-solve-align1 1 0 0 0 0 1 > matrix_solve_row_col/align1/unit_lower_solve.cl
-./generate-blas3-solve-align1 1 0 0 0 1 0 > matrix_solve_row_col/align1/upper_solve.cl
-./generate-blas3-solve-align1 1 0 0 0 1 1 > matrix_solve_row_col/align1/unit_upper_solve.cl
-./generate-blas3-solve-align1 1 0 0 1 0 0 > matrix_solve_row_col/align1/lower_trans_solve.cl
-./generate-blas3-solve-align1 1 0 0 1 0 1 > matrix_solve_row_col/align1/unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 1 0 0 1 1 0 > matrix_solve_row_col/align1/upper_trans_solve.cl
-./generate-blas3-solve-align1 1 0 0 1 1 1 > matrix_solve_row_col/align1/unit_upper_trans_solve.cl
-./generate-blas3-solve-align1 1 0 1 0 0 0 > matrix_solve_row_col/align1/trans_lower_solve.cl
-./generate-blas3-solve-align1 1 0 1 0 0 1 > matrix_solve_row_col/align1/trans_unit_lower_solve.cl
-./generate-blas3-solve-align1 1 0 1 0 1 0 > matrix_solve_row_col/align1/trans_upper_solve.cl
-./generate-blas3-solve-align1 1 0 1 0 1 1 > matrix_solve_row_col/align1/trans_unit_upper_solve.cl
-./generate-blas3-solve-align1 1 0 1 1 0 0 > matrix_solve_row_col/align1/trans_lower_trans_solve.cl
-./generate-blas3-solve-align1 1 0 1 1 0 1 > matrix_solve_row_col/align1/trans_unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 1 0 1 1 1 0 > matrix_solve_row_col/align1/trans_upper_trans_solve.cl
-./generate-blas3-solve-align1 1 0 1 1 1 1 > matrix_solve_row_col/align1/trans_unit_upper_trans_solve.cl
-
-# all row-major
-./generate-blas3-solve-align1 1 1 0 0 0 0 > matrix_solve_row_row/align1/lower_solve.cl
-./generate-blas3-solve-align1 1 1 0 0 0 1 > matrix_solve_row_row/align1/unit_lower_solve.cl
-./generate-blas3-solve-align1 1 1 0 0 1 0 > matrix_solve_row_row/align1/upper_solve.cl
-./generate-blas3-solve-align1 1 1 0 0 1 1 > matrix_solve_row_row/align1/unit_upper_solve.cl
-./generate-blas3-solve-align1 1 1 0 1 0 0 > matrix_solve_row_row/align1/lower_trans_solve.cl
-./generate-blas3-solve-align1 1 1 0 1 0 1 > matrix_solve_row_row/align1/unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 1 1 0 1 1 0 > matrix_solve_row_row/align1/upper_trans_solve.cl
-./generate-blas3-solve-align1 1 1 0 1 1 1 > matrix_solve_row_row/align1/unit_upper_trans_solve.cl
-./generate-blas3-solve-align1 1 1 1 0 0 0 > matrix_solve_row_row/align1/trans_lower_solve.cl
-./generate-blas3-solve-align1 1 1 1 0 0 1 > matrix_solve_row_row/align1/trans_unit_lower_solve.cl
-./generate-blas3-solve-align1 1 1 1 0 1 0 > matrix_solve_row_row/align1/trans_upper_solve.cl
-./generate-blas3-solve-align1 1 1 1 0 1 1 > matrix_solve_row_row/align1/trans_unit_upper_solve.cl
-./generate-blas3-solve-align1 1 1 1 1 0 0 > matrix_solve_row_row/align1/trans_lower_trans_solve.cl
-./generate-blas3-solve-align1 1 1 1 1 0 1 > matrix_solve_row_row/align1/trans_unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 1 1 1 1 1 0 > matrix_solve_row_row/align1/trans_upper_trans_solve.cl
-./generate-blas3-solve-align1 1 1 1 1 1 1 > matrix_solve_row_row/align1/trans_unit_upper_trans_solve.cl
-
diff --git a/auxiliary/matrix_col/align1/fft_direct.cl b/auxiliary/matrix_col/align1/fft_direct.cl
new file mode 100644
index 0000000..58818ef
--- /dev/null
+++ b/auxiliary/matrix_col/align1/fft_direct.cl
@@ -0,0 +1,29 @@
+// Direct FFT computation (quadratic complexity - use for reference only)
+__kernel void fft_direct(__global float2* input,
+                         __global float2* output,
+                         unsigned int size,
+                         unsigned int stride,
+                         unsigned int batch_num,
+                         float sign) {
+                         
+    const float NUM_PI = 3.14159265358979323846;
+    
+    for(unsigned int batch_id = 0; batch_id < batch_num; batch_id++) {
+        for(unsigned int k = get_global_id(0); k < size; k += get_global_size(0)) {
+            float2 f = 0.0f;
+
+            for(unsigned int n = 0; n < size; n++) {
+                float2 in = input[n * stride + batch_id]; //input index here
+
+                float sn, cs;
+                float arg = sign * 2 * NUM_PI * k / size * n;
+                sn = sincos(arg, &cs);
+
+                float2 ex = (float2)(cs, sn);
+                f = f + (float2)(in.x * ex.x - in.y * ex.y, in.x * ex.y + in.y * ex.x);
+            }
+
+            output[k * stride + batch_id] = f;// output index here
+        }
+    }
+}
diff --git a/auxiliary/matrix_col/align1/fft_radix2.cl b/auxiliary/matrix_col/align1/fft_radix2.cl
new file mode 100644
index 0000000..998cabc
--- /dev/null
+++ b/auxiliary/matrix_col/align1/fft_radix2.cl
@@ -0,0 +1,39 @@
+__kernel void fft_radix2(__global float2* input,
+                         unsigned int s,
+                         unsigned int bit_size,
+                         unsigned int size,
+                         unsigned int stride,
+                         unsigned int batch_num,
+                         float sign) {
+
+    unsigned int ss = 1 << s;
+    unsigned int half_size = size >> 1;
+
+    float cs, sn;
+    const float NUM_PI = 3.14159265358979323846;
+
+    unsigned int glb_id = get_global_id(0);
+    unsigned int glb_sz = get_global_size(0);
+	
+    for(unsigned int batch_id = 0; batch_id < batch_num; batch_id++) {
+        for(unsigned int tid = glb_id; tid < half_size; tid += glb_sz) {
+            unsigned int group = (tid & (ss - 1));
+            unsigned int pos = ((tid >> s) << (s + 1)) + group;
+
+            unsigned int offset = pos * stride + batch_id;
+            float2 in1 = input[offset];//index
+            float2 in2 = input[offset + ss * stride];//index
+
+            float arg = group * sign * NUM_PI / ss;
+
+            sn = sincos(arg, &cs);
+            float2 ex = (float2)(cs, sn);
+
+            float2 tmp = (float2)(in2.x * ex.x - in2.y * ex.y, in2.x * ex.y + in2.y * ex.x);
+
+            input[offset + ss * stride] = in1 - tmp;//index
+            input[offset] = in1 + tmp;//index
+        }
+    }
+}
+
diff --git a/auxiliary/matrix_col/align1/fft_radix2_local.cl b/auxiliary/matrix_col/align1/fft_radix2_local.cl
new file mode 100644
index 0000000..c6e2f5d
--- /dev/null
+++ b/auxiliary/matrix_col/align1/fft_radix2_local.cl
@@ -0,0 +1,74 @@
+
+unsigned int get_reorder_num(unsigned int v, unsigned int bit_size) {
+    v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1);
+    v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2);
+    v = ((v >> 4) & 0x0F0F0F0F) | ((v & 0x0F0F0F0F) << 4);
+    v = ((v >> 8) & 0x00FF00FF) | ((v & 0x00FF00FF) << 8);
+    v = (v >> 16) | (v << 16);
+
+    v = v >> (32 - bit_size);
+
+    return v;
+}
+
+__kernel void fft_radix2_local(__global float2* input,
+                                __local float2* lcl_input,
+                                unsigned int bit_size,
+                                unsigned int size,
+                                unsigned int stride,
+                                unsigned int batch_num,
+                                float sign) {
+
+    unsigned int grp_id = get_group_id(0);
+    unsigned int grp_num = get_num_groups(0);
+
+    unsigned int lcl_sz = get_local_size(0);
+    unsigned int lcl_id = get_local_id(0);
+    const float NUM_PI = 3.14159265358979323846;
+
+    for(unsigned int batch_id = grp_id; batch_id < batch_num; batch_id += grp_num) {
+        //unsigned int base_offset = stride * batch_id;
+        //copy chunk of global memory to local
+
+        for(unsigned int p = lcl_id; p < size; p += lcl_sz) {
+            unsigned int v = get_reorder_num(p, bit_size);
+            lcl_input[v] = input[p * stride + batch_id];//index
+        }
+
+        barrier(CLK_LOCAL_MEM_FENCE);
+
+        //performs Cooley-Tukey FFT on local array
+        for(unsigned int s = 0; s < bit_size; s++) {
+            unsigned int ss = 1 << s;
+
+            float cs, sn;
+
+            for(unsigned int tid = lcl_id; tid < size; tid += lcl_sz) {
+                unsigned int group = (tid & (ss - 1));
+                unsigned int pos = ((tid >> s) << (s + 1)) + group;
+
+                float2 in1 = lcl_input[pos];
+                float2 in2 = lcl_input[pos + ss];
+
+                float arg = group * sign * NUM_PI / ss;
+
+                sn = sincos(arg, &cs);
+                float2 ex = (float2)(cs, sn);
+
+                float2 tmp = (float2)(in2.x * ex.x - in2.y * ex.y, in2.x * ex.y + in2.y * ex.x);
+
+                lcl_input[pos + ss] = in1 - tmp;
+                lcl_input[pos] = in1 + tmp;
+            }
+
+            barrier(CLK_LOCAL_MEM_FENCE);
+        }
+
+        //copy local array back to global memory
+        for(unsigned int p = lcl_id; p < size; p += lcl_sz) {
+            input[p * stride + batch_id] = lcl_input[p];//index
+        }
+
+    }
+}
+
diff --git a/auxiliary/matrix_col/align1/fft_reorder.cl b/auxiliary/matrix_col/align1/fft_reorder.cl
new file mode 100644
index 0000000..118e6f4
--- /dev/null
+++ b/auxiliary/matrix_col/align1/fft_reorder.cl
@@ -0,0 +1,38 @@
+/*
+* Performs reordering of input data in bit-reversal order
+* Probably it's better to do in host side,
+*/
+
+unsigned int get_reorder_num_2(unsigned int v, unsigned int bit_size) {
+    v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1);
+    v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2);
+    v = ((v >> 4) & 0x0F0F0F0F) | ((v & 0x0F0F0F0F) << 4);
+    v = ((v >> 8) & 0x00FF00FF) | ((v & 0x00FF00FF) << 8);
+    v = (v >> 16) | (v << 16);
+
+    v = v >> (32 - bit_size);
+
+    return v;
+}
+
+__kernel void fft_reorder(__global float2* input,
+                          unsigned int bit_size,
+                          unsigned int size,
+                          unsigned int stride,
+                          int batch_num) {
+    unsigned int glb_id = get_global_id(0);
+    unsigned int glb_sz = get_global_size(0);
+	
+    for(unsigned int batch_id = 0; batch_id < batch_num; batch_id++) {
+        for(unsigned int i = glb_id; i < size; i += glb_sz) {
+            unsigned int v = get_reorder_num_2(i, bit_size);
+
+            if(i < v) {
+                float2 tmp = input[i * stride + batch_id]; // index
+                input[i * stride + batch_id] = input[v * stride + batch_id]; //index
+                input[v * stride + batch_id] = tmp; //index
+            }
+        }
+    }
+}
+
diff --git a/auxiliary/matrix_col/align1/inplace_add.cl b/auxiliary/matrix_col/align1/inplace_add.cl
index 73cd0e4..a7c4fca 100644
--- a/auxiliary/matrix_col/align1/inplace_add.cl
+++ b/auxiliary/matrix_col/align1/inplace_add.cl
@@ -1,10 +1,25 @@
 
 __kernel void inplace_add(
-          __global float * vec1,
-          __global const float * vec2,
-          unsigned int size) 
+          __global float * A,
+          unsigned int A_row_start,
+          unsigned int A_col_start,
+          unsigned int A_row_size,
+          unsigned int A_col_size,
+          unsigned int A_internal_rows,
+          unsigned int A_internal_cols,
+          __global const float * B,  
+          unsigned int B_row_start,
+          unsigned int B_col_start,
+          unsigned int B_row_size,
+          unsigned int B_col_size,
+          unsigned int B_internal_rows,
+          unsigned int B_internal_cols)
 { 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec1[i] += vec2[i];
+  if (   get_global_id(0) < A_row_size
+      && get_global_id(1) < A_col_size
+     )
+    A[  (get_global_id(0) + A_row_start)
+      + (get_global_id(1) + A_col_start) * A_internal_rows] 
+      += B[  (get_global_id(0) + B_row_start)
+           + (get_global_id(1) + B_col_start) * B_internal_rows];
 }
-
diff --git a/auxiliary/matrix_prod_col_col_col/align1/prod_AA.cl b/auxiliary/matrix_prod_col_col_col/align1/prod_AA.cl
deleted file mode 100644
index c52429e..0000000
--- a/auxiliary/matrix_prod_col_col_col/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...col_major, A...col_major, B...col_major
-__kernel void prod_AA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_rows;
-  int bBegin = col_block_id * block_size * B_internal_rows;
-  int bStep = block_size;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_rows;
-  int bOffset = row_thread_id + col_thread_id * B_internal_rows;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_col/align1/prod_AT.cl b/auxiliary/matrix_prod_col_col_col/align1/prod_AT.cl
deleted file mode 100644
index 2f71bcf..0000000
--- a/auxiliary/matrix_prod_col_col_col/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...col_major, A...col_major, B...col_major
-__kernel void prod_AT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_rows;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_rows;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_rows;
-  int bOffset = row_thread_id * B_internal_rows + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_col/align1/prod_TA.cl b/auxiliary/matrix_prod_col_col_col/align1/prod_TA.cl
deleted file mode 100644
index c66dc29..0000000
--- a/auxiliary/matrix_prod_col_col_col/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...col_major, A...col_major, B...col_major
-__kernel void prod_TA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_rows;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size * B_internal_rows;
-  int bStep = block_size;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_rows + col_thread_id;
-  int bOffset = row_thread_id + col_thread_id * B_internal_rows;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_col/align1/prod_TT.cl b/auxiliary/matrix_prod_col_col_col/align1/prod_TT.cl
deleted file mode 100644
index 76ab0d8..0000000
--- a/auxiliary/matrix_prod_col_col_col/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...col_major, A...col_major, B...col_major
-__kernel void prod_TT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_rows;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_rows;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_rows + col_thread_id;
-  int bOffset = row_thread_id * B_internal_rows + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_row/align1/prod_AA.cl b/auxiliary/matrix_prod_col_col_row/align1/prod_AA.cl
deleted file mode 100644
index 6003f3c..0000000
--- a/auxiliary/matrix_prod_col_col_row/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...row_major, A...col_major, B...col_major
-__kernel void prod_AA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_rows;
-  int bBegin = col_block_id * block_size * B_internal_rows;
-  int bStep = block_size;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_rows;
-  int bOffset = row_thread_id + col_thread_id * B_internal_rows;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_row/align1/prod_AT.cl b/auxiliary/matrix_prod_col_col_row/align1/prod_AT.cl
deleted file mode 100644
index a376700..0000000
--- a/auxiliary/matrix_prod_col_col_row/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...row_major, A...col_major, B...col_major
-__kernel void prod_AT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_rows;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_rows;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_rows;
-  int bOffset = row_thread_id * B_internal_rows + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_row/align1/prod_TA.cl b/auxiliary/matrix_prod_col_col_row/align1/prod_TA.cl
deleted file mode 100644
index 7cfb625..0000000
--- a/auxiliary/matrix_prod_col_col_row/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...row_major, A...col_major, B...col_major
-__kernel void prod_TA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_rows;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size * B_internal_rows;
-  int bStep = block_size;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_rows + col_thread_id;
-  int bOffset = row_thread_id + col_thread_id * B_internal_rows;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_row/align1/prod_TT.cl b/auxiliary/matrix_prod_col_col_row/align1/prod_TT.cl
deleted file mode 100644
index 852303a..0000000
--- a/auxiliary/matrix_prod_col_col_row/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...row_major, A...col_major, B...col_major
-__kernel void prod_TT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_rows;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_rows;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_rows + col_thread_id;
-  int bOffset = row_thread_id * B_internal_rows + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_col/align1/prod_AA.cl b/auxiliary/matrix_prod_col_row_col/align1/prod_AA.cl
deleted file mode 100644
index 90b1ae6..0000000
--- a/auxiliary/matrix_prod_col_row_col/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...col_major, A...col_major, B...row_major
-__kernel void prod_AA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_rows;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_cols;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_rows;
-  int bOffset = row_thread_id * B_internal_cols + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_col/align1/prod_AT.cl b/auxiliary/matrix_prod_col_row_col/align1/prod_AT.cl
deleted file mode 100644
index 703d096..0000000
--- a/auxiliary/matrix_prod_col_row_col/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...col_major, A...col_major, B...row_major
-__kernel void prod_AT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_rows;
-  int bBegin = col_block_id * block_size * B_internal_cols;
-  int bStep = block_size;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_rows;
-  int bOffset = row_thread_id + col_thread_id * B_internal_cols;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_col/align1/prod_TA.cl b/auxiliary/matrix_prod_col_row_col/align1/prod_TA.cl
deleted file mode 100644
index f10deb6..0000000
--- a/auxiliary/matrix_prod_col_row_col/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...col_major, A...col_major, B...row_major
-__kernel void prod_TA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_rows;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_cols;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_rows + col_thread_id;
-  int bOffset = row_thread_id * B_internal_cols + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_col/align1/prod_TT.cl b/auxiliary/matrix_prod_col_row_col/align1/prod_TT.cl
deleted file mode 100644
index 3be31e1..0000000
--- a/auxiliary/matrix_prod_col_row_col/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...col_major, A...col_major, B...row_major
-__kernel void prod_TT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_rows;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size * B_internal_cols;
-  int bStep = block_size;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_rows + col_thread_id;
-  int bOffset = row_thread_id + col_thread_id * B_internal_cols;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_row/align1/prod_AA.cl b/auxiliary/matrix_prod_col_row_row/align1/prod_AA.cl
deleted file mode 100644
index fc8ce0b..0000000
--- a/auxiliary/matrix_prod_col_row_row/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...row_major, A...col_major, B...row_major
-__kernel void prod_AA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_rows;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_cols;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_rows;
-  int bOffset = row_thread_id * B_internal_cols + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_row/align1/prod_AT.cl b/auxiliary/matrix_prod_col_row_row/align1/prod_AT.cl
deleted file mode 100644
index 3e41eca..0000000
--- a/auxiliary/matrix_prod_col_row_row/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...row_major, A...col_major, B...row_major
-__kernel void prod_AT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_rows;
-  int bBegin = col_block_id * block_size * B_internal_cols;
-  int bStep = block_size;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_rows;
-  int bOffset = row_thread_id + col_thread_id * B_internal_cols;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_row/align1/prod_TA.cl b/auxiliary/matrix_prod_col_row_row/align1/prod_TA.cl
deleted file mode 100644
index 69365a1..0000000
--- a/auxiliary/matrix_prod_col_row_row/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...row_major, A...col_major, B...row_major
-__kernel void prod_TA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_rows;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_cols;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_rows + col_thread_id;
-  int bOffset = row_thread_id * B_internal_cols + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_row/align1/prod_TT.cl b/auxiliary/matrix_prod_col_row_row/align1/prod_TT.cl
deleted file mode 100644
index 241d2c3..0000000
--- a/auxiliary/matrix_prod_col_row_row/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...row_major, A...col_major, B...row_major
-__kernel void prod_TT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_rows;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size * B_internal_cols;
-  int bStep = block_size;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_rows + col_thread_id;
-  int bOffset = row_thread_id + col_thread_id * B_internal_cols;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_col/align1/prod_AA.cl b/auxiliary/matrix_prod_row_col_col/align1/prod_AA.cl
deleted file mode 100644
index 13b928c..0000000
--- a/auxiliary/matrix_prod_row_col_col/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...col_major, A...row_major, B...col_major
-__kernel void prod_AA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_cols;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size * B_internal_rows;
-  int bStep = block_size;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_cols + col_thread_id;
-  int bOffset = row_thread_id + col_thread_id * B_internal_rows;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_col/align1/prod_AT.cl b/auxiliary/matrix_prod_row_col_col/align1/prod_AT.cl
deleted file mode 100644
index 32afd67..0000000
--- a/auxiliary/matrix_prod_row_col_col/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...col_major, A...row_major, B...col_major
-__kernel void prod_AT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_cols;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_rows;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_cols + col_thread_id;
-  int bOffset = row_thread_id * B_internal_rows + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_col/align1/prod_TA.cl b/auxiliary/matrix_prod_row_col_col/align1/prod_TA.cl
deleted file mode 100644
index 14dc49e..0000000
--- a/auxiliary/matrix_prod_row_col_col/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...col_major, A...row_major, B...col_major
-__kernel void prod_TA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_cols;
-  int bBegin = col_block_id * block_size * B_internal_rows;
-  int bStep = block_size;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_cols;
-  int bOffset = row_thread_id + col_thread_id * B_internal_rows;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_col/align1/prod_TT.cl b/auxiliary/matrix_prod_row_col_col/align1/prod_TT.cl
deleted file mode 100644
index 7ab7cd5..0000000
--- a/auxiliary/matrix_prod_row_col_col/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...col_major, A...row_major, B...col_major
-__kernel void prod_TT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_cols;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_rows;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_cols;
-  int bOffset = row_thread_id * B_internal_rows + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_row/align1/prod_AA.cl b/auxiliary/matrix_prod_row_col_row/align1/prod_AA.cl
deleted file mode 100644
index 69b4edf..0000000
--- a/auxiliary/matrix_prod_row_col_row/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...row_major, A...row_major, B...col_major
-__kernel void prod_AA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_cols;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size * B_internal_rows;
-  int bStep = block_size;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_cols + col_thread_id;
-  int bOffset = row_thread_id + col_thread_id * B_internal_rows;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_row/align1/prod_AA.cl_special b/auxiliary/matrix_prod_row_col_row/align1/prod_AA.cl_special
deleted file mode 100644
index f249494..0000000
--- a/auxiliary/matrix_prod_row_col_row/align1/prod_AA.cl_special
+++ /dev/null
@@ -1,86 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...row_major, A...row_major, B...col_major
-__kernel void prod_AA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = 2 * get_local_size(0);
-  int aBegin = get_group_id(0) * block_size * A_internal_cols;
-  int bBegin = get_group_id(1) * block_size * B_internal_rows;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-    
-  float2 A1 = 1.0f;  
-  float2 A2 = 1.0f;  
-  float2 B1;  
-  float2 B2;
-    
-  float Csub11 = 0;
-  float Csub12 = 0;
-  float Csub21 = 0;
-  float Csub22 = 0;
-  
-  int aOffset1 =  2*get_local_id(0)      * A_internal_cols + 2*get_local_id(1);
-  int aOffset2 = (2*get_local_id(0) + 1) * A_internal_cols + 2*get_local_id(1);
-  int bOffset1 = 2*get_local_id(0) +  2*get_local_id(1)    * B_internal_rows;
-  int bOffset2 = 2*get_local_id(0) + (2*get_local_id(1)+1) * B_internal_rows;
-  
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    bufA[(2*get_local_id(0))   * block_size + 2*get_local_id(1)]     = A[aBegin + aOffset1];
-    bufA[(2*get_local_id(0))   * block_size + 2*get_local_id(1) + 1] = A[aBegin + aOffset1 + 1];
-    bufA[(2*get_local_id(0)+1) * block_size + 2*get_local_id(1)]     = A[aBegin + aOffset2];
-    bufA[(2*get_local_id(0)+1) * block_size + 2*get_local_id(1) + 1] = A[aBegin + aOffset2 + 1];
-    
-    
-    bufB[(2*get_local_id(1))   * block_size + 2*get_local_id(0)]     = B[bBegin + bOffset1];
-    bufB[(2*get_local_id(1))   * block_size + 2*get_local_id(0) + 1] = B[bBegin + bOffset1 + 1];
-    bufB[(2*get_local_id(1)+1) * block_size + 2*get_local_id(0)]     = B[bBegin + bOffset2];
-    bufB[(2*get_local_id(1)+1) * block_size + 2*get_local_id(0) + 1] = B[bBegin + bOffset2 + 1];
-    
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; k+=2)
-    {
-      A1 = *( (__local float2 *)(bufA +  2*get_local_id(0)      * block_size + k) );
-      A2 = *( (__local float2 *)(bufA + (2*get_local_id(0) + 1) * block_size + k) );
-      B1 = *( (__local float2 *)(bufB +  2*get_local_id(1)      * block_size + k) );
-      B2 = *( (__local float2 *)(bufB + (2*get_local_id(1) + 1) * block_size + k) );
-      
-      Csub11 += A1.x * B1.x;
-      Csub11 += A1.y * B1.y; //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-      Csub12 += A1.x * B2.x; //dot(A1, B2); //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-      Csub12 += A1.y * B2.y; //dot(A1, B2); //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-      Csub21 += A2.x * B1.x; //dot(A2, B1); //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-      Csub21 += A2.y * B1.y; //dot(A2, B1); //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-      Csub22 += A2.x * B2.x; //dot(A2, B2); //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-      Csub22 += A2.y * B2.y; //dot(A2, B2); //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    }
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += block_size;
-    bBegin += block_size;
-  }
-  
-  C[ get_global_id(0)      * C_internal_cols + get_global_id(1)]     = Csub11;
-  C[ get_global_id(0)      * C_internal_cols + get_global_id(1) + 1] = Csub12;
-  C[(get_global_id(0) + 1) * C_internal_cols + get_global_id(1)]     = Csub21;
-  C[(get_global_id(0) + 1) * C_internal_cols + get_global_id(1) + 1] = Csub22;
-}
diff --git a/auxiliary/matrix_prod_row_col_row/align1/prod_AT.cl b/auxiliary/matrix_prod_row_col_row/align1/prod_AT.cl
deleted file mode 100644
index ecc92aa..0000000
--- a/auxiliary/matrix_prod_row_col_row/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...row_major, A...row_major, B...col_major
-__kernel void prod_AT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_cols;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_rows;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_cols + col_thread_id;
-  int bOffset = row_thread_id * B_internal_rows + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_row/align1/prod_TA.cl b/auxiliary/matrix_prod_row_col_row/align1/prod_TA.cl
deleted file mode 100644
index 31a0a77..0000000
--- a/auxiliary/matrix_prod_row_col_row/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...row_major, A...row_major, B...col_major
-__kernel void prod_TA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_cols;
-  int bBegin = col_block_id * block_size * B_internal_rows;
-  int bStep = block_size;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_cols;
-  int bOffset = row_thread_id + col_thread_id * B_internal_rows;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_row/align1/prod_TT.cl b/auxiliary/matrix_prod_row_col_row/align1/prod_TT.cl
deleted file mode 100644
index 85f8bc3..0000000
--- a/auxiliary/matrix_prod_row_col_row/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...row_major, A...row_major, B...col_major
-__kernel void prod_TT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_cols;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_rows;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_cols;
-  int bOffset = row_thread_id * B_internal_rows + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_col/align1/prod_AA.cl b/auxiliary/matrix_prod_row_row_col/align1/prod_AA.cl
deleted file mode 100644
index ee96966..0000000
--- a/auxiliary/matrix_prod_row_row_col/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...col_major, A...row_major, B...row_major
-__kernel void prod_AA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_cols;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_cols;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_cols + col_thread_id;
-  int bOffset = row_thread_id * B_internal_cols + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_col/align1/prod_AT.cl b/auxiliary/matrix_prod_row_row_col/align1/prod_AT.cl
deleted file mode 100644
index 635a57e..0000000
--- a/auxiliary/matrix_prod_row_row_col/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...col_major, A...row_major, B...row_major
-__kernel void prod_AT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_cols;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size * B_internal_cols;
-  int bStep = block_size;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_cols + col_thread_id;
-  int bOffset = row_thread_id + col_thread_id * B_internal_cols;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_col/align1/prod_TA.cl b/auxiliary/matrix_prod_row_row_col/align1/prod_TA.cl
deleted file mode 100644
index 8406cf4..0000000
--- a/auxiliary/matrix_prod_row_row_col/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...col_major, A...row_major, B...row_major
-__kernel void prod_TA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_cols;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_cols;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_cols;
-  int bOffset = row_thread_id * B_internal_cols + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_col/align1/prod_TT.cl b/auxiliary/matrix_prod_row_row_col/align1/prod_TT.cl
deleted file mode 100644
index 8fe4c85..0000000
--- a/auxiliary/matrix_prod_row_row_col/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...col_major, A...row_major, B...row_major
-__kernel void prod_TT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_cols;
-  int bBegin = col_block_id * block_size * B_internal_cols;
-  int bStep = block_size;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_cols;
-  int bOffset = row_thread_id + col_thread_id * B_internal_cols;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
-    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_row/align1/prod_AA.cl b/auxiliary/matrix_prod_row_row_row/align1/prod_AA.cl
deleted file mode 100644
index 229d374..0000000
--- a/auxiliary/matrix_prod_row_row_row/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...row_major, A...row_major, B...row_major
-__kernel void prod_AA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_cols;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_cols;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_cols + col_thread_id;
-  int bOffset = row_thread_id * B_internal_cols + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_row/align1/prod_AT.cl b/auxiliary/matrix_prod_row_row_row/align1/prod_AT.cl
deleted file mode 100644
index 8790b3f..0000000
--- a/auxiliary/matrix_prod_row_row_row/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...row_major, A...row_major, B...row_major
-__kernel void prod_AT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size * A_internal_cols;
-  int aStep = block_size;
-  int bBegin = col_block_id * block_size * B_internal_cols;
-  int bStep = block_size;
-  int block_num = A_cols / block_size;
-  if (block_num * block_size != A_cols)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id * A_internal_cols + col_thread_id;
-  int bOffset = row_thread_id + col_thread_id * B_internal_cols;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_row/align1/prod_TA.cl b/auxiliary/matrix_prod_row_row_row/align1/prod_TA.cl
deleted file mode 100644
index cb4c529..0000000
--- a/auxiliary/matrix_prod_row_row_row/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...row_major, A...row_major, B...row_major
-__kernel void prod_TA(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_cols;
-  int bBegin = col_block_id * block_size;
-  int bStep = block_size * B_internal_cols;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_cols;
-  int bOffset = row_thread_id * B_internal_cols + col_thread_id;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_row/align1/prod_TT.cl b/auxiliary/matrix_prod_row_row_row/align1/prod_TT.cl
deleted file mode 100644
index 330a978..0000000
--- a/auxiliary/matrix_prod_row_row_row/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...row_major, A...row_major, B...row_major
-__kernel void prod_TT(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global const float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols,
-          __global float * C,
-          unsigned int C_rows,
-          unsigned int C_cols,
-          unsigned int C_internal_rows,
-          unsigned int C_internal_cols,
-          __local float * bufA,
-          __local float * bufB) 
-{ 
-  int block_size = get_local_size(0);
-  int row_block_id = get_group_id(0);
-  int col_block_id = get_group_id(1);
-  int row_thread_id = get_local_id(0);
-  int col_thread_id = get_local_id(1);
-  int aBegin = row_block_id * block_size;
-  int aStep = block_size * A_internal_cols;
-  int bBegin = col_block_id * block_size * B_internal_cols;
-  int bStep = block_size;
-  int block_num = A_rows / block_size;
-  if (block_num * block_size != A_rows)
-    ++block_num;
-  float Csub = 0;
-  int aOffset = row_thread_id + col_thread_id * A_internal_cols;
-  int bOffset = row_thread_id + col_thread_id * B_internal_cols;
-  for (int block = 0;
-           block < block_num;
-           ++block)
-  {
-    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
-      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
-    else
-      bufA[row_thread_id * block_size + col_thread_id] = 0;
-    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
-      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; 
-    else
-      bufB[row_thread_id * block_size + col_thread_id] = 0;
-    barrier(CLK_LOCAL_MEM_FENCE);
-    for (int k = 0; k < block_size; ++k)
-      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
-    barrier(CLK_LOCAL_MEM_FENCE);
-    aBegin += aStep;
-    bBegin += bStep;
-  }
-  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
-    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_row/align1/fft_direct.cl b/auxiliary/matrix_row/align1/fft_direct.cl
new file mode 100644
index 0000000..0642a64
--- /dev/null
+++ b/auxiliary/matrix_row/align1/fft_direct.cl
@@ -0,0 +1,32 @@
+// naive fourier transform (quadratic complexity, use for reference only)
+__kernel void fft_direct(__global float2* input,
+                         __global float2* output,
+                         unsigned int size,
+                         unsigned int stride,
+                         unsigned int batch_num,
+                         float sign) {
+
+//    unsigned int base_offset = 0;
+    const float NUM_PI = 3.14159265358979323846;
+    
+    for(unsigned int batch_id = 0; batch_id < batch_num; batch_id++) {
+        for(unsigned int k = get_global_id(0); k < size; k += get_global_size(0)) {
+            float2 f = 0.0f;
+
+            for(unsigned int n = 0; n < size; n++) {
+                float2 in = input[batch_id * stride + n]; //input index here
+
+                float sn, cs;
+                float arg = sign * 2 * NUM_PI * k / size * n;
+                sn = sincos(arg, &cs);
+
+                float2 ex = (float2)(cs, sn);
+                f = f + (float2)(in.x * ex.x - in.y * ex.y, in.x * ex.y + in.y * ex.x);
+            }
+
+            output[batch_id * stride + k] = f;// output index here
+        }
+
+//        base_offset += stride;
+    }
+}
diff --git a/auxiliary/matrix_row/align1/fft_radix2.cl b/auxiliary/matrix_row/align1/fft_radix2.cl
new file mode 100644
index 0000000..348a54b
--- /dev/null
+++ b/auxiliary/matrix_row/align1/fft_radix2.cl
@@ -0,0 +1,46 @@
+__kernel void fft_radix2(__global float2* input,
+                         unsigned int s,
+                         unsigned int bit_size,
+                         unsigned int size,
+                         unsigned int stride,
+                         unsigned int batch_num,
+                         float sign) {
+
+    unsigned int ss = 1 << s;
+    unsigned int half_size = size >> 1;
+
+    float cs, sn;
+    const float NUM_PI = 3.14159265358979323846;
+
+    unsigned int glb_id = get_global_id(0);
+    unsigned int glb_sz = get_global_size(0);
+	
+//    unsigned int base_offset = 0;
+	
+    for(unsigned int batch_id = 0; batch_id < batch_num; batch_id++) {
+        for(unsigned int tid = glb_id; tid < half_size; tid += glb_sz) {
+            unsigned int group = (tid & (ss - 1));
+            unsigned int pos = ((tid >> s) << (s + 1)) + group;
+
+            unsigned int offset = batch_id * stride + pos;
+            float2 in1 = input[offset];//index
+            float2 in2 = input[offset + ss];//index
+
+            float arg = group * sign * NUM_PI / ss;
+
+            sn = sincos(arg, &cs);
+            //sn = native_sin(arg);
+            //cs = native_cos(arg);
+
+            float2 ex = (float2)(cs, sn);
+
+            float2 tmp = (float2)(in2.x * ex.x - in2.y * ex.y, in2.x * ex.y + in2.y * ex.x);
+
+            input[offset + ss] = in1 - tmp;//index
+            input[offset] = in1 + tmp;//index
+        }
+
+//        base_offset += stride;
+    }
+}
+
diff --git a/auxiliary/matrix_row/align1/fft_radix2_local.cl b/auxiliary/matrix_row/align1/fft_radix2_local.cl
new file mode 100644
index 0000000..0dbe4e1
--- /dev/null
+++ b/auxiliary/matrix_row/align1/fft_radix2_local.cl
@@ -0,0 +1,72 @@
+
+unsigned int get_reorder_num(unsigned int v, unsigned int bit_size) {
+    v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1);
+    v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2);
+    v = ((v >> 4) & 0x0F0F0F0F) | ((v & 0x0F0F0F0F) << 4);
+    v = ((v >> 8) & 0x00FF00FF) | ((v & 0x00FF00FF) << 8);
+    v = (v >> 16) | (v << 16);
+
+    v = v >> (32 - bit_size);
+
+    return v;
+}
+
+__kernel void fft_radix2_local(__global float2* input,
+                                __local float2* lcl_input,
+                                unsigned int bit_size,
+                                unsigned int size,
+                                unsigned int stride,
+                                unsigned int batch_num,
+                                float sign) {
+
+    unsigned int grp_id = get_group_id(0);
+    unsigned int grp_num = get_num_groups(0);
+
+    unsigned int lcl_sz = get_local_size(0);
+    unsigned int lcl_id = get_local_id(0);
+    const float NUM_PI = 3.14159265358979323846;
+
+    for(unsigned int batch_id = grp_id; batch_id < batch_num; batch_id += grp_num) {
+        //unsigned int base_offset = stride * batch_id;
+        //copy chunk of global memory to local
+        for(unsigned int p = lcl_id; p < size; p += lcl_sz) {
+            unsigned int v = get_reorder_num(p, bit_size);
+            lcl_input[v] = input[batch_id * stride + p];//index
+        }
+
+        barrier(CLK_LOCAL_MEM_FENCE);
+		
+        //performs Cooley-Tukey FFT on local array
+        for(unsigned int s = 0; s < bit_size; s++) {
+            unsigned int ss = 1 << s;
+
+            float cs, sn;
+
+            for(unsigned int tid = lcl_id; tid < size; tid += lcl_sz) {
+                unsigned int group = (tid & (ss - 1));
+                unsigned int pos = ((tid >> s) << (s + 1)) + group;
+
+                float2 in1 = lcl_input[pos];
+                float2 in2 = lcl_input[pos + ss];
+
+                float arg = group * sign * NUM_PI / ss;
+
+                sn = sincos(arg, &cs);
+                float2 ex = (float2)(cs, sn);
+
+                float2 tmp = (float2)(in2.x * ex.x - in2.y * ex.y, in2.x * ex.y + in2.y * ex.x);
+
+                lcl_input[pos + ss] = in1 - tmp;
+                lcl_input[pos] = in1 + tmp;
+            }
+
+            barrier(CLK_LOCAL_MEM_FENCE);
+        }
+		
+        //copy local array back to global memory
+        for(unsigned int p = lcl_id; p < size; p += lcl_sz) {
+            input[batch_id * stride + p] = lcl_input[p];//index
+        }
+    }
+}
+
diff --git a/auxiliary/matrix_row/align1/fft_reorder.cl b/auxiliary/matrix_row/align1/fft_reorder.cl
new file mode 100644
index 0000000..0fafd0a
--- /dev/null
+++ b/auxiliary/matrix_row/align1/fft_reorder.cl
@@ -0,0 +1,42 @@
+/*
+* Performs reordering of input data in bit-reversal order
+* Probably it's better to do in host side,
+*/
+unsigned int get_reorder_num_2(unsigned int v, unsigned int bit_size) {
+    v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1);
+    v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2);
+    v = ((v >> 4) & 0x0F0F0F0F) | ((v & 0x0F0F0F0F) << 4);
+    v = ((v >> 8) & 0x00FF00FF) | ((v & 0x00FF00FF) << 8);
+    v = (v >> 16) | (v << 16);
+
+    v = v >> (32 - bit_size);
+
+    return v;
+}
+
+__kernel void fft_reorder(__global float2* input,
+                          unsigned int bit_size,
+                          unsigned int size,
+                          unsigned int stride,
+                          int batch_num) {
+    //unsigned int base_offset = 0;
+
+    unsigned int glb_id = get_global_id(0);
+    unsigned int glb_sz = get_global_size(0);
+	
+    for(unsigned int batch_id = 0; batch_id < batch_num; batch_id++) {
+        for(unsigned int i = glb_id; i < size; i += glb_sz) {
+            unsigned int v = get_reorder_num_2(i, bit_size);
+
+            if(i < v) {
+                float2 tmp = input[batch_id * stride + i]; // index
+                input[batch_id * stride + i] = input[batch_id * stride + v]; //index
+                input[batch_id * stride + v] = tmp; //index
+            }
+        }
+
+        //base_offset += stride;
+    }
+}
+
+
diff --git a/auxiliary/matrix_row/align1/inplace_add.cl b/auxiliary/matrix_row/align1/inplace_add.cl
index 73cd0e4..08b7f7f 100644
--- a/auxiliary/matrix_row/align1/inplace_add.cl
+++ b/auxiliary/matrix_row/align1/inplace_add.cl
@@ -1,10 +1,26 @@
 
 __kernel void inplace_add(
-          __global float * vec1,
-          __global const float * vec2,
-          unsigned int size) 
+          __global float * A,
+          unsigned int A_row_start,
+          unsigned int A_col_start,
+          unsigned int A_row_size,
+          unsigned int A_col_size,
+          unsigned int A_internal_rows,
+          unsigned int A_internal_cols,
+          __global const float * B,  
+          unsigned int B_row_start,
+          unsigned int B_col_start,
+          unsigned int B_row_size,
+          unsigned int B_col_size,
+          unsigned int B_internal_rows,
+          unsigned int B_internal_cols)
 { 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec1[i] += vec2[i];
+  if (   get_global_id(0) < A_row_size
+      && get_global_id(1) < A_col_size
+     )
+    A[  (get_global_id(0) + A_row_start) * A_internal_cols
+      + (get_global_id(1) + A_col_start)] 
+      += B[  (get_global_id(0) + B_row_start) * B_internal_cols
+           + (get_global_id(1) + B_col_start)];
 }
 
diff --git a/auxiliary/matrix_solve_col_col/align1/lower_solve.cl b/auxiliary/matrix_solve_col_col/align1/lower_solve.cl
deleted file mode 100644
index fa49f4d..0000000
--- a/auxiliary/matrix_solve_col_col/align1/lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/lower_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/lower_trans_solve.cl
deleted file mode 100644
index 9e3c19c..0000000
--- a/auxiliary/matrix_solve_col_col/align1/lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_lower_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_lower_solve.cl
deleted file mode 100644
index 4f66ed6..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_lower_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_lower_trans_solve.cl
deleted file mode 100644
index aadc067..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_unit_lower_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_unit_lower_solve.cl
deleted file mode 100644
index 6eba5f6..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_unit_lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_unit_lower_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_unit_lower_trans_solve.cl
deleted file mode 100644
index 40fe7e7..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_unit_lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_unit_upper_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_unit_upper_solve.cl
deleted file mode 100644
index c8ce8b5..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_unit_upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_unit_upper_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_unit_upper_trans_solve.cl
deleted file mode 100644
index bd5ba2f..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_unit_upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_upper_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_upper_solve.cl
deleted file mode 100644
index cb5767b..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_upper_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_upper_trans_solve.cl
deleted file mode 100644
index 9c9f457..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/unit_lower_solve.cl b/auxiliary/matrix_solve_col_col/align1/unit_lower_solve.cl
deleted file mode 100644
index c77089b..0000000
--- a/auxiliary/matrix_solve_col_col/align1/unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void unit_lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/unit_lower_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/unit_lower_trans_solve.cl
deleted file mode 100644
index 40abf01..0000000
--- a/auxiliary/matrix_solve_col_col/align1/unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void unit_lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/unit_upper_solve.cl b/auxiliary/matrix_solve_col_col/align1/unit_upper_solve.cl
deleted file mode 100644
index ac5245b..0000000
--- a/auxiliary/matrix_solve_col_col/align1/unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void unit_upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/unit_upper_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/unit_upper_trans_solve.cl
deleted file mode 100644
index 33459a4..0000000
--- a/auxiliary/matrix_solve_col_col/align1/unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void unit_upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/upper_solve.cl b/auxiliary/matrix_solve_col_col/align1/upper_solve.cl
deleted file mode 100644
index 8b71f6d..0000000
--- a/auxiliary/matrix_solve_col_col/align1/upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/upper_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/upper_trans_solve.cl
deleted file mode 100644
index a696159..0000000
--- a/auxiliary/matrix_solve_col_col/align1/upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/lower_solve.cl b/auxiliary/matrix_solve_col_row/align1/lower_solve.cl
deleted file mode 100644
index 083bd49..0000000
--- a/auxiliary/matrix_solve_col_row/align1/lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/lower_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/lower_trans_solve.cl
deleted file mode 100644
index 06dfdc6..0000000
--- a/auxiliary/matrix_solve_col_row/align1/lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_lower_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_lower_solve.cl
deleted file mode 100644
index 2154426..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_lower_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_lower_trans_solve.cl
deleted file mode 100644
index 8aca103..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_unit_lower_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_unit_lower_solve.cl
deleted file mode 100644
index 1d6599f..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_unit_lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_unit_lower_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_unit_lower_trans_solve.cl
deleted file mode 100644
index 74e572d..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_unit_lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_unit_upper_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_unit_upper_solve.cl
deleted file mode 100644
index 4d3c372..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_unit_upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_unit_upper_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_unit_upper_trans_solve.cl
deleted file mode 100644
index 0bfdb10..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_unit_upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_upper_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_upper_solve.cl
deleted file mode 100644
index e433bd0..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_upper_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_upper_trans_solve.cl
deleted file mode 100644
index e1b6634..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/unit_lower_solve.cl b/auxiliary/matrix_solve_col_row/align1/unit_lower_solve.cl
deleted file mode 100644
index cb2da62..0000000
--- a/auxiliary/matrix_solve_col_row/align1/unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void unit_lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/unit_lower_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/unit_lower_trans_solve.cl
deleted file mode 100644
index 302689f..0000000
--- a/auxiliary/matrix_solve_col_row/align1/unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void unit_lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/unit_upper_solve.cl b/auxiliary/matrix_solve_col_row/align1/unit_upper_solve.cl
deleted file mode 100644
index f3a1ccc..0000000
--- a/auxiliary/matrix_solve_col_row/align1/unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void unit_upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/unit_upper_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/unit_upper_trans_solve.cl
deleted file mode 100644
index d4a8173..0000000
--- a/auxiliary/matrix_solve_col_row/align1/unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void unit_upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/upper_solve.cl b/auxiliary/matrix_solve_col_row/align1/upper_solve.cl
deleted file mode 100644
index e93feda..0000000
--- a/auxiliary/matrix_solve_col_row/align1/upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/upper_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/upper_trans_solve.cl
deleted file mode 100644
index 69cfb27..0000000
--- a/auxiliary/matrix_solve_col_row/align1/upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/lower_solve.cl b/auxiliary/matrix_solve_row_col/align1/lower_solve.cl
deleted file mode 100644
index 4e7c5d2..0000000
--- a/auxiliary/matrix_solve_row_col/align1/lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/lower_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/lower_trans_solve.cl
deleted file mode 100644
index bebd5a6..0000000
--- a/auxiliary/matrix_solve_row_col/align1/lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_lower_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_lower_solve.cl
deleted file mode 100644
index 7738de7..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_lower_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_lower_trans_solve.cl
deleted file mode 100644
index da49eb3..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_unit_lower_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_unit_lower_solve.cl
deleted file mode 100644
index 2ec32b6..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_unit_lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_unit_lower_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_unit_lower_trans_solve.cl
deleted file mode 100644
index e9605fc..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_unit_lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_unit_upper_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_unit_upper_solve.cl
deleted file mode 100644
index 7467e62..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_unit_upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_unit_upper_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_unit_upper_trans_solve.cl
deleted file mode 100644
index 82d8e62..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_unit_upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_upper_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_upper_solve.cl
deleted file mode 100644
index e93422c..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_upper_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_upper_trans_solve.cl
deleted file mode 100644
index 33b00c6..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/unit_lower_solve.cl b/auxiliary/matrix_solve_row_col/align1/unit_lower_solve.cl
deleted file mode 100644
index 70df3f4..0000000
--- a/auxiliary/matrix_solve_row_col/align1/unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void unit_lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/unit_lower_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/unit_lower_trans_solve.cl
deleted file mode 100644
index c168100..0000000
--- a/auxiliary/matrix_solve_row_col/align1/unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void unit_lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/unit_upper_solve.cl b/auxiliary/matrix_solve_row_col/align1/unit_upper_solve.cl
deleted file mode 100644
index 7b1e113..0000000
--- a/auxiliary/matrix_solve_row_col/align1/unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void unit_upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/unit_upper_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/unit_upper_trans_solve.cl
deleted file mode 100644
index da6ae7a..0000000
--- a/auxiliary/matrix_solve_row_col/align1/unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void unit_upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/upper_solve.cl b/auxiliary/matrix_solve_row_col/align1/upper_solve.cl
deleted file mode 100644
index 358cd4c..0000000
--- a/auxiliary/matrix_solve_row_col/align1/upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_rows]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/upper_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/upper_trans_solve.cl
deleted file mode 100644
index 956e645..0000000
--- a/auxiliary/matrix_solve_row_col/align1/upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_rows + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/lower_solve.cl b/auxiliary/matrix_solve_row_row/align1/lower_solve.cl
deleted file mode 100644
index 635e87d..0000000
--- a/auxiliary/matrix_solve_row_row/align1/lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/lower_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/lower_trans_solve.cl
deleted file mode 100644
index d430761..0000000
--- a/auxiliary/matrix_solve_row_row/align1/lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_lower_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_lower_solve.cl
deleted file mode 100644
index 3ba8c8e..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_lower_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_lower_trans_solve.cl
deleted file mode 100644
index e16acaa..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_unit_lower_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_unit_lower_solve.cl
deleted file mode 100644
index f70be74..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_unit_lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_unit_lower_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_unit_lower_trans_solve.cl
deleted file mode 100644
index 5a54674..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_unit_lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_unit_upper_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_unit_upper_solve.cl
deleted file mode 100644
index b03708d..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_unit_upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_unit_upper_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_unit_upper_trans_solve.cl
deleted file mode 100644
index e0c0d7a..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_unit_upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_upper_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_upper_solve.cl
deleted file mode 100644
index bda9852..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_upper_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_upper_trans_solve.cl
deleted file mode 100644
index 894f69b..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/unit_lower_solve.cl b/auxiliary/matrix_solve_row_row/align1/unit_lower_solve.cl
deleted file mode 100644
index 41d276c..0000000
--- a/auxiliary/matrix_solve_row_row/align1/unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void unit_lower_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/unit_lower_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/unit_lower_trans_solve.cl
deleted file mode 100644
index 0d0e259..0000000
--- a/auxiliary/matrix_solve_row_row/align1/unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void unit_lower_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = 0; row < A_rows; ++row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/unit_upper_solve.cl b/auxiliary/matrix_solve_row_row/align1/unit_upper_solve.cl
deleted file mode 100644
index 1fbc162..0000000
--- a/auxiliary/matrix_solve_row_row/align1/unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void unit_upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/unit_upper_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/unit_upper_trans_solve.cl
deleted file mode 100644
index cbf638f..0000000
--- a/auxiliary/matrix_solve_row_row/align1/unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void unit_upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/upper_solve.cl b/auxiliary/matrix_solve_row_row/align1/upper_solve.cl
deleted file mode 100644
index 781e5e4..0000000
--- a/auxiliary/matrix_solve_row_row/align1/upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void upper_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row * B_internal_cols + get_group_id(0)]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/upper_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/upper_trans_solve.cl
deleted file mode 100644
index 0f7e321..0000000
--- a/auxiliary/matrix_solve_row_row/align1/upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void upper_trans_solve(
-          __global const float * A,
-          unsigned int A_rows,
-          unsigned int A_cols,
-          unsigned int A_internal_rows,
-          unsigned int A_internal_cols,
-          __global float * B,  
-          unsigned int B_rows,
-          unsigned int B_cols,
-          unsigned int B_internal_rows,
-          unsigned int B_internal_cols)
-{ 
-  float temp; 
-  for (int row = A_rows-1; row > -1; --row) 
-  { 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-    if (get_local_id(0) == 0) 
-      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; 
-    barrier(CLK_GLOBAL_MEM_FENCE); 
-      temp = B[row + get_group_id(0) * B_internal_cols]; 
-    //eliminate column of op(A) with index 'row' in parallel: 
-    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) 
-      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];
-   }
-}
diff --git a/auxiliary/spai/align1/assemble_blocks.cl b/auxiliary/spai/align1/assemble_blocks.cl
new file mode 100644
index 0000000..cdf6b92
--- /dev/null
+++ b/auxiliary/spai/align1/assemble_blocks.cl
@@ -0,0 +1,60 @@
+
+float get_element(__global const unsigned int * row_indices,
+					 __global const unsigned int * column_indices,
+					 __global const float * elements,
+					 unsigned int row,
+					 unsigned int col
+					 )
+{
+	unsigned int row_end = row_indices[row+1];
+	for(unsigned int i = row_indices[row]; i < row_end; ++i){
+		if(column_indices[i] == col)
+			return elements[i];
+		if(column_indices[i] > col)
+			return 0.0;
+	}
+	return 0.0;						
+}
+
+void block_assembly(__global const unsigned int * row_indices,
+					__global const unsigned int * column_indices, 
+					__global const float * elements,
+					__global const unsigned int * matrix_dimensions,
+					__global const unsigned int * set_I,
+					__global const unsigned int * set_J, 
+					unsigned int matrix_ind,
+					__global float * com_A_I_J)
+{
+	unsigned int row_n = matrix_dimensions[2*matrix_ind];
+	unsigned int col_n = matrix_dimensions[2*matrix_ind + 1];
+	
+	for(unsigned int i = 0; i < col_n; ++i){
+				//start row index
+				for(unsigned int j = 0; j < row_n; j++){
+					com_A_I_J[ i*row_n + j] = get_element(row_indices, column_indices, elements, set_I[j], set_J[i]);
+				}
+			}
+						
+}
+
+__kernel void assemble_blocks(
+          __global const unsigned int * row_indices,
+          __global const unsigned int * column_indices, 
+          __global const float * elements,
+          __global const unsigned int * set_I,
+  		  __global const unsigned int * set_J,
+ 		  __global const unsigned int * i_ind,
+		  __global const unsigned int * j_ind,
+	      __global const unsigned int * block_ind,
+	      __global const unsigned int * matrix_dimensions,
+		  __global float * com_A_I_J,
+		  __global unsigned int * g_is_update,
+                   unsigned int  block_elems_num) 
+{ 
+  	for(unsigned int i  = get_global_id(0); i < block_elems_num; i += get_global_size(0)){
+        if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+			
+            block_assembly(row_indices, column_indices, elements, matrix_dimensions, set_I + i_ind[i], set_J + j_ind[i], i, com_A_I_J + block_ind[i]);
+        }
+    }
+}
\ No newline at end of file
diff --git a/auxiliary/spai/align1/block_bv_assembly.cl b/auxiliary/spai/align1/block_bv_assembly.cl
new file mode 100644
index 0000000..251671d
--- /dev/null
+++ b/auxiliary/spai/align1/block_bv_assembly.cl
@@ -0,0 +1,33 @@
+void assemble_bv(__global float * g_bv_r, __global float * g_bv, unsigned int col_n){
+	for(unsigned int i = 0; i < col_n; ++i){
+		g_bv_r[i] = g_bv[ i];
+	}
+}
+
+void assemble_bv_block(__global float * g_bv_r, __global float * g_bv, unsigned int col_n,
+ 					   __global float * g_bv_u, unsigned int col_n_u)
+{
+	assemble_bv(g_bv_r, g_bv, col_n);
+	assemble_bv(g_bv_r + col_n, g_bv_u, col_n_u);
+						
+}
+
+__kernel void block_bv_assembly(__global float * g_bv,
+						__global unsigned int * start_bv_ind,
+						__global unsigned int * matrix_dimensions,
+						__global float * g_bv_u,
+						__global unsigned int * start_bv_u_ind,
+						__global unsigned int * matrix_dimensions_u,
+						__global float * g_bv_r,
+						__global unsigned int * start_bv_r_ind,
+						__global unsigned int * matrix_dimensions_r,
+						__global unsigned int * g_is_update,
+						//__local  float * local_gb,
+						unsigned int  block_elems_num)
+{ 
+	for(unsigned int i  = get_global_id(0); i < block_elems_num; i += get_global_size(0)){
+		if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+			assemble_bv_block(g_bv_r + start_bv_r_ind[i], g_bv + start_bv_ind[i], matrix_dimensions[2*i + 1], g_bv_u + start_bv_u_ind[i], matrix_dimensions_u[2*i + 1]);
+		}
+	}
+}
\ No newline at end of file
diff --git a/auxiliary/spai/align1/block_least_squares.cl b/auxiliary/spai/align1/block_least_squares.cl
new file mode 100644
index 0000000..326e0c7
--- /dev/null
+++ b/auxiliary/spai/align1/block_least_squares.cl
@@ -0,0 +1,68 @@
+
+void custom_dot_prod_ls(__global float * A, unsigned int row_n, __global float * v, unsigned int ind, float *res){
+            *res = 0.0;
+            for(unsigned int j = ind; j < row_n; ++j){
+                if(j == ind){
+                    *res += v[ j];
+                }else{
+                    *res += A[ j + ind*row_n]*v[ j];
+                }
+            }
+        }
+
+void backwardSolve(__global float * R,  unsigned int row_n, unsigned int col_n, __global float * y, __global float * x){
+	for (int i = col_n-1; i >= 0 ; i--) {
+		x[ i] = y[ i];
+		for (int j = i+1; j < col_n; ++j) {
+			x[ i] -= R[ i + j*row_n]*x[ j];
+		}
+		x[i] /= R[ i + i*row_n];
+	}
+	
+}
+
+		
+void apply_q_trans_vec_ls(__global float * R, unsigned int row_n, unsigned int col_n, __global const float * b_v,  __global float * y){
+            float inn_prod = 0;
+            for(unsigned int i = 0; i < col_n; ++i){
+                custom_dot_prod_ls(R, row_n, y, i, &inn_prod);
+                for(unsigned int j = i; j < row_n; ++j){
+                    if(i == j){
+                        y[ j] -= b_v[ i]*inn_prod;
+                    }
+                    else{
+                        y[j] -= b_v[ i]*inn_prod*R[ j +i*row_n];
+                    }
+                }
+                //std::cout<<y<<std::endl;
+            }
+        }
+
+void ls(__global float * R, unsigned int row_n, unsigned int col_n, __global float * b_v, __global float * m_v, __global float * y_v){
+	
+	apply_q_trans_vec_ls(R, row_n, col_n, b_v, y_v);
+	//m_new - is m_v now
+	backwardSolve(R, row_n, col_n, y_v, m_v);
+}
+
+__kernel void block_least_squares(
+          __global float * global_R,
+		  __global unsigned int * block_ind,
+          __global float * b_v,
+	      __global unsigned int * start_bv_inds,
+		  __global float * m_v,
+		  __global float * y_v,
+		  __global unsigned int * start_y_inds,
+	      __global unsigned int * matrix_dimensions,
+	      __global unsigned int * g_is_update,
+          //__local  float * local_R,
+            unsigned int  block_elems_num) 
+{ 
+  	for(unsigned int i  = get_global_id(0); i < block_elems_num; i += get_global_size(0)){
+        if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+			
+            ls(global_R + block_ind[i], matrix_dimensions[2*i], matrix_dimensions[2*i + 1], b_v +start_bv_inds[i], m_v + start_bv_inds[i], y_v + start_y_inds[i] );
+			
+        }
+    }
+}
diff --git a/auxiliary/spai/align1/block_q_mult.cl b/auxiliary/spai/align1/block_q_mult.cl
new file mode 100644
index 0000000..0810155
--- /dev/null
+++ b/auxiliary/spai/align1/block_q_mult.cl
@@ -0,0 +1,74 @@
+
+void custom_dot_prod(__global float * A, unsigned int row_n, __local float * v, unsigned int ind, float *res){
+            *res = 0.0;
+            for(unsigned int j = ind; j < row_n; ++j){
+                if(j == ind){
+                    *res += v[j];
+                }else{
+                    *res += A[j + ind*row_n]*v[j];
+                }
+            }
+        }
+
+void apply_q_trans_vec(__global float * R, unsigned int row_n, unsigned int col_n, __global float * b_v, __local float * y){
+            float inn_prod = 0;
+            for(unsigned int i = 0; i < col_n; ++i){
+                custom_dot_prod(R, row_n, y, i, &inn_prod);
+                for(unsigned int j = i; j < row_n; ++j){
+                    if(i == j){
+                        y[j] -= b_v[ i]*inn_prod;
+                    }
+                    else{
+                        y[j] -= b_v[ i]*inn_prod*R[ j + i*row_n];
+                    }
+                }
+            }
+        }
+
+void q_mult(__global float * R, unsigned int row_n, unsigned int col_n, __global float * b_v, __local float * R_u, unsigned int col_n_u){
+				for(unsigned int i = get_local_id(0); i < col_n_u; i+= get_local_size(0)){
+					apply_q_trans_vec(R, row_n, col_n, b_v, R_u + row_n*i);
+				}				
+}
+
+void matrix_from_global_to_local(__global float* g_M, __local float* l_M, unsigned int row_n, unsigned int col_n, unsigned int mat_start_ind){
+	for(unsigned int i = get_local_id(0); i < col_n; i+= get_local_size(0)){
+		for(unsigned int j = 0; j < row_n; ++j){
+			l_M[i*row_n + j] = g_M[mat_start_ind + i*row_n + j];
+		}
+	}
+}
+
+void matrix_from_local_to_global(__global float* g_M, __local float* l_M, unsigned int row_n, unsigned int col_n, unsigned int mat_start_ind){
+	for(unsigned int i = get_local_id(0); i < col_n; i+= get_local_size(0)){
+		for(unsigned int j = 0; j < row_n; ++j){
+			g_M[mat_start_ind + i*row_n + j] = l_M[i*row_n + j];
+		}
+	}
+}
+
+
+
+__kernel void block_q_mult(__global float * global_R,
+  __global unsigned int * block_ind,
+  __global float * global_R_u,
+  __global unsigned int *block_ind_u,
+  __global float * b_v,
+  __global unsigned int * start_bv_inds,
+  __global unsigned int * matrix_dimensions,
+  __global unsigned int * matrix_dimensions_u,
+  __global unsigned int * g_is_update,
+  __local  float * local_R_u,
+    unsigned int  block_elems_num){
+		for(unsigned int i  = get_group_id(0); i < block_elems_num; i += get_num_groups(0)){
+	        if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && (g_is_update[i] > 0)){
+				//matrix_from_global_to_local(R, local_buff_R, matrix_dimensions[2*i], matrix_dimensions[2*i + 1], start_matrix_inds[i]);
+				matrix_from_global_to_local(global_R_u, local_R_u, matrix_dimensions_u[2*i], matrix_dimensions_u[2*i+ 1], block_ind_u[i]);
+				barrier(CLK_LOCAL_MEM_FENCE);
+	            q_mult(global_R + block_ind[i], matrix_dimensions[2*i], matrix_dimensions[2*i + 1], b_v + start_bv_inds[i], local_R_u, 
+	 				   matrix_dimensions_u[2*i + 1]);
+				barrier(CLK_LOCAL_MEM_FENCE);
+	            matrix_from_local_to_global(global_R_u, local_R_u, matrix_dimensions_u[2*i], matrix_dimensions_u[2*i + 1], block_ind_u[i]);
+	        }
+	    }
+}
\ No newline at end of file
diff --git a/auxiliary/spai/align1/block_qr.cl b/auxiliary/spai/align1/block_qr.cl
new file mode 100644
index 0000000..c4b39b1
--- /dev/null
+++ b/auxiliary/spai/align1/block_qr.cl
@@ -0,0 +1,130 @@
+void dot_prod(__local const float* A, unsigned int n, unsigned int beg_ind, float* res){
+    *res = 0;
+    for(unsigned int i = beg_ind; i < n; ++i){
+        *res += A[(beg_ind-1)*n + i]*A[(beg_ind-1)*n + i];
+    }
+}
+ 
+void vector_div(__global float* v, unsigned int beg_ind, float b, unsigned int n){
+    for(unsigned int i = beg_ind; i < n; ++i){
+        v[i] /= b;
+    }
+}
+
+void copy_vector(__local const float* A, __global float* v, const unsigned int beg_ind, const unsigned int n){
+    for(unsigned int i = beg_ind; i < n; ++i){
+        v[i] = A[(beg_ind-1)*n + i];
+    }
+}
+ 
+ 
+void householder_vector(__local const float* A, unsigned int j, unsigned int n, __global float* v, __global float* b){
+    float sg;
+    dot_prod(A, n, j+1, &sg); 
+    copy_vector(A, v, j+1, n);
+    float mu;
+    v[j] = 1.0;
+    //print_contigious_vector(v, v_start_ind, n);
+    if(sg == 0){
+        *b = 0;
+    }
+    else{
+        mu = sqrt(A[j*n + j]*A[ j*n + j] + sg);
+        if(A[ j*n + j] <= 0){
+            v[j] = A[ j*n + j] - mu;
+        }else{
+            v[j] = -sg/(A[ j*n + j] + mu);
+        }
+		*b = 2*(v[j]*v[j])/(sg + v[j]*v[j]);
+        //*b = (2*v[j]*v[j])/(sg + (v[j])*(v[j]));
+        vector_div(v, j, v[j], n);
+        //print_contigious_vector(v, v_start_ind, n);
+    }
+}
+
+void custom_inner_prod(__local const float* A, __global float* v, unsigned int col_ind, unsigned int row_num, unsigned int start_ind, float* res){
+    for(unsigned int i = start_ind; i < row_num; ++i){
+        *res += A[col_ind*row_num + i]*v[i];  
+    }
+}
+// 
+void apply_householder_reflection(__local float* A,  unsigned int row_n, unsigned int col_n, unsigned int iter_cnt, __global float* v, float b){
+    float in_prod_res;
+    for(unsigned int i= iter_cnt + get_local_id(0); i < col_n; i+=get_local_size(0)){
+        in_prod_res = 0.0;
+        custom_inner_prod(A, v, i, row_n, iter_cnt, &in_prod_res);
+        for(unsigned int j = iter_cnt; j < row_n; ++j){
+            A[ i*row_n + j] -= b*in_prod_res* v[j];
+        }
+    }
+    
+}
+
+void store_householder_vector(__local float* A,  unsigned int ind, unsigned int n, __global float* v){
+    for(unsigned int i = ind; i < n; ++i){
+        A[ (ind-1)*n + i] = v[i];
+    }
+}
+
+void single_qr( __local float* R, __global unsigned int* matrix_dimensions, __global float* b_v, __global float* v, unsigned int matrix_ind){
+    				//matrix_dimensions[0] - number of rows
+       				//matrix_dimensions[1] - number of columns
+	unsigned int col_n = matrix_dimensions[2*matrix_ind + 1];
+	unsigned int row_n = matrix_dimensions[2*matrix_ind];
+	
+	if((col_n == row_n)&&(row_n == 1)){
+		b_v[0] = 0.0;
+	    return;
+	}
+       for(unsigned int i = 0; i < col_n; ++i){
+				if(get_local_id(0) == 0){
+               		householder_vector(R, i, row_n, v, b_v + i);
+				}
+				barrier(CLK_LOCAL_MEM_FENCE);
+               	apply_householder_reflection(R, row_n, col_n, i, v, b_v[i]);
+                barrier(CLK_LOCAL_MEM_FENCE);
+				if(get_local_id(0) == 0){
+               		if(i < matrix_dimensions[2*matrix_ind]){
+                   		store_householder_vector(R, i+1, row_n, v);
+               		}
+				}
+           }
+}
+
+void matrix_from_global_to_local_qr(__global float* g_M, __local float* l_M, unsigned int row_n, unsigned int col_n, unsigned int mat_start_ind){
+	for(unsigned int i = get_local_id(0); i < col_n; i+= get_local_size(0)){
+		for(unsigned int j = 0; j < row_n; ++j){
+			l_M[i*row_n + j] = g_M[mat_start_ind + i*row_n + j];
+		}
+	}
+}
+void matrix_from_local_to_global_qr(__global float* g_M, __local float* l_M, unsigned int row_n, unsigned int col_n, unsigned int mat_start_ind){
+	for(unsigned int i = get_local_id(0); i < col_n; i+= get_local_size(0)){
+		for(unsigned int j = 0; j < row_n; ++j){
+			g_M[mat_start_ind + i*row_n + j] = l_M[i*row_n + j];
+		}
+	}
+}
+
+
+__kernel void block_qr(
+			__global float* R, 	 
+			__global unsigned int* matrix_dimensions, 
+			__global float* b_v, 
+			__global float* v, 
+			__global unsigned int* start_matrix_inds, 
+			__global unsigned int* start_bv_inds, 
+			__global unsigned int* start_v_inds,
+			__global unsigned int * g_is_update,  
+			__local float* local_buff_R,
+			unsigned int block_elems_num){
+    for(unsigned int i  = get_group_id(0); i < block_elems_num; i += get_num_groups(0)){
+        if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+			matrix_from_global_to_local_qr(R, local_buff_R, matrix_dimensions[2*i], matrix_dimensions[2*i + 1], start_matrix_inds[i]);
+			barrier(CLK_LOCAL_MEM_FENCE);
+            single_qr(local_buff_R, matrix_dimensions, b_v + start_bv_inds[i], v + start_v_inds[i], i);
+			barrier(CLK_LOCAL_MEM_FENCE);
+            matrix_from_local_to_global_qr(R, local_buff_R, matrix_dimensions[2*i], matrix_dimensions[2*i + 1], start_matrix_inds[i]);
+        }
+    }
+}
diff --git a/auxiliary/spai/align1/block_qr_assembly.cl b/auxiliary/spai/align1/block_qr_assembly.cl
new file mode 100644
index 0000000..a702f37
--- /dev/null
+++ b/auxiliary/spai/align1/block_qr_assembly.cl
@@ -0,0 +1,57 @@
+void assemble_upper_part(__global float * R_q,
+ 						unsigned int row_n_q, unsigned int col_n_q, __global float * R_u, 
+						unsigned int row_n_u, unsigned int col_n_u,
+						unsigned int col_n, unsigned int diff){
+            for(unsigned int i = 0; i < col_n_q; ++i){
+                for(unsigned int j = 0; j < diff; ++j){
+					R_q[ i*row_n_q + j] = R_u[ i*row_n_u + j + col_n ];
+                }
+            }
+        }
+
+
+void assemble_lower_part(__global float * R_q, unsigned int row_n_q, unsigned int col_n_q, __global float * R_u_u, 
+						 unsigned int row_n_u_u, unsigned int col_n_u_u, 
+						 unsigned int diff){
+	for(unsigned int i = 0; i < col_n_u_u; ++i){
+		for(unsigned int j = 0; j < row_n_u_u; ++j){
+			R_q[i*row_n_q + j + diff] = R_u_u[i*row_n_u_u + j];
+		}
+	}	
+}
+
+
+
+void assemble_qr_block(__global float * R_q, unsigned int row_n_q, unsigned int col_n_q, __global float * R_u, unsigned int row_n_u,
+						unsigned int col_n_u, __global float * R_u_u, unsigned int row_n_u_u, unsigned int col_n_u_u, unsigned int col_n){
+						unsigned int diff = row_n_u - col_n;
+						assemble_upper_part(R_q, row_n_q, col_n_q, R_u, row_n_u, col_n_u, col_n, diff);
+						if(diff > 0){
+							assemble_lower_part(R_q, row_n_q, col_n_q, R_u_u, row_n_u_u, col_n_u_u, diff);
+						}
+}
+
+__kernel void block_qr_assembly(
+          __global unsigned int * matrix_dimensions,
+	      __global float * R_u,
+		  __global unsigned int * block_ind_u,
+		  __global unsigned int * matrix_dimensions_u,
+		  __global float * R_u_u,
+	      __global unsigned int * block_ind_u_u,
+		  __global unsigned int * matrix_dimensions_u_u,
+		  __global float * R_q,
+		  __global unsigned int * block_ind_q,
+		  __global unsigned int * matrix_dimensions_q,
+		  __global unsigned int * g_is_update,
+          //__local  float * local_R_q,
+            unsigned int  block_elems_num) 
+{ 
+  	for(unsigned int i  = get_global_id(0); i < block_elems_num; i += get_global_size(0)){
+        if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+			//
+            assemble_qr_block(R_q + block_ind_q[i], matrix_dimensions_q[2*i], matrix_dimensions_q[2*i + 1], R_u + block_ind_u[i], matrix_dimensions_u[2*i], 
+							matrix_dimensions_u[2*i + 1], R_u_u + block_ind_u_u[i], matrix_dimensions_u_u[2*i], matrix_dimensions_u_u[2*i + 1], matrix_dimensions[2*i + 1]);
+
+        }
+    }
+}
diff --git a/auxiliary/spai/align1/block_qr_assembly_1.cl b/auxiliary/spai/align1/block_qr_assembly_1.cl
new file mode 100644
index 0000000..e3b9e1e
--- /dev/null
+++ b/auxiliary/spai/align1/block_qr_assembly_1.cl
@@ -0,0 +1,36 @@
+void assemble_upper_part_1(__global float * R_q, unsigned int row_n_q, unsigned int col_n_q, __global float * R_u, 
+						 unsigned int row_n_u, unsigned int col_n_u,
+						 unsigned int col_n, unsigned int diff){
+            for(unsigned int i = 0; i < col_n_q; ++i){
+                for(unsigned int j = 0; j < diff; ++j){
+					R_q[ i*row_n_q + j] = R_u[i*row_n_u + j + col_n ];
+                }
+            }
+        }
+
+
+void assemble_qr_block_1(__global float * R_q,  unsigned int row_n_q, unsigned int col_n_q, __global float * R_u, unsigned int row_n_u,
+						unsigned int col_n_u, unsigned int col_n){
+						unsigned int diff = row_n_u - col_n;
+						assemble_upper_part_1(R_q, row_n_q, col_n_q, R_u, row_n_u, col_n_u, col_n, diff);
+}
+
+__kernel void block_qr_assembly_1(
+          __global unsigned int * matrix_dimensions,
+	      __global float * R_u,
+		  __global unsigned int * block_ind_u,
+		  __global unsigned int * matrix_dimensions_u,
+		  __global float * R_q,
+		  __global unsigned int * block_ind_q,
+		  __global unsigned int * matrix_dimensions_q,
+		  __global unsigned int * g_is_update,
+          //__local  float * local_R_q,
+            unsigned int  block_elems_num) 
+{ 
+  	for(unsigned int i  = get_global_id(0); i < block_elems_num; i += get_global_size(0)){
+        if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+            assemble_qr_block_1(R_q + block_ind_q[i], matrix_dimensions_q[2*i], matrix_dimensions_q[2*i + 1], R_u + block_ind_u[i], matrix_dimensions_u[2*i], 
+							matrix_dimensions_u[2*i + 1], matrix_dimensions[2*i + 1]);
+        }
+    }
+}
diff --git a/auxiliary/spai/align1/block_r_assembly.cl b/auxiliary/spai/align1/block_r_assembly.cl
new file mode 100644
index 0000000..d00fc35
--- /dev/null
+++ b/auxiliary/spai/align1/block_r_assembly.cl
@@ -0,0 +1,68 @@
+void assemble_r(__global float * gR, unsigned int row_n_r, unsigned int col_n_r, __global float * R, 
+				unsigned int row_n, unsigned int col_n)
+{
+  for(unsigned int i = 0; i < col_n; ++i){
+     for(unsigned int j = 0; j < row_n; ++j){
+		gR[i*row_n_r + j] = R[i*row_n + j ];
+     }
+  }
+}
+
+void assemble_r_u(__global float * gR,
+ 				  unsigned int row_n_r, unsigned int col_n_r, __global float * R_u, unsigned int row_n_u, unsigned int col_n_u, 
+				  unsigned int col_n)
+{
+	for(unsigned int i = 0; i < col_n_u; ++i){
+		for(unsigned int j = 0; j < col_n; ++j){
+			gR[ (i+col_n)*row_n_r + j] = R_u[ i*row_n_u + j];
+		}
+	}				
+}
+
+
+void assemble_r_u_u(__global float * gR,  unsigned int row_n_r, unsigned int col_n_r, __global float * R_u_u, unsigned int row_n_u_u, 
+					unsigned int col_n_u_u, unsigned int col_n)
+{
+	for(unsigned int i = 0; i < col_n_u_u; ++i){
+		for(unsigned int j = 0; j < row_n_u_u; ++j){
+			gR[(col_n+i)*row_n_r + j + col_n] = R_u_u[i*row_n_u_u + j];
+		}
+	}					
+}
+
+void assemble_r_block(__global float * gR, unsigned int row_n_r, unsigned int col_n_r, __global float * R, unsigned int row_n, 
+				unsigned int col_n, __global float * R_u, unsigned int row_n_u, unsigned int col_n_u, __global float * R_u_u, 
+				unsigned int row_n_u_u, unsigned int col_n_u_u){
+				assemble_r(gR, row_n_r, col_n_r, R, row_n, col_n);				
+				assemble_r_u(gR, row_n_r, col_n_r, R_u, row_n_u, col_n_u, col_n);
+				assemble_r_u_u(gR, row_n_r, col_n_r, R_u_u, row_n_u_u, col_n_u_u, col_n);
+}
+
+
+__kernel void block_r_assembly(
+          					__global float * R,
+	      					__global unsigned int * block_ind,
+		  					__global unsigned int * matrix_dimensions,
+		  					__global float * R_u,
+	      					__global unsigned int * block_ind_u,
+		  					__global unsigned int * matrix_dimensions_u,
+		  					__global float * R_u_u,
+		  					__global unsigned int * block_ind_u_u,
+		  					__global unsigned int * matrix_dimensions_u_u,
+		  					__global float * g_R,
+		  					__global unsigned int * block_ind_r,
+		  					__global unsigned int * matrix_dimensions_r,
+						    __global unsigned int * g_is_update,
+          					//__local  float * local_gR,
+            				unsigned int  block_elems_num) 
+{ 
+  	for(unsigned int i  = get_global_id(0); i < block_elems_num; i += get_global_size(0)){
+        if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+			
+            assemble_r_block(g_R + block_ind_r[i], matrix_dimensions_r[2*i], matrix_dimensions_r[2*i + 1], R + block_ind[i], matrix_dimensions[2*i], 
+							matrix_dimensions[2*i + 1], R_u + block_ind_u[i], matrix_dimensions_u[2*i], matrix_dimensions_u[2*i + 1],
+							R_u_u + block_ind_u_u[i], matrix_dimensions_u_u[2*i], matrix_dimensions_u_u[2*i + 1]);
+			
+        }
+    }
+}
\ No newline at end of file
diff --git a/auxiliary/vector/align1/add.cl b/auxiliary/vector/align1/add.cl
index 49bdd83..0ab59cf 100644
--- a/auxiliary/vector/align1/add.cl
+++ b/auxiliary/vector/align1/add.cl
@@ -1,11 +1,16 @@
 
 __kernel void add(
           __global const float * vec1,
-          __global const float * vec2, 
+          unsigned int start1,
+          unsigned int size1,
+          __global const float * vec2,
+          unsigned int start2,
+          unsigned int size2,
           __global float * result,
-          unsigned int size) 
+          unsigned int start3,
+          unsigned int size3) 
 { 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    result[i] = vec1[i] + vec2[i];
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    result[i+start3] = vec1[i+start1] + vec2[i+start2];
 }
 
diff --git a/auxiliary/vector/align1/clear.cl b/auxiliary/vector/align1/clear.cl
index d3a6e48..78d488d 100644
--- a/auxiliary/vector/align1/clear.cl
+++ b/auxiliary/vector/align1/clear.cl
@@ -1,9 +1,10 @@
 
 __kernel void clear(
           __global float * vec,
-          unsigned int size) 
+          unsigned int start1,
+          unsigned int size1) 
 { 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec[i] = 0;
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    vec[i+start1] = 0;
 }
 
diff --git a/auxiliary/vector/align1/cpu_inplace_mul_add.cl b/auxiliary/vector/align1/cpu_inplace_mul_add.cl
index 4e39226..d020712 100644
--- a/auxiliary/vector/align1/cpu_inplace_mul_add.cl
+++ b/auxiliary/vector/align1/cpu_inplace_mul_add.cl
@@ -1,12 +1,14 @@
 
 __kernel void cpu_inplace_mul_add(
           __global float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * vec2,
-          float factor,
-          unsigned int size
-          ) 
+          unsigned int start2,
+          unsigned int size2,
+          float factor) 
 { 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec1[i] += vec2[i] * factor;
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    vec1[i+start1] += vec2[i+start2] * factor;
 }
 
diff --git a/auxiliary/vector/align1/cpu_inplace_mult.cl b/auxiliary/vector/align1/cpu_inplace_mult.cl
index 0b0eeec..9c4d3ff 100644
--- a/auxiliary/vector/align1/cpu_inplace_mult.cl
+++ b/auxiliary/vector/align1/cpu_inplace_mult.cl
@@ -1,10 +1,11 @@
 
 __kernel void cpu_inplace_mult(
           __global float * vec,
-          float factor, 
-          unsigned int size) 
+          unsigned int start1,
+          unsigned int size1,
+          float factor) 
 { 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec[i] *= factor;
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    vec[i+start1] *= factor;
 }
 
diff --git a/auxiliary/vector/align1/cpu_mul_add.cl b/auxiliary/vector/align1/cpu_mul_add.cl
index 8ac0eae..bab4419 100644
--- a/auxiliary/vector/align1/cpu_mul_add.cl
+++ b/auxiliary/vector/align1/cpu_mul_add.cl
@@ -1,13 +1,18 @@
 
 __kernel void cpu_mul_add(
           __global const float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           float factor,
           __global const float * vec2,
+          unsigned int start2,
+          unsigned int size2,
           __global float * result,
-          unsigned int size
+          unsigned int start3,
+          unsigned int size3
           ) 
 { 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    result[i] = vec1[i] * factor + vec2[i];
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    result[i+start3] = vec1[i+start1] * factor + vec2[i+start2];
 }
 
diff --git a/auxiliary/vector/align1/cpu_mult.cl b/auxiliary/vector/align1/cpu_mult.cl
index 25f9684..478cabc 100644
--- a/auxiliary/vector/align1/cpu_mult.cl
+++ b/auxiliary/vector/align1/cpu_mult.cl
@@ -1,12 +1,15 @@
 
 __kernel void cpu_mult(
           __global const float * vec,
+          unsigned int start1,
+          unsigned int size1,
           float factor, 
           __global float * result,
-          unsigned int size) 
+          unsigned int start2,
+          unsigned int size2) 
 { 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    result[i] = vec[i] * factor;
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    result[i+start2] = vec[i+start1] * factor;
 }
 
 
diff --git a/auxiliary/vector/align1/diag_precond.cl b/auxiliary/vector/align1/diag_precond.cl
index 83bf4cd..c9e30d0 100644
--- a/auxiliary/vector/align1/diag_precond.cl
+++ b/auxiliary/vector/align1/diag_precond.cl
@@ -1,9 +1,12 @@
 
 __kernel void diag_precond(
           __global const float * diag_A_inv, 
+          unsigned int start1,
+          unsigned int size1,
           __global float * x, 
-          unsigned int size) 
+          unsigned int start2,
+          unsigned int size2) 
 { 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    x[i] *= diag_A_inv[i];
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    x[i+start2] *= diag_A_inv[i+start1];
 }
diff --git a/auxiliary/vector/align1/divide.cl b/auxiliary/vector/align1/divide.cl
index 709dc4b..2782dc6 100644
--- a/auxiliary/vector/align1/divide.cl
+++ b/auxiliary/vector/align1/divide.cl
@@ -2,12 +2,15 @@
 // Note: name 'div' is not allowed by the jit-compiler
 __kernel void divide(
           __global const float * vec,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * fac,  //note: CPU variant is mapped to prod_scalar
           __global float * result,
-          unsigned int size)  
+          unsigned int start3,
+          unsigned int size3)  
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    result[i] = vec[i] / factor;
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    result[i+start3] = vec[i+start1] / factor;
 }
 
diff --git a/auxiliary/vector/align1/index_norm_inf.cl b/auxiliary/vector/align1/index_norm_inf.cl
index ea71847..32590d1 100644
--- a/auxiliary/vector/align1/index_norm_inf.cl
+++ b/auxiliary/vector/align1/index_norm_inf.cl
@@ -1,16 +1,17 @@
 //index_norm_inf:
 unsigned int float_vector1_index_norm_inf_impl(
           __global const float * vec,
-          unsigned int size,
+          unsigned int start1,
+          unsigned int size1,
           __local float * float_buffer,
           __local unsigned int * index_buffer)
 {
   //step 1: fill buffer:
   float cur_max = 0.0f;
   float tmp;
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
   {
-    tmp = fabs(vec[i]);
+    tmp = fabs(vec[i+start1]);
     if (cur_max < tmp)
     {
       float_buffer[get_global_id(0)] = tmp;
@@ -42,12 +43,13 @@ unsigned int float_vector1_index_norm_inf_impl(
 
 __kernel void index_norm_inf(
           __global float * vec,
-          unsigned int size,
+          unsigned int start1,
+          unsigned int size1,
           __local float * float_buffer,
           __local unsigned int * index_buffer,
           global unsigned int * result) 
 { 
-  unsigned int tmp = float_vector1_index_norm_inf_impl(vec, size, float_buffer, index_buffer);
+  unsigned int tmp = float_vector1_index_norm_inf_impl(vec, start1, size1, float_buffer, index_buffer);
   if (get_global_id(0) == 0) *result = tmp;
 }
 
diff --git a/auxiliary/vector/align1/inner_prod.cl b/auxiliary/vector/align1/inner_prod.cl
index 87f6bc7..5f5628e 100644
--- a/auxiliary/vector/align1/inner_prod.cl
+++ b/auxiliary/vector/align1/inner_prod.cl
@@ -13,14 +13,16 @@ void helper_inner_prod_parallel_reduction( __local float * tmp_buffer )
 //////// inner products:
 float impl_inner_prod(
           __global const float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * vec2,
-          unsigned int start_index,
-          unsigned int end_index,
+          unsigned int start2,
+          unsigned int size2,
           __local float * tmp_buffer)
 {
   float tmp = 0;
-  for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))
-    tmp += vec1[i] * vec2[i];
+  for (unsigned int i = get_local_id(0); i < size1; i += get_local_size(0))
+    tmp += vec1[i+start1] * vec2[i+start2];
   tmp_buffer[get_local_id(0)] = tmp;
   
   helper_inner_prod_parallel_reduction(tmp_buffer);
@@ -31,15 +33,20 @@ float impl_inner_prod(
 
 __kernel void inner_prod(
           __global const float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * vec2,
-          unsigned int size,
+          unsigned int start2,
+          unsigned int size2,
           __local float * tmp_buffer,
           global float * group_buffer)
 {
   float tmp = impl_inner_prod(vec1,
+                              (      get_group_id(0) * size1) / get_num_groups(0) + start1,
+                              ((get_group_id(0) + 1) * size1) / get_num_groups(0) - (      get_group_id(0) * size1) / get_num_groups(0),
                               vec2,
-                              (      get_group_id(0) * size) / get_num_groups(0),
-                              ((get_group_id(0) + 1) * size) / get_num_groups(0),
+                              (      get_group_id(0) * size2) / get_num_groups(0) + start2,
+                              ((get_group_id(0) + 1) * size2) / get_num_groups(0) - (      get_group_id(0) * size2) / get_num_groups(0),
                               tmp_buffer);
   
   if (get_local_id(0) == 0)
diff --git a/auxiliary/vector/align1/inplace_add.cl b/auxiliary/vector/align1/inplace_add.cl
index 73cd0e4..ab7c23d 100644
--- a/auxiliary/vector/align1/inplace_add.cl
+++ b/auxiliary/vector/align1/inplace_add.cl
@@ -1,10 +1,13 @@
 
 __kernel void inplace_add(
           __global float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * vec2,
-          unsigned int size) 
+          unsigned int start2,
+          unsigned int size2) 
 { 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec1[i] += vec2[i];
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    vec1[i+start1] += vec2[i+start2];
 }
 
diff --git a/auxiliary/vector/align1/inplace_div_add.cl b/auxiliary/vector/align1/inplace_div_add.cl
index f60088b..77820cd 100644
--- a/auxiliary/vector/align1/inplace_div_add.cl
+++ b/auxiliary/vector/align1/inplace_div_add.cl
@@ -2,13 +2,14 @@
 ///// divide add:
 __kernel void inplace_div_add(
           __global float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * vec2,
-          __global const float * fac,   //CPU variant is mapped to mult_add
-          unsigned int size
-          ) 
+          unsigned int start2,
+          unsigned int size2,
+          __global const float * fac)   //CPU variant is mapped to mult_add
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec1[i] -= vec2[i] / factor;
-}
-
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    vec1[i+start1] -= vec2[i+start2] / factor;
+}
\ No newline at end of file
diff --git a/auxiliary/vector/align1/inplace_div_sub.cl b/auxiliary/vector/align1/inplace_div_sub.cl
index 88a4591..0f2a10f 100644
--- a/auxiliary/vector/align1/inplace_div_sub.cl
+++ b/auxiliary/vector/align1/inplace_div_sub.cl
@@ -2,13 +2,15 @@
 ///// divide substract:
 __kernel void inplace_div_sub(
           __global float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * vec2,
-          __global const float * fac,   //CPU variant is mapped to mult_add
-          unsigned int size
-          ) 
+          unsigned int start2,
+          unsigned int size2,
+          __global const float * fac)   //CPU variant is mapped to mult_add
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec1[i] -= vec2[i] / factor;
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    vec1[i+start1] -= vec2[i+start2] / factor;
 }
 
diff --git a/auxiliary/vector/align1/inplace_divide.cl b/auxiliary/vector/align1/inplace_divide.cl
index 69ee2a8..5c935f1 100644
--- a/auxiliary/vector/align1/inplace_divide.cl
+++ b/auxiliary/vector/align1/inplace_divide.cl
@@ -1,11 +1,12 @@
 
 __kernel void inplace_divide(
           __global float * vec,
-          __global const float * fac,  //note: CPU variant is mapped to prod_scalar
-          unsigned int size) 
+          unsigned int start1,
+          unsigned int size1,
+          __global const float * fac)  //note: CPU variant is mapped to prod_scalar
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec[i] /= factor;
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    vec[i+start1] /= factor;
 }
 
diff --git a/auxiliary/vector/align1/inplace_mul_add.cl b/auxiliary/vector/align1/inplace_mul_add.cl
index ff83e8b..544f5fc 100644
--- a/auxiliary/vector/align1/inplace_mul_add.cl
+++ b/auxiliary/vector/align1/inplace_mul_add.cl
@@ -1,14 +1,16 @@
 
 __kernel void inplace_mul_add(
           __global float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * vec2,
-          __global const float * fac,
-          unsigned int size
-          ) 
+          unsigned int start2,
+          unsigned int size2,
+          __global const float * fac) 
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec1[i] += vec2[i] * factor;
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    vec1[i+start1] += vec2[i+start2] * factor;
 }
 
 
diff --git a/auxiliary/vector/align1/inplace_mul_sub.cl b/auxiliary/vector/align1/inplace_mul_sub.cl
index aa8df56..f0c05b2 100644
--- a/auxiliary/vector/align1/inplace_mul_sub.cl
+++ b/auxiliary/vector/align1/inplace_mul_sub.cl
@@ -1,14 +1,16 @@
 
 __kernel void inplace_mul_sub(
           __global float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * vec2,
-          __global const float * fac,   //CPU variant is mapped to mult_add
-          unsigned int size
-          ) 
+          unsigned int start2,
+          unsigned int size2,
+          __global const float * fac)   //CPU variant is mapped to mult_add
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec1[i] -= vec2[i] * factor;
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    vec1[i+start1] -= vec2[i+start2] * factor;
 }
 
 
diff --git a/auxiliary/vector/align1/inplace_mult.cl b/auxiliary/vector/align1/inplace_mult.cl
index 6112c6d..f8a8210 100644
--- a/auxiliary/vector/align1/inplace_mult.cl
+++ b/auxiliary/vector/align1/inplace_mult.cl
@@ -1,12 +1,13 @@
 
 __kernel void inplace_mult(
           __global float * vec,
-          __global const float * fac, 
-          unsigned int size) 
+          unsigned int start1,
+          unsigned int size1,
+          __global const float * fac) 
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec[i] *= factor;
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    vec[i+start1] *= factor;
 }
 
 
diff --git a/auxiliary/vector/align1/inplace_sub.cl b/auxiliary/vector/align1/inplace_sub.cl
index 2de7013..50bffd2 100644
--- a/auxiliary/vector/align1/inplace_sub.cl
+++ b/auxiliary/vector/align1/inplace_sub.cl
@@ -1,10 +1,13 @@
 
 __kernel void inplace_sub(
           __global float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * vec2,
-          unsigned int size) 
+          unsigned int start2,
+          unsigned int size2) 
 { 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    vec1[i] -= vec2[i];
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    vec1[i+start1] -= vec2[i+start2];
 }
 
diff --git a/auxiliary/vector/align1/mul_add.cl b/auxiliary/vector/align1/mul_add.cl
index 233fd8f..72cc286 100644
--- a/auxiliary/vector/align1/mul_add.cl
+++ b/auxiliary/vector/align1/mul_add.cl
@@ -1,15 +1,20 @@
 
 __kernel void mul_add(
           __global const float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * fac,
           __global const float * vec2,
+          unsigned int start2,
+          unsigned int size2,
           __global float * result,
-          unsigned int size
+          unsigned int start3,
+          unsigned int size3
           ) 
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    result[i] = vec1[i] * factor + vec2[i];
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    result[i+start3] = vec1[i+start1] * factor + vec2[i+start2];
 }
 
 
diff --git a/auxiliary/vector/align1/mul_sub.cl b/auxiliary/vector/align1/mul_sub.cl
index 37d5622..860e867 100644
--- a/auxiliary/vector/align1/mul_sub.cl
+++ b/auxiliary/vector/align1/mul_sub.cl
@@ -2,14 +2,19 @@
 ///// multiply subtract:
 __kernel void mul_sub(
           __global const float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * fac,
           __global const float * vec2,
+          unsigned int start2,
+          unsigned int size2,
           __global float * result,
-          unsigned int size
+          unsigned int start3,
+          unsigned int size3
           ) 
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    result[i] = vec1[i] * factor - vec2[i];
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    result[i+start3] = vec1[i+start1] * factor - vec2[i+start2];
 }
 
diff --git a/auxiliary/vector/align1/mult.cl b/auxiliary/vector/align1/mult.cl
index 58313ea..1915983 100644
--- a/auxiliary/vector/align1/mult.cl
+++ b/auxiliary/vector/align1/mult.cl
@@ -1,12 +1,15 @@
 
 __kernel void mult(
           __global const float * vec,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * fac, 
           __global float * result,
-          unsigned int size) 
+          unsigned int start3,
+          unsigned int size3) 
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    result[i] = vec[i] * factor;
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    result[i+start3] = vec[i+start1] * factor;
 }
 
diff --git a/auxiliary/vector/align1/norm_1.cl b/auxiliary/vector/align1/norm_1.cl
index 3c4da7d..006ab3a 100644
--- a/auxiliary/vector/align1/norm_1.cl
+++ b/auxiliary/vector/align1/norm_1.cl
@@ -29,13 +29,14 @@ float impl_norm_1(
 
 __kernel void norm_1(
           __global const float * vec,
-          unsigned int size,
+          unsigned int start1,
+          unsigned int size1,
           __local float * tmp_buffer,
           global float * group_buffer)
 {
   float tmp = impl_norm_1(vec,
-                          (      get_group_id(0) * size) / get_num_groups(0),
-                          ((get_group_id(0) + 1) * size) / get_num_groups(0),
+                          (      get_group_id(0) * size1) / get_num_groups(0) + start1,
+                          ((get_group_id(0) + 1) * size1) / get_num_groups(0) + start1,
                           tmp_buffer);
   
   if (get_local_id(0) == 0)
diff --git a/auxiliary/vector/align1/norm_2.cl b/auxiliary/vector/align1/norm_2.cl
index 6633338..bc45d17 100644
--- a/auxiliary/vector/align1/norm_2.cl
+++ b/auxiliary/vector/align1/norm_2.cl
@@ -32,13 +32,14 @@ float impl_norm_2(
 
 __kernel void norm_2(
           __global const float * vec,
-          unsigned int size,
+          unsigned int start1,
+          unsigned int size1,
           __local float * tmp_buffer,
           global float * group_buffer)
 {
   float tmp = impl_norm_2(vec,
-                          (      get_group_id(0) * size) / get_num_groups(0),
-                          ((get_group_id(0) + 1) * size) / get_num_groups(0),
+                          (      get_group_id(0) * size1) / get_num_groups(0) + start1,
+                          ((get_group_id(0) + 1) * size1) / get_num_groups(0) + start1,
                           tmp_buffer);
   
   if (get_local_id(0) == 0)
diff --git a/auxiliary/vector/align1/norm_inf.cl b/auxiliary/vector/align1/norm_inf.cl
index 02e23cc..5eaf719 100644
--- a/auxiliary/vector/align1/norm_inf.cl
+++ b/auxiliary/vector/align1/norm_inf.cl
@@ -24,13 +24,14 @@ float impl_norm_inf(
 
 __kernel void norm_inf(
           __global const float * vec,
-          unsigned int size,
+          unsigned int start1,
+          unsigned int size1,
           __local float * tmp_buffer,
           global float * group_buffer)
 {
   float tmp = impl_norm_inf(vec,
-                          (      get_group_id(0) * size) / get_num_groups(0),
-                          ((get_group_id(0) + 1) * size) / get_num_groups(0),
+                          (      get_group_id(0) * size1) / get_num_groups(0) + start1,
+                          ((get_group_id(0) + 1) * size1) / get_num_groups(0) + start1,
                           tmp_buffer);
   
   if (get_local_id(0) == 0)
diff --git a/auxiliary/vector/align1/plane_rotation.cl b/auxiliary/vector/align1/plane_rotation.cl
index 4a85d9a..28d6c91 100644
--- a/auxiliary/vector/align1/plane_rotation.cl
+++ b/auxiliary/vector/align1/plane_rotation.cl
@@ -2,21 +2,24 @@
 ////// plane rotation: (x,y) <- (\alpha x + \beta y, -\beta x + \alpha y)
 __kernel void plane_rotation(
           __global float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global float * vec2, 
+          unsigned int start2,
+          unsigned int size2,
           float alpha,
-          float beta,
-          unsigned int size) 
+          float beta) 
 { 
   float tmp1 = 0;
   float tmp2 = 0;
 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
   {
-    tmp1 = vec1[i];
-    tmp2 = vec2[i];
+    tmp1 = vec1[i+start1];
+    tmp2 = vec2[i+start2];
     
-    vec1[i] = alpha * tmp1 + beta * tmp2;
-    vec2[i] = alpha * tmp2 - beta * tmp1;
+    vec1[i+start1] = alpha * tmp1 + beta * tmp2;
+    vec2[i+start2] = alpha * tmp2 - beta * tmp1;
   }
 
 }
diff --git a/auxiliary/vector/align1/sqrt_sum.cl b/auxiliary/vector/align1/sqrt_sum.cl
index 8454323..3debe8a 100644
--- a/auxiliary/vector/align1/sqrt_sum.cl
+++ b/auxiliary/vector/align1/sqrt_sum.cl
@@ -2,20 +2,20 @@
 
 __kernel void sqrt_sum(
           __global float * vec1,
-          __global float * result,
-          unsigned int size) 
+          unsigned int start1,
+          unsigned int size1,
+          __global float * result) 
 { 
-  //parallel reduction on global memory:  
-  
+  //parallel reduction on global memory: (make sure get_global_size(0) is a power of 2)
   for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)
   {
     if (get_global_id(0) < stride)
-      vec1[get_global_id(0)] += vec1[get_global_id(0)+stride];
+      vec1[get_global_id(0)+start1] += vec1[get_global_id(0)+start1+stride];
     barrier(CLK_GLOBAL_MEM_FENCE);
   }
   
   if (get_global_id(0) == 0)
-    *result = sqrt(vec1[0]);
+    *result = sqrt(vec1[start1]);
   
 }
 
diff --git a/auxiliary/vector/align1/sub.cl b/auxiliary/vector/align1/sub.cl
index 2156af8..48d3317 100644
--- a/auxiliary/vector/align1/sub.cl
+++ b/auxiliary/vector/align1/sub.cl
@@ -1,11 +1,16 @@
 
 __kernel void sub(
           __global const float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * vec2, 
+          unsigned int start2,
+          unsigned int size2,
           __global float * result,
-          unsigned int size)
+          unsigned int start3,
+          unsigned int size3)
 { 
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
-    result[i] = vec1[i] - vec2[i];
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+    result[i+start3] = vec1[i+start1] - vec2[i+start2];
 }
 
diff --git a/auxiliary/vector/align1/sum.cl b/auxiliary/vector/align1/sum.cl
index 7f3f9fd..7e51c52 100644
--- a/auxiliary/vector/align1/sum.cl
+++ b/auxiliary/vector/align1/sum.cl
@@ -2,14 +2,15 @@
 
 __kernel void sum(
           __global float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global float * result) 
 { 
-  //parallel reduction on global memory:  
-  
+  //parallel reduction on global memory (make sure get_global_size(0) is a power of 2)
   for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)
   {
     if (get_global_id(0) < stride)
-      vec1[get_global_id(0)] += vec1[get_global_id(0)+stride];
+      vec1[get_global_id(0)+start1] += vec1[get_global_id(0)+start1+stride];
     barrier(CLK_GLOBAL_MEM_FENCE);
   }
   
diff --git a/auxiliary/vector/align1/swap.cl b/auxiliary/vector/align1/swap.cl
index 25fa2e6..b1bc41e 100644
--- a/auxiliary/vector/align1/swap.cl
+++ b/auxiliary/vector/align1/swap.cl
@@ -3,16 +3,19 @@
 ////// swap:
 __kernel void swap(
           __global float * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global float * vec2,
-          unsigned int size
+          unsigned int start2,
+          unsigned int size2
           ) 
 { 
   float tmp;
-  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
+  for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
   {
-    tmp = vec2[i];
-    vec2[i] = vec1[i];
-    vec1[i] = tmp;
+    tmp = vec2[i+start2];
+    vec2[i+start2] = vec1[i+start1];
+    vec1[i+start1] = tmp;
   }
 }
  
diff --git a/auxiliary/vector/align1/vmax.cl b/auxiliary/vector/align1/vmax.cl
index 2d3d1ae..0888b53 100644
--- a/auxiliary/vector/align1/vmax.cl
+++ b/auxiliary/vector/align1/vmax.cl
@@ -2,18 +2,19 @@
 
 __kernel void vmax(
           __global float * vec1,
-          __global float * result,
-          unsigned int size) 
+          unsigned int start1,
+          unsigned int size1,
+          __global float * result) 
 { 
-  //parallel reduction on global memory:
+  //parallel reduction on global memory (make sure that size is a power of 2)
   for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)
   {
     if (get_global_id(0) < stride)
-      vec1[get_global_id(0)] = fmax(vec1[get_global_id(0)+stride], vec1[get_global_id(0)]);
+      vec1[get_global_id(0)+start1] = fmax(vec1[get_global_id(0)+start1+stride], vec1[get_global_id(0)+start1]);
     barrier(CLK_GLOBAL_MEM_FENCE);
   }
   
   if (get_global_id(0) == 0)
-    *result = vec1[0];  
+    *result = vec1[start1];
 }
 
diff --git a/auxiliary/vector/align16/add.cl b/auxiliary/vector/align16/add.cl
index 23086fe..6e786b0 100644
--- a/auxiliary/vector/align16/add.cl
+++ b/auxiliary/vector/align16/add.cl
@@ -1,12 +1,18 @@
 
 __kernel void add(
           __global const float16 * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float16 * vec2, 
+          unsigned int start2,
+          unsigned int size2,
           __global float16 * result,
-          unsigned int size)
+          unsigned int start3,
+          unsigned int size3)
 { 
-  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
-    result[i] = vec1[i] + vec2[i];
+  unsigned int i_end = size/16;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    result[i+start3] = vec1[i+start1] + vec2[i+start2];
 }
 
 
diff --git a/auxiliary/vector/align16/cpu_inplace_mul.cl b/auxiliary/vector/align16/cpu_inplace_mul.cl
index 8ba7169..2eba4bf 100644
--- a/auxiliary/vector/align16/cpu_inplace_mul.cl
+++ b/auxiliary/vector/align16/cpu_inplace_mul.cl
@@ -1,10 +1,12 @@
 
 __kernel void cpu_inplace_mult(
           __global float16 * vec,
-          float factor, 
-          unsigned int size) 
+          unsigned int start1,
+          unsigned int size1,
+          float factor) 
 { 
-  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
-    vec[i] *= factor;
+  unsigned int i_end = size1/16;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    vec[i+start1] *= factor;
 }
 
diff --git a/auxiliary/vector/align16/cpu_mult.cl b/auxiliary/vector/align16/cpu_mult.cl
index 544b2f5..6c36326 100644
--- a/auxiliary/vector/align16/cpu_mult.cl
+++ b/auxiliary/vector/align16/cpu_mult.cl
@@ -1,11 +1,15 @@
 
 __kernel void cpu_mult(
           __global const float16 * vec,
+          unsigned int start1,
+          unsigned int size1,
           float factor, 
           __global float16 * result,
-          unsigned int size) 
+          unsigned int start2,
+          unsigned int size2) 
 { 
-  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
-    result[i] = vec[i] * factor;
+  unsigned int i_end = size1/16;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    result[i+start2] = vec[i+start1] * factor;
 }
 
diff --git a/auxiliary/vector/align16/divide.cl b/auxiliary/vector/align16/divide.cl
index 608ae2d..a3b3119 100644
--- a/auxiliary/vector/align16/divide.cl
+++ b/auxiliary/vector/align16/divide.cl
@@ -2,13 +2,17 @@
 //Note: 'div' cannot be used because of complaints by the jit-compiler
 __kernel void divide(
           __global const float16 * vec,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * fac,  //note: CPU variant is mapped to prod_scalar
           __global float16 * result,
-          unsigned int size)  
+          unsigned int start2,
+          unsigned int size2)  
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
-    result[i] = vec[i] / factor;
+  unsigned int i_end = size/16;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    result[i+start2] = vec[i+start1] / factor;
 }
 
 
diff --git a/auxiliary/vector/align16/inplace_add.cl b/auxiliary/vector/align16/inplace_add.cl
index 6f9d194..76f4e45 100644
--- a/auxiliary/vector/align16/inplace_add.cl
+++ b/auxiliary/vector/align16/inplace_add.cl
@@ -1,10 +1,14 @@
 
 __kernel void inplace_add(
           __global float16 * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float16 * vec2,
-          unsigned int size) 
+          unsigned int start2,
+          unsigned int size2) 
 { 
-  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
-    vec1[i] += vec2[i];
+  unsigned int i_end = size1/16;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    vec1[i+start1] += vec2[i+start2];
 }
 
diff --git a/auxiliary/vector/align16/inplace_divide.cl b/auxiliary/vector/align16/inplace_divide.cl
index 6b05848..01150e8 100644
--- a/auxiliary/vector/align16/inplace_divide.cl
+++ b/auxiliary/vector/align16/inplace_divide.cl
@@ -2,11 +2,13 @@
 
 __kernel void inplace_divide(
           __global float16 * vec,
-          __global const float * fac,  //note: CPU variant is mapped to prod_scalar
-          unsigned int size) 
+          unsigned int start1,
+          unsigned int size1,
+          __global const float * fac)  //note: CPU variant is mapped to prod_scalar
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
-    vec[i] /= factor;
+  unsigned int i_end = size1/16;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    vec[i+start1] /= factor;
 }
 
diff --git a/auxiliary/vector/align16/inplace_mult.cl b/auxiliary/vector/align16/inplace_mult.cl
index d10d974..51df457 100644
--- a/auxiliary/vector/align16/inplace_mult.cl
+++ b/auxiliary/vector/align16/inplace_mult.cl
@@ -1,11 +1,13 @@
 
 __kernel void inplace_mult(
           __global float16 * vec,
-          __global const float * fac, 
-          unsigned int size) 
+          unsigned int start1,
+          unsigned int size1,
+          __global const float * fac) 
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
-    vec[i] *= factor;
+  unsigned int i_end = size1/16;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    vec[i+start1] *= factor;
 }
 
diff --git a/auxiliary/vector/align16/inplace_sub.cl b/auxiliary/vector/align16/inplace_sub.cl
index 5194a1a..4e67918 100644
--- a/auxiliary/vector/align16/inplace_sub.cl
+++ b/auxiliary/vector/align16/inplace_sub.cl
@@ -1,11 +1,15 @@
 
 __kernel void inplace_sub(
           __global float16 * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float16 * vec2,
-          unsigned int size) 
+          unsigned int start2,
+          unsigned int size2) 
 { 
-  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
-    vec1[i] -= vec2[i];
+  unsigned int i_end = size1/16;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    vec1[i+start1] -= vec2[i+start2];
 }
 
 
diff --git a/auxiliary/vector/align16/mult.cl b/auxiliary/vector/align16/mult.cl
index a9f4929..8af3ff7 100644
--- a/auxiliary/vector/align16/mult.cl
+++ b/auxiliary/vector/align16/mult.cl
@@ -1,12 +1,16 @@
 
 __kernel void mult(
           __global const float16 * vec,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * fac, 
           __global float16 * result,
-          unsigned int size) 
+          unsigned int start2,
+          unsigned int size2) 
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
-    result[i] = vec[i] * factor;
+  unsigned int i_end = size1/16;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    result[i+start2] = vec[i+start1] * factor;
 }
 
diff --git a/auxiliary/vector/align16/sub.cl b/auxiliary/vector/align16/sub.cl
index a10456d..bcccdc6 100644
--- a/auxiliary/vector/align16/sub.cl
+++ b/auxiliary/vector/align16/sub.cl
@@ -1,12 +1,18 @@
 
 __kernel void sub(
           __global const float16 * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float16 * vec2, 
+          unsigned int start2,
+          unsigned int size2,
           __global float16 * result,
-          unsigned int size)
+          unsigned int start3,
+          unsigned int size3)
 { 
-  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
-    result[i] = vec1[i] - vec2[i];
+  unsigned int i_end = size1 / 16;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    result[i+start3] = vec1[i+start1] - vec2[i+start2];
 }
 
 
diff --git a/auxiliary/vector/align4/cpu_inplace_mul_add.cl b/auxiliary/vector/align4/cpu_inplace_mul_add.cl
index 385ad6c..bddcf43 100644
--- a/auxiliary/vector/align4/cpu_inplace_mul_add.cl
+++ b/auxiliary/vector/align4/cpu_inplace_mul_add.cl
@@ -1,12 +1,15 @@
 
 __kernel void cpu_inplace_mul_add(
           __global float4 * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float4 * vec2,
-          float factor,
-          unsigned int size
-          ) 
+          unsigned int start2,
+          unsigned int size2,
+          float factor) 
 { 
-  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))
-    vec1[i] += vec2[i] * factor;
+  unsigned int i_end = size1/4;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    vec1[i+start1] += vec2[i+start2] * factor;
 }
 
diff --git a/auxiliary/vector/align4/cpu_mul_add.cl b/auxiliary/vector/align4/cpu_mul_add.cl
index f5a24f5..0232f8f 100644
--- a/auxiliary/vector/align4/cpu_mul_add.cl
+++ b/auxiliary/vector/align4/cpu_mul_add.cl
@@ -1,13 +1,18 @@
 
 __kernel void cpu_mul_add(
           __global const float4 * vec1,
+          unsigned int start1,
+          unsigned int size1,
           float factor,
           __global const float4 * vec2,
+          unsigned int start2,
+          unsigned int size2,
           __global float4 * result,
-          unsigned int size
-          ) 
+          unsigned int start3,
+          unsigned int size3) 
 { 
-  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))
-    result[i] = vec1[i] * factor + vec2[i];
+  unsigned int i_end = size1/4;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    result[i+start3] = vec1[i+start1] * factor + vec2[i+start2];
 }
 
diff --git a/auxiliary/vector/align4/inplace_div_add.cl b/auxiliary/vector/align4/inplace_div_add.cl
index 9fd2f8a..dd36960 100644
--- a/auxiliary/vector/align4/inplace_div_add.cl
+++ b/auxiliary/vector/align4/inplace_div_add.cl
@@ -1,14 +1,17 @@
 
 __kernel void inplace_div_add(
           __global float4 * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float4 * vec2,
-          __global const float * fac,   //CPU variant is mapped to mult_add
-          unsigned int size
-          ) 
+          unsigned int start2,
+          unsigned int size2,
+          __global const float * fac)   //CPU variant is mapped to mult_add
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))
-    vec1[i] -= vec2[i] / factor;
+  unsigned int i_end = size1 / 4;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    vec1[i+start1] -= vec2[i+start2] / factor;
 }
 
 
diff --git a/auxiliary/vector/align4/inplace_div_sub.cl b/auxiliary/vector/align4/inplace_div_sub.cl
index f5122b4..40ff851 100644
--- a/auxiliary/vector/align4/inplace_div_sub.cl
+++ b/auxiliary/vector/align4/inplace_div_sub.cl
@@ -2,14 +2,17 @@
 
 __kernel void inplace_div_sub(
           __global float4 * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float4 * vec2,
-          __global const float * fac,   //CPU variant is mapped to mult_add
-          unsigned int size
-          ) 
+          unsigned int start2,
+          unsigned int size2,
+          __global const float * fac)   //CPU variant is mapped to mult_add
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))
-    vec1[i] -= vec2[i] / factor;
+  unsigned int i_end = size1/4;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    vec1[i+start1] -= vec2[i+start2] / factor;
 }
 
 
diff --git a/auxiliary/vector/align4/inplace_mul_add.cl b/auxiliary/vector/align4/inplace_mul_add.cl
index 5ee8733..aab7484 100644
--- a/auxiliary/vector/align4/inplace_mul_add.cl
+++ b/auxiliary/vector/align4/inplace_mul_add.cl
@@ -1,14 +1,16 @@
 
 __kernel void inplace_mul_add(
           __global float4 * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float4 * vec2,
-          __global const float * fac,
-          unsigned int size
-          ) 
+          unsigned int start2,
+          unsigned int size2,
+          __global const float * fac) 
 { 
   float factor = *fac;
-  unsigned int size_div_4 = size >> 2;
+  unsigned int size_div_4 = size1/4;
   for (unsigned int i = get_global_id(0); i < size_div_4; i += get_global_size(0))
-    vec1[i] += vec2[i] * factor;
+    vec1[i+start1] += vec2[i+start2] * factor;
 }
 
diff --git a/auxiliary/vector/align4/inplace_mul_sub.cl b/auxiliary/vector/align4/inplace_mul_sub.cl
index 5cd6e9b..5c5f750 100644
--- a/auxiliary/vector/align4/inplace_mul_sub.cl
+++ b/auxiliary/vector/align4/inplace_mul_sub.cl
@@ -1,14 +1,17 @@
 
 __kernel void inplace_mul_sub(
           __global float4 * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float4 * vec2,
-          __global const float * fac,   //CPU variant is mapped to mult_add
-          unsigned int size
-          ) 
+          unsigned int start2,
+          unsigned int size2,
+          __global const float * fac)   //CPU variant is mapped to mult_add
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))
-    vec1[i] -= vec2[i] * factor;
+  unsigned int i_end = size/4;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    vec1[i+start1] -= vec2[i+start2] * factor;
 }
 
 
diff --git a/auxiliary/vector/align4/mul_add.cl b/auxiliary/vector/align4/mul_add.cl
index 51dfc08..39327bc 100644
--- a/auxiliary/vector/align4/mul_add.cl
+++ b/auxiliary/vector/align4/mul_add.cl
@@ -1,14 +1,19 @@
 
 __kernel void mul_add(
           __global const float4 * vec1,
+          unsigned int start1,
+          unsigned int size1,
           __global const float * fac,
           __global const float4 * vec2,
+          unsigned int start2,
+          unsigned int size2,
           __global float4 * result,
-          unsigned int size
-          ) 
+          unsigned int start3,
+          unsigned int size3) 
 { 
   float factor = *fac;
-  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))
-    result[i] = vec1[i] * factor + vec2[i];
+  unsigned int i_end = size1/4;
+  for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+    result[i+start3] = vec1[i+start1] * factor + vec2[i+start2];
 }
 
diff --git a/build/README b/build/README
index 0d8bfb0..c82c8ab 100644
--- a/build/README
+++ b/build/README
@@ -1 +1,9 @@
-This is the build directory of ViennaCL.
+This is the build directory of ViennaCL. Build here using
+$> cmake ..
+$> make
+A wider range of options is available with 
+$> ccmake ..
+or
+#> cmake-gui ..
+
+If you wish to use Boost, but CMake cannot find it, customize BOOSTPATH variable in ../CMakeLists.txt.
diff --git a/cmake/FindMTL.cmake b/cmake/FindMTL.cmake
new file mode 100644
index 0000000..9f45d6f
--- /dev/null
+++ b/cmake/FindMTL.cmake
@@ -0,0 +1,7 @@
+SET(MTL_INCLUDE_DIRS "${MTL_DIR}/../../include")
+find_package(Boost 1.36 REQUIRED)
+if(Boost_FOUND)
+	LIST(APPEND MTL_INCLUDE_DIRS ${Boost_INCLUDE_DIRS})
+endif(Boost_FOUND)
+
+include_directories(${MTL_INCLUDE_DIRS})
diff --git a/cmake/FindOpenCL.cmake b/cmake/FindOpenCL.cmake
new file mode 100644
index 0000000..e77ee3c
--- /dev/null
+++ b/cmake/FindOpenCL.cmake
@@ -0,0 +1,80 @@
+# - Find the OpenCL headers and library
+#
+# Defines the following if found:
+#  OPENCL_FOUND        : TRUE if found, FALSE otherwise
+#  OPENCL_INCLUDE_DIRS : Include directories for OpenCL
+#  OPENCL_LIBRARIES    : The libraries to link against
+#
+# The user can set the OPENCLROOT environment variable to help finding OpenCL
+# if it is installed in a non-standard place.
+
+set(ENV_ATISTREAMSDKROOT $ENV{ATISTREAMSDKROOT})
+if(ENV_ATISTREAMSDKROOT)
+ set(ENV_OPENCLROOT $ENV{ATISTREAMSDKROOT})
+endif(ENV_ATISTREAMSDKROOT)
+
+set(ENV_AMDAPPSDKROOT $ENV{AMDAPPSDKROOT})
+if(ENV_AMDAPPSDKROOT)
+ set(ENV_OPENCLROOT $ENV{AMDAPPSDKROOT})
+endif(ENV_AMDAPPSDKROOT)
+
+set(ENV_OPENCLROOT2 $ENV{OPENCLROOT})
+if(ENV_OPENCLROOT2)
+ set(ENV_OPENCLROOT $ENV{OPENCLROOT})
+endif(ENV_OPENCLROOT2)
+
+if(ENV_OPENCLROOT)
+  find_path(
+    OPENCL_INCLUDE_DIR
+    NAMES CL/cl.h OpenCL/cl.h
+    PATHS ${ENV_OPENCLROOT}/include
+    #NO_DEFAULT_PATH  #uncomment this is you wish to surpress the use of default paths for OpenCL
+    )
+
+  if (("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
+    if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+      set(OPENCL_LIB_SEARCH_PATH
+          ${OPENCL_LIB_SEARCH_PATH}
+          ${ENV_OPENCLROOT}/lib/x86)
+    else(CMAKE_SIZEOF_VOID_P EQUAL 4)
+      set(OPENCL_LIB_SEARCH_PATH
+          ${OPENCL_LIB_SEARCH_PATH}
+          ${ENV_OPENCLROOT}/lib/x86_64)
+    endif(CMAKE_SIZEOF_VOID_P EQUAL 4)
+  endif(("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
+  find_library(
+    OPENCL_LIBRARY
+    NAMES OpenCL
+    PATHS ${OPENCL_LIB_SEARCH_PATH}
+    #NO_DEFAULT_PATH  #uncomment this is you wish to surpress the use of default paths for OpenCL
+    )
+else(ENV_OPENCLROOT)
+  find_path(
+    OPENCL_INCLUDE_DIR
+    NAMES CL/cl.h OpenCL/cl.h
+    )
+
+  find_library(
+    OPENCL_LIBRARY
+    NAMES OpenCL
+    )
+endif(ENV_OPENCLROOT)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+  OPENCL
+  DEFAULT_MSG
+  OPENCL_LIBRARY OPENCL_INCLUDE_DIR
+  )
+
+if(OPENCL_FOUND)
+  set(OPENCL_LIBRARIES ${OPENCL_LIBRARY})
+else(OPENCL_FOUND)
+  set(OPENCL_LIBRARIES)
+endif(OPENCL_FOUND)
+
+mark_as_advanced(
+  OPENCL_INCLUDE_DIR
+  OPENCL_LIBRARY
+  )
+
diff --git a/cmake/FindViennaProfiler.cmake b/cmake/FindViennaProfiler.cmake
new file mode 100644
index 0000000..c7e165d
--- /dev/null
+++ b/cmake/FindViennaProfiler.cmake
@@ -0,0 +1,33 @@
+# - Find the headers and libraries required by ViennaProfiler
+#
+# Defines the following if found:
+#  VIENNAPROFILER_FOUND        : TRUE if found, FALSE otherwise
+#  VIENNAPROFILER_INCLUDE_DIRS : Include directories for MySQL++
+#  VIENNAPROFILER_LIBRARIES    : The libraries to link against
+
+# first find MySQL
+find_path(MYSQL_INCLUDE_DIR mysql.h PATH_SUFFIXES mysql)
+find_library(MYSQL_LIBRARY mysqlclient)
+
+# now find MySQL++
+if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
+   get_filename_component(_MYSQLPPROOT "${MYSQL_INCLUDE_DIR}" PATH)
+   find_path(MYSQLPP_INCLUDE_DIR mysql++/mysql++.h
+      HINTS "${_MYSQLPPROOT}/include")
+   find_library(MYSQLPP_LIBRARY mysqlpp
+      HINTS "${_MYSQLPPROOT}/lib")
+endif()
+
+# then find ViennaProfiler
+find_path(VIENNAPROFILER_INCLUDE_DIR viennaprofiler/profiler.hpp)
+
+mark_as_advanced(MYSQL_INCLUDE_DIR MYSQL_LIBRARY MYSQLPP_INCLUDE_DIR
+   MYSQLPP_LIBRARY VIENNAPROFILER_INCLUDE_DIR)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(ViennaProfiler VIENNAPROFILER_INCLUDE_DIR
+   MYSQLPP_INCLUDE_DIR MYSQLPP_LIBRARY MYSQL_INCLUDE_DIR MYSQL_LIBRARY)
+
+set(VIENNAPROFILER_INCLUDE_DIRS "${VIENNAPROFILER_INCLUDE_DIR}"
+   "${MYSQL_INCLUDE_DIR}" "${MYSQLPP_INCLUDE_DIR}")
+set(VIENNAPROFILER_LIBRARIES "${MYSQL_LIBRARY}" "${MYSQLPP_LIBRARY}")
diff --git a/cmake/ViennaCLCommon.cmake b/cmake/ViennaCLCommon.cmake
new file mode 100644
index 0000000..5ae0a74
--- /dev/null
+++ b/cmake/ViennaCLCommon.cmake
@@ -0,0 +1,129 @@
+
+include(CTest)
+include(CMakeDependentOption)
+
+# Installation directories
+##########################
+
+set(INSTALL_INCLUDE_DIR include CACHE PATH
+   "Installation directory for headers")
+if(WIN32 AND NOT CYGWIN)
+   set(DEF_INSTALL_CMAKE_DIR CMake)
+else()
+   set(DEF_INSTALL_CMAKE_DIR lib/cmake/viennacl)
+endif()
+set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH
+   "Installation directory for CMake files")
+
+if(NOT IS_ABSOLUTE "${INSTALL_CMAKE_DIR}")
+   set(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}")
+endif()
+file(RELATIVE_PATH CONF_REL_INSTALL_PREFIX "${INSTALL_CMAKE_DIR}"
+   "${CMAKE_INSTALL_PREFIX}")
+if(NOT IS_ABSOLUTE "${INSTALL_INCLUDE_DIR}")
+   set(INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_INCLUDE_DIR}")
+endif()
+file(RELATIVE_PATH CONF_REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}"
+   "${INSTALL_INCLUDE_DIR}")
+
+# User options
+##############
+
+option(BUILD_EXAMPLES "Build example programs" ON)
+
+# If you are interested in the impact of different kernel parameters on
+# performance, you may want to give ViennaProfiler a try (see
+# http://sourceforge.net/projects/viennaprofiler/) Set your connection
+# parameters in examples/parameters/common_vprof.hpp accordingly.
+cmake_dependent_option(ENABLE_VIENNAPROFILER
+   "Enable examples using ViennaProfiler" OFF BUILD_EXAMPLES OFF)
+
+
+# If you want to build the examples that use boost::numeric::ublas, enable
+# the following:
+cmake_dependent_option(ENABLE_UBLAS "Enable examples using uBLAS" OFF
+   BUILD_EXAMPLES OFF)
+
+# If you want to build the examples that use Eigen
+cmake_dependent_option(ENABLE_EIGEN "Enable examples that use Eigen" OFF
+   BUILD_EXAMPLES OFF)
+
+# If you want to build the examples that use MTL4
+cmake_dependent_option(ENABLE_MTL4 "Enable examples that use MTL4" OFF
+   BUILD_EXAMPLES OFF)
+
+cmake_dependent_option(ENABLE_PEDANTIC_FLAGS "Enable pedantic compiler flags"
+   ON CMAKE_COMPILER_IS_GNUCXX OFF)
+
+mark_as_advanced(BOOSTPATH ENABLE_VIENNAPROFILER ENABLE_UBLAS ENABLE_EIGEN
+   ENABLE_MTL4 ENABLE_PEDANTIC_FLAGS)
+
+# Find prerequisites
+####################
+
+# Boost:
+IF (BOOSTPATH)
+ SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} ${BOOSTPATH})
+ SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${BOOSTPATH}/lib")
+ SET(BOOST_ROOT ${BOOSTPATH})
+ENDIF (BOOSTPATH)
+
+
+if(BUILD_EXAMPLES OR BUILD_TESTING OR VIENNACL_SRC_DIST)
+   set(Boost_USE_MULTITHREADED TRUE)
+   find_package(Boost REQUIRED COMPONENTS filesystem system)
+endif()
+
+find_package(OpenCL REQUIRED)
+find_package(OpenMP)
+
+if(ENABLE_VIENNAPROFILER)
+   find_package(ViennaProfiler REQUIRED)
+endif()
+
+if(ENABLE_EIGEN)
+   # find Eigen
+   find_path(EIGEN_INCLUDE_DIR Eigen/Dense)
+   if(NOT EIGEN_INCLUDE_DIR)
+      message(SEND_ERROR "Failed to find Eigen")
+   endif()
+   mark_as_advanced(EIGEN_INCLUDE_DIR)
+endif()
+
+if(ENABLE_MTL4)
+   # MTL4 comes with a MTLConfig.cmake
+   find_package(MTL REQUIRED)
+endif()
+
+include_directories(
+   ${PROJECT_BINARY_DIR}
+   ${PROJECT_SOURCE_DIR}
+   ${OPENCL_INCLUDE_DIRS})
+
+# Set high warning level on GCC
+if(ENABLE_PEDANTIC_FLAGS)
+   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic")
+endif()
+
+# Export
+########
+
+configure_file(cmake/FindOpenCL.cmake
+   ${PROJECT_BINARY_DIR}/FindOpenCL.cmake COPYONLY)
+
+configure_file(cmake/ViennaCLConfig.cmake.in
+   ${PROJECT_BINARY_DIR}/ViennaCLConfig.cmake @ONLY)
+
+configure_file(cmake/ViennaCLConfigVersion.cmake.in
+   ${PROJECT_BINARY_DIR}/ViennaCLConfigVersion.cmake @ONLY)
+
+export(PACKAGE ViennaCL)
+
+# Install
+#########
+
+install(FILES
+   ${PROJECT_BINARY_DIR}/FindOpenCL.cmake
+   ${PROJECT_BINARY_DIR}/ViennaCLConfig.cmake
+   ${PROJECT_BINARY_DIR}/ViennaCLConfigVersion.cmake
+   DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT dev)
diff --git a/cmake/ViennaCLConfig.cmake.in b/cmake/ViennaCLConfig.cmake.in
new file mode 100644
index 0000000..f98e28d
--- /dev/null
+++ b/cmake/ViennaCLConfig.cmake.in
@@ -0,0 +1,32 @@
+#- CMake configuration file for ViennaCL
+# Sets the following variables if ViennaCL was found:
+#  VIENNACL_FOUND         : TRUE if found
+#  VIENNACL_INCLUDE_DIRS  : Include-directories to be used
+#  VIENNACL_LIBRARIES     : Libraries to link against
+# Although ViennaCL is a headers-only library, it still requires an OpenCL
+# implementation, which is why it is necessary to link against a library.
+
+# Compute paths
+get_filename_component(VIENNACL_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+if(EXISTS "${VIENNACL_CMAKE_DIR}/CMakeCache.txt")
+   # in build tree
+   get_filename_component(VIENNACL_INSTALL_PREFIX "${VIENNACL_CMAKE_DIR}" PATH)
+   set(VIENNACL_INCLUDE_DIR "${_VIENNACL_PREFIX}")
+else()
+   set(VIENNACL_INSTALL_PREFIX "${VIENNACL_CMAKE_DIR}/@CONF_REL_INSTALL_PREFIX@")
+   set(VIENNACL_INCLUDE_DIR "${VIENNACL_CMAKE_DIR}/@CONF_REL_INCLUDE_DIR@")
+endif()
+
+# Find OpenCL
+set(_VIENNACL_CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}")
+list(INSERT CMAKE_MODULE_PATH 0 "${VIENNACL_CMAKE_DIR}")
+if(ViennaCL_FIND_REQUIRED)
+   find_package(OpenCL QUIET REQUIRED)
+else()
+   find_package(OpenCL QUIET)
+endif()
+set(CMAKE_MODULE_PATH "${_VIENNACL_CMAKE_MODULE_PATH}")
+
+# Set up variables
+set(VIENNACL_INCLUDE_DIRS ${VIENNACL_INCLUDE_DIR} ${OPENCL_INCLUDE_DIRS})
+set(VIENNACL_LIBRARIES ${OPENCL_LIBRARIES})
diff --git a/cmake/ViennaCLConfigVersion.cmake.in b/cmake/ViennaCLConfigVersion.cmake.in
new file mode 100644
index 0000000..0c5d7a7
--- /dev/null
+++ b/cmake/ViennaCLConfigVersion.cmake.in
@@ -0,0 +1,11 @@
+set(PACKAGE_VERSION "@VERSION@")
+set(PACKAGE_VERSION_COMPATIBLE FALSE)
+if(NOT "${PACKAGE_FIND_VERSION}" VERSION_LESS "${PACKAGE_VERSION}")
+   if(NOT PACKAGE_FIND_VERSION_EXACT OR
+         "${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}")
+      set(PACKAGE_VERSION_COMPATIBLE TRUE)
+   endif()
+   if(PACKAGE_FIND_VERSION_EXACT AND PACKAGE_VERSION_COMPATIBLE)
+      set(PACKAGE_VERSION_EXACT TRUE)
+   endif()
+endif()
diff --git a/cmake/copymanual.cmake b/cmake/copymanual.cmake
new file mode 100644
index 0000000..c78185c
--- /dev/null
+++ b/cmake/copymanual.cmake
@@ -0,0 +1,4 @@
+
+file (COPY ${SRC} DESTINATION ${DST} FILES_MATCHING PATTERN "*.tex")
+file (COPY ${SRC} DESTINATION ${DST} FILES_MATCHING PATTERN "*.bst")
+file (COPY ${SRC} DESTINATION ${DST} FILES_MATCHING PATTERN "*.bib")
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100644
index 0000000..1b80cc8
--- /dev/null
+++ b/doc/CMakeLists.txt
@@ -0,0 +1,88 @@
+if(BUILD_DOXYGEN_DOCS)
+   configure_file(Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
+   add_custom_command(OUTPUT
+      ${CMAKE_CURRENT_BINARY_DIR}/doxygen/html/index.html
+      COMMAND ${DOXYGEN_EXECUTABLE}
+      DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+      VERBATIM)
+   # Runs only once
+   add_custom_target(apidoc-all ALL
+      DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doxygen/html/index.html)
+   # For manual updates
+   add_custom_target(apidoc
+      COMMAND ${DOXYGEN_EXECUTABLE}
+      DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+      VERBATIM)
+endif()
+
+if(BUILD_MANUAL)
+   set(MANUAL_SRCS
+      manual/algorithms.tex
+      manual/benchmarks.tex
+      manual/changelogs.tex
+      manual/contributors.tex
+      manual/cover.tex
+      manual/custom-contexts.tex
+      manual/custom-kernels.tex
+      manual/design.tex
+      manual/figures/logo_px200.eps
+      manual/figures/matvec2.eps
+      manual/figures/note.eps
+      manual/figures/solver.eps
+      manual/figures/tip.eps
+      manual/figures/TU_Signet_CMYK.eps
+      manual/IEEEtran_v1.13.bst
+      manual/installation.tex
+      manual/introduction.tex
+      manual/keywords.tex
+      manual/license.tex
+      manual/multi-device.tex
+      manual/operations.tex
+      manual/other-libs.tex
+      manual/setup.tex
+      manual/tuning.tex
+      manual/types.tex
+      manual/versioning.tex
+      manual/viennacl.bib
+      manual/viennacl.tex)
+
+   set(MANUAL_OBJS
+      "${CMAKE_CURRENT_BINARY_DIR}/viennacl.pdf"
+      "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.bbl"
+      "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.blg"
+      "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.dvi"
+      "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.idx"
+      "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.log"
+      "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.out"
+      "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.ps"
+      "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.toc")
+   foreach(f IN LISTS MANUAL_SRCS)
+      configure_file(${f} ${CMAKE_CURRENT_BINARY_DIR}/${f} COPYONLY)
+      if(f MATCHES "(.*)\\.tex$")
+         list(APPEND MANUAL_OBJS
+            "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_MATCH_1}.aux")
+      endif()
+   endforeach()
+
+   add_custom_command(OUTPUT ${MANUAL_OBJS}
+      COMMAND ${LATEX_COMPILER} viennacl.tex
+      COMMAND ${LATEX_COMPILER} viennacl.tex
+      COMMAND ${BIBTEX_COMPILER} viennacl
+      COMMAND ${LATEX_COMPILER} viennacl.tex
+      COMMAND ${BIBTEX_COMPILER} viennacl
+      COMMAND ${LATEX_COMPILER} viennacl.tex
+      COMMAND ${DVIPS_CONVERTER} -Ppdf -G0 -ta4 viennacl.dvi
+      COMMAND ${PS2PDF_CONVERTER} -dPDFSETTINGS=/prepress
+         -dCompatibilityLevel=1.3 -dMAxSubsetPct=100 -dSubsetFonts=true
+         -dEmbedAllFonts=true -sPAPERSIZE=a4 -dAutoRotatePages=/None
+         -dOptimize=true viennacl.ps ../viennacl.pdf
+      DEPENDS ${MANUAL_SRCS}
+      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/manual
+      COMMENT "Generating manual viennacl.pdf"
+      VERBATIM)
+
+   add_custom_target(manual ALL
+      DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/viennacl.pdf")
+endif()
diff --git a/doc/Doxyfile b/doc/Doxyfile
deleted file mode 100644
index 71e7834..0000000
--- a/doc/Doxyfile
+++ /dev/null
@@ -1,1541 +0,0 @@
-# Doxyfile 1.5.8
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file 
-# that follow. The default is UTF-8 which is also the encoding used for all 
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
-# iconv built into libc) for the transcoding. See 
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
-# by quotes) that should identify the project.
-
-PROJECT_NAME           = "ViennaCL - The Vienna Computing Library"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-# This could be handy for archiving the generated documentation or 
-# if some version control system is used.
-
-PROJECT_NUMBER         = 1.1.2
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-# base path where the generated documentation will be put. 
-# If a relative path is entered, it will be relative to the location 
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = doxygen/
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-# 4096 sub-directories (in 2 levels) under the output directory of each output 
-# format and will distribute the generated files over these directories. 
-# Enabling this option can be useful when feeding doxygen a huge amount of 
-# source files, where putting all generated files in the same directory would 
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-# documentation generated by doxygen is written. Doxygen will use this 
-# information to generate all constant output in the proper language. 
-# The default language is English, other supported languages are: 
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
-# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, 
-# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), 
-# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, 
-# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, 
-# Spanish, Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-# include brief member descriptions after the members that are listed in 
-# the file and class documentation (similar to JavaDoc). 
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-# the brief description of a member or function before the detailed description. 
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is 
-# used as the annotated text. Otherwise, the brief description is used as-is. 
-# If left blank, the following values are used ("$name" is automatically 
-# replaced with the name of the entity): "The $name class" "The $name widget" 
-# "The $name file" "is" "provides" "specifies" "contains" 
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       = "The $name class" \
-                         "The $name widget" \
-                         "The $name file" \
-                         is \
-                         provides \
-                         specifies \
-                         contains \
-                         represents \
-                         a \
-                         an \
-                         the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-# Doxygen will generate a detailed section even if there is only a brief 
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
-# inherited members of a class in the documentation of that class as if those 
-# members were ordinary class members. Constructors, destructors and assignment 
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-# path before files name in the file list and in the header files. If set 
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user-defined part of the path. Stripping is 
-# only done if one of the specified strings matches the left-hand part of 
-# the path. The tag can be used to show relative paths in the file list. 
-# If left blank the directory from which doxygen is run is used as the 
-# path to strip.
-
-STRIP_FROM_PATH        = 
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-# the path mentioned in the documentation of a class, which tells 
-# the reader which header file to include in order to use a class. 
-# If left blank only the name of the header file containing the class 
-# definition is used. Otherwise one should specify the include paths that 
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    = 
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful is your file systems 
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments will behave just like regular Qt-style comments 
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
-# interpret the first line (until the first dot) of a Qt-style 
-# comment as the brief description. If set to NO, the comments 
-# will behave just like regular Qt-style comments (thus requiring 
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-# comments) as a brief description. This used to be the default behaviour. 
-# The new default is to treat a multi-line C++ comment block as a detailed 
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
-# a new page for each member. If set to NO, the documentation of a member will 
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 8
-
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user-defined paragraph with heading "Side Effects:". 
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                = 
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
-# sources only. Doxygen will then generate output that is more tailored for C. 
-# For instance, some of the names that are used will be different. The list 
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
-# sources only. Doxygen will then generate output that is more tailored for 
-# Java. For instance, namespaces will be presented as packages, qualified 
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
-# sources only. Doxygen will then generate output that is more tailored for 
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
-# sources. Doxygen will then generate output that is tailored for 
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it parses. 
-# With this tag you can assign which parser to use for a given extension. 
-# Doxygen has a built-in mapping, but you can override or extend it using this tag. 
-# The format is ext=language, where ext is a file extension, and language is one of 
-# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, 
-# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat 
-# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), 
-# use: inc=Fortran f=C
-
-EXTENSION_MAPPING      = 
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
-# to include (a tag file for) the STL sources as input, then you should 
-# set this tag to YES in order to let doxygen match functions declarations and 
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
-# func(std::string) {}). This also make the inheritance and collaboration 
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to 
-# enable parsing support.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
-# Doxygen will parse them like normal C++ but will assume all classes use public 
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter 
-# and setter methods for a property. Setting this option to YES (the default) 
-# will make doxygen to replace the get and set methods by a property in the 
-# documentation. This will only work if the methods are indeed getting or 
-# setting a simple type. If this is not the case, or you want to show the 
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-# the same type (for instance a group of public functions) to be put as a 
-# subgroup of that type (e.g. under the Public Functions section). Set it to 
-# NO to prevent subgrouping. Alternatively, this can be done per class using 
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
-# is documented as struct, union, or enum with the name of the typedef. So 
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
-# with name TypeT. When disabled the typedef will appear as a member of a file, 
-# namespace, or class. And the struct will be named TypeS. This can typically 
-# be useful for C code in case the coding convention dictates that all compound 
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
-# determine which symbols to keep in memory and which to flush to disk. 
-# When the cache is full, less often used symbols will be written to disk. 
-# For small to medium size projects (<1000 input files) the default value is 
-# probably good enough. For larger projects a too small cache size can cause 
-# doxygen to be busy swapping symbols to and from disk most of the time 
-# causing a significant performance penality. 
-# If the system has enough physical memory increasing the cache will improve the 
-# performance by keeping more symbols in memory. Note that the value works on 
-# a logarithmic scale so increasing the size by one will rougly double the 
-# memory usage. The cache size is given by this formula: 
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
-# corresponding to a cache size of 2^16 = 65536 symbols
-
-SYMBOL_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
-# will be included in the documentation.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-# defined locally in source files will be included in the documentation. 
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local 
-# methods, which are defined in the implementation section but not in 
-# the interface are included in the documentation. 
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be 
-# extracted and appear in the documentation as a namespace called 
-# 'anonymous_namespace{file}', where file will be replaced with the base 
-# name of the file that contains the anonymous namespace. By default 
-# anonymous namespace are hidden.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these classes will be included in the various 
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-# friend (class|struct|union) declarations. 
-# If set to NO (the default) these declarations will be included in the 
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-# documentation blocks found inside the body of a function. 
-# If set to NO (the default) these blocks will be appended to the 
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation 
-# that is typed after a \internal command is included. If the tag is set 
-# to NO (the default) then the documentation will be excluded. 
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower-case letters. If set to YES upper-case letters are also 
-# allowed. This is useful if you have classes or files whose names only differ 
-# in case and if your file system supports case sensitive file names. Windows 
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-# will show members with their full class and namespace scopes in the 
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = YES
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put a list of the files that are included by a file in the documentation 
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-# will sort the (detailed) documentation of file and class members 
-# alphabetically by member name. If set to NO the members will appear in 
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
-# hierarchy of group names into alphabetical order. If set to NO (the default) 
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
-# Note: This option applies only to the class list, not to the 
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-# disable (NO) the todo list. This list is created by putting \todo 
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-# disable (NO) the test list. This list is created by putting \test 
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-# disable (NO) the bug list. This list is created by putting \bug 
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-# disable (NO) the deprecated list. This list is created by putting 
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional 
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       = 
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or define consists of for it to appear in 
-# the documentation. If the initializer consists of more lines than specified 
-# here it will be hidden. Use a value of 0 to hide initializers completely. 
-# The appearance of the initializer of individual variables and defines in the 
-# documentation can be controlled using \showinitializer or \hideinitializer 
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-# at the bottom of the documentation of classes and structs. If set to YES the 
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# If the sources in your project are distributed over multiple directories 
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES       = NO
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
-# This will remove the Files entry from the Quick Index and from the 
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
-# Namespaces page.  This will remove the Namespaces entry from the Quick Index 
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
-# doxygen should invoke to get the current version for each file (typically from 
-# the version control system). Doxygen will invoke the program by executing (via 
-# popen()) the command <command> <input-file>, where <command> is the value of 
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
-# provided by doxygen. Whatever the program writes to standard output 
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    = 
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
-# doxygen. The layout file controls the global structure of the generated output files 
-# in an output format independent way. The create the layout file that represents 
-# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
-# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
-# of the layout file.
-
-LAYOUT_FILE            = 
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated 
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are 
-# generated by doxygen. Possible values are YES and NO. If left blank 
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-# potential errors in the documentation, such as not documenting some 
-# parameters in a documented function, or documenting parameters that 
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for 
-# functions that are documented, but have no documentation for their parameters 
-# or return value. If set to NO (the default) doxygen will only warn about 
-# wrong or incomplete parameter documentation, but not about the absence of 
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that 
-# doxygen can produce. The string should contain the $file, $line, and $text 
-# tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text. Optionally the format may contain 
-# $version, which will be replaced by the version of the file (if it could 
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning 
-# and error messages should be written. If left blank the output is written 
-# to stderr.
-
-WARN_LOGFILE           = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain 
-# documented source files. You may enter file names like "myfile.cpp" or 
-# directories like "/usr/src/myproject". Separate the files or directories 
-# with spaces.
-
-INPUT                  = ../viennacl/
-
-# This tag can be used to specify the character encoding of the source files 
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
-# also the default input encoding. Doxygen uses libiconv (or the iconv built 
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
-# the list of possible encodings.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the 
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank the following patterns are tested: 
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
-
-FILE_PATTERNS          = *.c \
-                         *.cc \
-                         *.cxx \
-                         *.cpp \
-                         *.c++ \
-                         *.d \
-                         *.java \
-                         *.ii \
-                         *.ixx \
-                         *.ipp \
-                         *.i++ \
-                         *.inl \
-                         *.h \
-                         *.hh \
-                         *.hxx \
-                         *.hpp \
-                         *.h++ \
-                         *.idl \
-                         *.odl \
-                         *.cs \
-                         *.php \
-                         *.php3 \
-                         *.inc \
-                         *.m \
-                         *.mm \
-                         *.dox \
-                         *.py \
-                         *.f90 \
-                         *.f \
-                         *.vhd \
-                         *.vhdl
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
-# should be searched for input files as well. Possible values are YES and NO. 
-# If left blank NO is used.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should 
-# excluded from the INPUT source files. This way you can easily exclude a 
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE                = 
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
-# directories that are symbolic links (a Unix filesystem feature) are excluded 
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the 
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-# certain files from those directories. Note that the wildcards are matched 
-# against the file with absolute path, so to exclude all test directories 
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       = 
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
-# (namespaces, classes, functions, etc.) that should be excluded from the 
-# output. The symbol name can be a fully qualified name, a word, or if the 
-# wildcard * is used, a substring. Examples: ANamespace, AClass, 
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS        = 
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or 
-# directories that contain example code fragments that are included (see 
-# the \include command).
-
-EXAMPLE_PATH           = 
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank all files are included.
-
-EXAMPLE_PATTERNS       = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-# searched for input files to be used with the \include or \dontinclude 
-# commands irrespective of the value of the RECURSIVE tag. 
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or 
-# directories that contain image that are included in the documentation (see 
-# the \image command).
-
-IMAGE_PATH             = 
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-# invoke to filter for each input file. Doxygen will invoke the filter program 
-# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
-# ignored.
-
-INPUT_FILTER           = 
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
-# basis.  Doxygen will compare the file name with each pattern and apply the 
-# filter if there is a match.  The filters are a list of the form: 
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
-# is applied to all files.
-
-FILTER_PATTERNS        = 
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-# INPUT_FILTER) will be used to filter the input files when producing source 
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources. 
-# Note: To get rid of all source code in the generated output, make sure also 
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body 
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES 
-# then for each documented function all documented 
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES 
-# then for each documented function all documented entities 
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
-# link to the source code.  Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code 
-# will point to the HTML generated by the htags(1) tool instead of doxygen 
-# built-in source browser. The htags tool is part of GNU's global source 
-# tagging system (see http://www.gnu.org/software/global/global.html). You 
-# will need version 4.8.6 or higher.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-# of all compounds will be generated. Enable this if the project 
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all 
-# classes will be put under the same header in the alphabetical index. 
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard header.
-
-HTML_HEADER            = 
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard footer.
-
-HTML_FOOTER            = 
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-# style sheet that is used by each HTML page. It can be used to 
-# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        = 
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-# files or namespaces will be aligned in HTML using tables. If set to 
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
-# documentation will contain sections that can be hidden and shown after the 
-# page has loaded. For this to work a browser that supports 
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files 
-# will be generated that can be used as input for Apple's Xcode 3 
-# integrated development environment, introduced with OSX 10.5 (Leopard). 
-# To create a documentation set, doxygen will generate a Makefile in the 
-# HTML output directory. Running make will produce the docset in that 
-# directory and running "make install" will install the docset in 
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
-# it at startup. 
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
-
-GENERATE_DOCSET        = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
-# feed. A documentation feed provides an umbrella under which multiple 
-# documentation sets from a single provider (such as a company or product suite) 
-# can be grouped.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
-# should uniquely identify the documentation set bundle. This should be a 
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-# will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-# be used to specify the file name of the resulting .chm file. You 
-# can add a path in front of the file if the result should not be 
-# written to the html output directory.
-
-CHM_FILE               = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-# be used to specify the location (absolute path including file name) of 
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-# controls if a separate .chi index file is generated (YES) or that 
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file 
-# content.
-
-CHM_INDEX_ENCODING     = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-# controls whether a binary table of contents is generated (YES) or a 
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members 
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER 
-# are set, an additional index file will be generated that can be used as input for 
-# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated 
-# HTML documentation.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
-# be used to specify the file name of the resulting .qch file. 
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE               = 
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating 
-# Qt Help Project output. For more information please see 
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE          = 
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
-# Qt Help Project output. For more information please see 
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. 
-# For more information please see 
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME   = 
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see 
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
-
-QHP_CUST_FILTER_ATTRS  = 
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's 
-# filter section matches. 
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
-
-QHP_SECT_FILTER_ATTRS  = 
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
-# be used to specify the location of Qt's qhelpgenerator. 
-# If non-empty doxygen will try to run qhelpgenerator on the generated 
-# .qhp file.
-
-QHG_LOCATION           = 
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
-# top of each HTML page. The value NO (the default) enables the index and 
-# the value YES disables it.
-
-DISABLE_INDEX          = NO
-
-# This tag can be used to set the number of enum values (range [1..20]) 
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
-# structure should be generated to display hierarchical information. 
-# If the tag value is set to FRAME, a side panel will be generated 
-# containing a tree-like index structure (just like the one that 
-# is generated for HTML Help). For this to work a browser that supports 
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
-# probably better off using the HTML help feature. Other possible values 
-# for this tag are: HIERARCHIES, which will generate the Groups, Directories, 
-# and Class Hierarchy pages using a tree view instead of an ordered list; 
-# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which 
-# disables this behavior completely. For backwards compatibility with previous 
-# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE 
-# respectively.
-
-GENERATE_TREEVIEW      = NONE
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-# used to set the initial width (in pixels) of the frame in which the tree 
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-# Use this tag to change the font size of Latex formulas included 
-# as images in the HTML documentation. The default is 10. Note that 
-# when you change the font size after a successful doxygen run you need 
-# to manually remove any form_*.png images from the HTML output directory 
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE       = 10
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
-# generate Latex output.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-# generate index for LaTeX. If left blank `makeindex' will be used as the 
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-# LaTeX documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used 
-# by the printer. Possible values are: a4, a4wide, letter, legal and 
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         = 
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-# the generated latex document. The header should contain everything until 
-# the first chapter. If it is left blank doxygen will generate a 
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           = 
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-# contain links (just like the HTML output) instead of page references 
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-# plain latex in the generated Makefile. Set this option to YES to get a 
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-# command to the generated LaTeX files. This will instruct LaTeX to keep 
-# running if errors occur, instead of asking the user for help. 
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-# include the index chapters (such as File Index, Compound Index, etc.) 
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimized for Word 97 and may not look very pretty with 
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-# RTF documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-# will contain hyperlink fields. The RTF file will 
-# contain links (just like the HTML output) instead of page references. 
-# This makes the output suitable for online browsing using WORD or other 
-# programs which support those fields. 
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assignments. You only have to provide 
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    = 
-
-# Set optional variables used in the generation of an rtf document. 
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to 
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-# then it will generate one additional man file for each entity 
-# documented in the real man page(s). These additional files 
-# only source the real man page, but without them the man command 
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will 
-# generate an XML file that captures the structure of 
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_SCHEMA             = 
-
-# The XML_DTD tag can be used to specify an XML DTD, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_DTD                = 
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-# generate an AutoGen Definitions (see autogen.sf.net) file 
-# that captures the structure of the code including all 
-# documentation. Note that this feature is still experimental 
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-# generate a Perl module file that captures the structure of 
-# the code including all documentation. Note that this 
-# feature is still experimental and incomplete at the 
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-# nicely formatted so it can be parsed by a human reader.  This is useful 
-# if you want to understand what is going on.  On the other hand, if this 
-# tag is set to NO the size of the Perl module output will be much smaller 
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file 
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-# This is useful so different doxyrules.make files included by the same 
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-# evaluate all C-preprocessor directives found in the sources and include 
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-# names in the source code. If set to NO (the default) only conditional 
-# compilation will be performed. Macro expansion can be done in a controlled 
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-# then the macro expansion is limited to the macros specified with the 
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that 
-# contain include files that are not input files but should be processed by 
-# the preprocessor.
-
-INCLUDE_PATH           = 
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-# patterns (like *.h and *.hpp) to filter out the header-files in the 
-# directories. If left blank, the patterns specified with FILE_PATTERNS will 
-# be used.
-
-INCLUDE_FILE_PATTERNS  = 
-
-# The PREDEFINED tag can be used to specify one or more macro names that 
-# are defined before the preprocessor is started (similar to the -D option of 
-# gcc). The argument of the tag is a list of macros of the form: name 
-# or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed. To prevent a macro definition from being 
-# undefined via #undef or recursively expanded use the := operator 
-# instead of the = operator.
-
-PREDEFINED             = 
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED      = 
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-# doxygen's preprocessor will remove all function-like macros that are alone 
-# on a line, have an all uppercase name, and do not end with a semicolon. Such 
-# function macros are typically used for boiler-plate code, and will confuse 
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. 
-# Optionally an initial location of the external documentation 
-# can be added for each tagfile. The format of a tag file without 
-# this location is as follows: 
-#   TAGFILES = file1 file2 ... 
-# Adding location for the tag files is done as follows: 
-#   TAGFILES = file1=loc1 "file2 = loc2" ... 
-# where "loc1" and "loc2" can be relative or absolute paths or 
-# URLs. If a location is present for each tag, the installdox tool 
-# does not have to be run to correct the links. 
-# Note that each tag file must have a unique name 
-# (where the name does NOT include the path) 
-# If a tag file is not located in the directory in which doxygen 
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               = 
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       = 
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-# in the class index. If set to NO only the inherited external classes 
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-# in the modules index. If set to NO, only the current project's groups will 
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script 
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
-# or super classes. Setting the tag to NO turns the diagrams off. Note that 
-# this option is superseded by the HAVE_DOT option below. This is only a 
-# fallback. It is recommended to install and use dot, since it yields more 
-# powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc 
-# command. Doxygen will then run the mscgen tool (see 
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
-# the mscgen tool resides. If left empty the tool is assumed to be found in the 
-# default search path.
-
-MSCGEN_PATH            = 
-
-# If set to YES, the inheritance and collaboration graphs will hide 
-# inheritance and usage relations if the target is undocumented 
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-# available from the path. This tool is part of Graphviz, a graph visualization 
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = NO
-
-# By default doxygen will write a font called FreeSans.ttf to the output 
-# directory and reference it in all dot files that doxygen generates. This 
-# font does not include all possible unicode characters however, so when you need 
-# these (or just want a differently looking font) you can specify the font name 
-# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
-# which can be done by putting it in a standard location or by setting the 
-# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
-# containing the font.
-
-DOT_FONTNAME           = FreeSans
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
-# The default size is 10pt.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the output directory to look for the 
-# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
-# different font using DOT_FONTNAME you can set the path where dot 
-# can find it using this tag.
-
-DOT_FONTPATH           = 
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect inheritance relations. Setting this tag to YES will force the 
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect implementation dependencies (inheritance, containment, and 
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar to the OMG's Unified Modeling 
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the 
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-# tags are set to YES then doxygen will generate a graph for each documented 
-# file showing the direct and indirect include dependencies of the file with 
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-# documented header file showing the documented files that directly or 
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
-# doxygen will generate a call dependency graph for every global function 
-# or class method. Note that enabling this option will significantly increase 
-# the time of a run. So in most cases it will be better to enable call graphs 
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
-# doxygen will generate a caller dependency graph for every global function 
-# or class method. Note that enabling this option will significantly increase 
-# the time of a run. So in most cases it will be better to enable caller 
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
-# then doxygen will show the dependencies a directory has on other directories 
-# in a graphical way. The dependency relations are determined by the #include 
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
-# generated by dot. Possible values are png, jpg, or gif 
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT       = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be 
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               = 
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-# contain dot files that are included in the documentation (see the 
-# \dotfile command).
-
-DOTFILE_DIRS           = 
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
-# nodes that will be shown in the graph. If the number of nodes in a graph 
-# becomes larger than this value, doxygen will truncate the graph, which is 
-# visualized by representing a node as a red box. Note that doxygen if the 
-# number of direct children of the root node in a graph is already larger than 
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-# from the root by following a path via at most 3 edges will be shown. Nodes 
-# that lay further from the root node will be omitted. Note that setting this 
-# option to 1 or 2 may greatly reduce the computation time needed for large 
-# code bases. Also note that the size of a graph can be further restricted by 
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
-# background. This is disabled by default, because dot on Windows does not 
-# seem to support this out of the box. Warning: Depending on the platform used, 
-# enabling this option may lead to badly anti-aliased labels on the edges of 
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
-# files in one run (i.e. multiple -o and -T options on the command line). This 
-# makes dot run faster, but since only newer versions of dot (>1.8.10) 
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-# generate a legend page explaining the meaning of the various boxes and 
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermediate dot files that are used to generate 
-# the various graphs.
-
-DOT_CLEANUP            = YES
-
-#---------------------------------------------------------------------------
-# Options related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be 
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE           = NO
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
new file mode 100644
index 0000000..5cc3032
--- /dev/null
+++ b/doc/Doxyfile.in
@@ -0,0 +1,1541 @@
+# Doxyfile 1.5.8
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file 
+# that follow. The default is UTF-8 which is also the encoding used for all 
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
+# iconv built into libc) for the transcoding. See 
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = "ViennaCL - The Vienna Computing Library"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = 1.2.0
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = doxygen/
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of 
+# source files, where putting all generated files in the same directory would 
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, 
+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), 
+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, 
+# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, 
+# Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like regular Qt-style comments 
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF      = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
+# interpret the first line (until the first dot) of a Qt-style 
+# comment as the brief description. If set to NO, the comments 
+# will behave just like regular Qt-style comments (thus requiring 
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
+# a new page for each member. If set to NO, the documentation of a member will 
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
+# sources only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
+# sources only. Doxygen will then generate output that is more tailored for 
+# Java. For instance, namespaces will be presented as packages, qualified 
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
+# sources only. Doxygen will then generate output that is more tailored for 
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
+# sources. Doxygen will then generate output that is tailored for 
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it parses. 
+# With this tag you can assign which parser to use for a given extension. 
+# Doxygen has a built-in mapping, but you can override or extend it using this tag. 
+# The format is ext=language, where ext is a file extension, and language is one of 
+# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, 
+# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat 
+# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), 
+# use: inc=Fortran f=C
+
+EXTENSION_MAPPING      = 
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
+# to include (a tag file for) the STL sources as input, then you should 
+# set this tag to YES in order to let doxygen match functions declarations and 
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
+# func(std::string) {}). This also make the inheritance and collaboration 
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to 
+# enable parsing support.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
+# Doxygen will parse them like normal C++ but will assume all classes use public 
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter 
+# and setter methods for a property. Setting this option to YES (the default) 
+# will make doxygen to replace the get and set methods by a property in the 
+# documentation. This will only work if the methods are indeed getting or 
+# setting a simple type. If this is not the case, or you want to show the 
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
+# is documented as struct, union, or enum with the name of the typedef. So 
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
+# with name TypeT. When disabled the typedef will appear as a member of a file, 
+# namespace, or class. And the struct will be named TypeS. This can typically 
+# be useful for C code in case the coding convention dictates that all compound 
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
+# determine which symbols to keep in memory and which to flush to disk. 
+# When the cache is full, less often used symbols will be written to disk. 
+# For small to medium size projects (<1000 input files) the default value is 
+# probably good enough. For larger projects a too small cache size can cause 
+# doxygen to be busy swapping symbols to and from disk most of the time 
+# causing a significant performance penality. 
+# If the system has enough physical memory increasing the cache will improve the 
+# performance by keeping more symbols in memory. Note that the value works on 
+# a logarithmic scale so increasing the size by one will rougly double the 
+# memory usage. The cache size is given by this formula: 
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE      = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be 
+# extracted and appear in the documentation as a namespace called 
+# 'anonymous_namespace{file}', where file will be replaced with the base 
+# name of the file that contains the anonymous namespace. By default 
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = YES
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
+# hierarchy of group names into alphabetical order. If set to NO (the default) 
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES       = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
+# This will remove the Files entry from the Quick Index and from the 
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES             = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
+# Namespaces page.  This will remove the Namespaces entry from the Quick Index 
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES        = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
+# doxygen should invoke to get the current version for each file (typically from 
+# the version control system). Doxygen will invoke the program by executing (via 
+# popen()) the command <command> <input-file>, where <command> is the value of 
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
+# provided by doxygen. Whatever the program writes to standard output 
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    = 
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
+# doxygen. The layout file controls the global structure of the generated output files 
+# in an output format independent way. The create the layout file that represents 
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
+# of the layout file.
+
+LAYOUT_FILE            = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = ../../viennacl/
+
+# This tag can be used to specify the character encoding of the source files 
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
+# also the default input encoding. Doxygen uses libiconv (or the iconv built 
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
+# the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS          = *.c \
+                         *.cc \
+                         *.cxx \
+                         *.cpp \
+                         *.c++ \
+                         *.d \
+                         *.java \
+                         *.ii \
+                         *.ixx \
+                         *.ipp \
+                         *.i++ \
+                         *.inl \
+                         *.h \
+                         *.hh \
+                         *.hxx \
+                         *.hpp \
+                         *.h++ \
+                         *.idl \
+                         *.odl \
+                         *.cs \
+                         *.php \
+                         *.php3 \
+                         *.inc \
+                         *.m \
+                         *.mm \
+                         *.dox \
+                         *.py \
+                         *.f90 \
+                         *.f \
+                         *.vhd \
+                         *.vhdl
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = 
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
+# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories. Note that the wildcards are matched 
+# against the file with absolute path, so to exclude all test directories 
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = 
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
+# (namespaces, classes, functions, etc.) that should be excluded from the 
+# output. The symbol name can be a fully qualified name, a word, or if the 
+# wildcard * is used, a substring. Examples: ANamespace, AClass, 
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS        = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
+# link to the source code.  Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
+# documentation will contain sections that can be hidden and shown after the 
+# page has loaded. For this to work a browser that supports 
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files 
+# will be generated that can be used as input for Apple's Xcode 3 
+# integrated development environment, introduced with OSX 10.5 (Leopard). 
+# To create a documentation set, doxygen will generate a Makefile in the 
+# HTML output directory. Running make will produce the docset in that 
+# directory and running "make install" will install the docset in 
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
+# it at startup. 
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+
+GENERATE_DOCSET        = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
+# feed. A documentation feed provides an umbrella under which multiple 
+# documentation sets from a single provider (such as a company or product suite) 
+# can be grouped.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
+# should uniquely identify the documentation set bundle. This should be a 
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file 
+# content.
+
+CHM_INDEX_ENCODING     = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER 
+# are set, an additional index file will be generated that can be used as input for 
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated 
+# HTML documentation.
+
+GENERATE_QHP           = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
+# be used to specify the file name of the resulting .qch file. 
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE               = 
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating 
+# Qt Help Project output. For more information please see 
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE          = 
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
+# Qt Help Project output. For more information please see 
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. 
+# For more information please see 
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME   = 
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see 
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS  = 
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's 
+# filter section matches. 
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS  = 
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
+# be used to specify the location of Qt's qhelpgenerator. 
+# If non-empty doxygen will try to run qhelpgenerator on the generated 
+# .qhp file.
+
+QHG_LOCATION           = 
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
+# structure should be generated to display hierarchical information. 
+# If the tag value is set to FRAME, a side panel will be generated 
+# containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature. Other possible values 
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories, 
+# and Class Hierarchy pages using a tree view instead of an ordered list; 
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which 
+# disables this behavior completely. For backwards compatibility with previous 
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE 
+# respectively.
+
+GENERATE_TREEVIEW      = NONE
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+# Use this tag to change the font size of Latex formulas included 
+# as images in the HTML documentation. The default is 10. Note that 
+# when you change the font size after a successful doxygen run you need 
+# to manually remove any form_*.png images from the HTML output directory 
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE       = 10
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links. 
+# Note that each tag file must have a unique name 
+# (where the name does NOT include the path) 
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc 
+# command. Doxygen will then run the mscgen tool (see 
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
+# the mscgen tool resides. If left empty the tool is assumed to be found in the 
+# default search path.
+
+MSCGEN_PATH            = 
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# By default doxygen will write a font called FreeSans.ttf to the output 
+# directory and reference it in all dot files that doxygen generates. This 
+# font does not include all possible unicode characters however, so when you need 
+# these (or just want a differently looking font) you can specify the font name 
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
+# which can be done by putting it in a standard location or by setting the 
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
+# containing the font.
+
+DOT_FONTNAME           = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
+# The default size is 10pt.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the output directory to look for the 
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
+# different font using DOT_FONTNAME you can set the path where dot 
+# can find it using this tag.
+
+DOT_FONTPATH           = 
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
+# doxygen will generate a call dependency graph for every global function 
+# or class method. Note that enabling this option will significantly increase 
+# the time of a run. So in most cases it will be better to enable call graphs 
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
+# doxygen will generate a caller dependency graph for every global function 
+# or class method. Note that enabling this option will significantly increase 
+# the time of a run. So in most cases it will be better to enable caller 
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include 
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif 
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
+# nodes that will be shown in the graph. If the number of nodes in a graph 
+# becomes larger than this value, doxygen will truncate the graph, which is 
+# visualized by representing a node as a red box. Note that doxygen if the 
+# number of direct children of the root node in a graph is already larger than 
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes 
+# that lay further from the root node will be omitted. Note that setting this 
+# option to 1 or 2 may greatly reduce the computation time needed for large 
+# code bases. Also note that the size of a graph can be further restricted by 
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, because dot on Windows does not 
+# seem to support this out of the box. Warning: Depending on the platform used, 
+# enabling this option may lead to badly anti-aliased labels on the edges of 
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Options related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO
diff --git a/doc/doxygen/html/adapter_8hpp.html b/doc/doxygen/html/adapter_8hpp.html
deleted file mode 100644
index bedaed5..0000000
--- a/doc/doxygen/html/adapter_8hpp.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/adapter.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/adapter.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Adapter classes for sparse matrices made of the STL type std::vector<std::map<unsigned int, SCALARTYPE> >  
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include <assert.h></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="adapter_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >  <a href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter< SCALARTYPE ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility.  <a href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >  <a href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter< SCALARTYPE ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility.  <a href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Adapter classes for sparse matrices made of the STL type std::vector<std::map<unsigned int, SCALARTYPE> > </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/adapter_8hpp_source.html b/doc/doxygen/html/adapter_8hpp_source.html
deleted file mode 100644
index 93d9281..0000000
--- a/doc/doxygen/html/adapter_8hpp_source.html
+++ /dev/null
@@ -1,380 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/adapter.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/adapter.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="adapter_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_ADAPTER_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_ADAPTER_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <fstream></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sstream></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <assert.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00027"></a>00027 
-<a name="l00028"></a>00028 <span class="preprocessor">#include <vector></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <map></span>
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033   <span class="keyword">namespace </span>tools
-<a name="l00034"></a>00034   {
-<a name="l00035"></a>00035     
-<a name="l00044"></a>00044     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">bool</span> is_iterator1, <span class="keywordtype">bool</span> is_forward>
-<a name="l00045"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">00045</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_sparse_matrix_adapted_iterator</a>
-<a name="l00046"></a>00046     {
-<a name="l00047"></a>00047       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_sparse_matrix_adapted_iterator<SCALARTYPE, is_iterator1, is_forward></a>    <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">self_type</a>;
-<a name="l00048"></a>00048       
-<a name="l00049"></a>00049       <span class="keyword">public</span>:
-<a name="l00050"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">00050</a>         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">self_type</a>     <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">iterator1</a>;
-<a name="l00051"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">00051</a>         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">self_type</a>     <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">iterator2</a>;
-<a name="l00052"></a>00052         
-<a name="l00053"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a7e6adc520f4881192216bb7352aa3eb9">00053</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a7e6adc520f4881192216bb7352aa3eb9">const_sparse_matrix_adapted_iterator</a>(std::vector<std::map<unsigned int, SCALARTYPE> > <span class="keyword">const</span> & mat, <span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)
-<a name="l00054"></a>00054          : _mat(mat), _i(i), _j(j)
-<a name="l00055"></a>00055         {
-<a name="l00056"></a>00056           <span class="keywordflow">if</span> (i < 0) <span class="comment">//reverse iterator end</span>
-<a name="l00057"></a>00057           {
-<a name="l00058"></a>00058            <span class="comment">// iter2 = _mat[0].rend();  //reverse iterator end</span>
-<a name="l00059"></a>00059           }
-<a name="l00060"></a>00060           <span class="keywordflow">else</span>  <span class="comment">//_i is valid</span>
-<a name="l00061"></a>00061           {
-<a name="l00062"></a>00062             <span class="keywordflow">if</span> (j < 0)
-<a name="l00063"></a>00063             {
-<a name="l00064"></a>00064               <span class="comment">//iter2 = _mat[i].rend();</span>
-<a name="l00065"></a>00065             }
-<a name="l00066"></a>00066             <span class="keywordflow">else</span> <span class="comment">//_j is valid</span>
-<a name="l00067"></a>00067             {
-<a name="l00068"></a>00068               <span class="keywordtype">int</span> mat_size = _mat.size();
-<a name="l00069"></a>00069               <span class="keywordflow">if</span> (_i < mat_size && _j < mat_size )
-<a name="l00070"></a>00070               {
-<a name="l00071"></a>00071                 <span class="comment">//TODO: Start at entry j, not at the begin</span>
-<a name="l00072"></a>00072                 iter2 = _mat[i].begin();
-<a name="l00073"></a>00073               }
-<a name="l00074"></a>00074               <span class="keywordflow">else</span> <span class="keywordflow">if</span> (_i < mat_size  && _j >= mat_size )
-<a name="l00075"></a>00075                 iter2 = _mat[i].end();
-<a name="l00076"></a>00076               <span class="keywordflow">else</span> <span class="comment">//i is out of range -> end iterator requested</span>
-<a name="l00077"></a>00077                 iter2 = _mat[_mat.size() - 1].end(); <span class="comment">//forward iterator end</span>
-<a name="l00078"></a>00078             }
-<a name="l00079"></a>00079           }
-<a name="l00080"></a>00080         }
-<a name="l00081"></a>00081          
-<a name="l00082"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a46c279075bb75ded776ba3f280e0e38a">00082</a>         SCALARTYPE <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a46c279075bb75ded776ba3f280e0e38a">operator*</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
-<a name="l00083"></a>00083 <span class="keyword">        </span>{
-<a name="l00084"></a>00084           <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00085"></a>00085           {
-<a name="l00086"></a>00086             <span class="keyword">typedef</span> <span class="keyword">typename</span> std::map<unsigned int, SCALARTYPE>::const_iterator  col_iterator;
-<a name="l00087"></a>00087             
-<a name="l00088"></a>00088             col_iterator colit = _mat[_i].find(_j);
-<a name="l00089"></a>00089 
-<a name="l00090"></a>00090             <span class="keywordflow">if</span> (colit != _mat[_i].<a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#afda31b300997d15900344226c403b540">end</a>())
-<a name="l00091"></a>00091               <span class="keywordflow">return</span> colit->second;
-<a name="l00092"></a>00092             <span class="keywordflow">return</span> 0.0;
-<a name="l00093"></a>00093           }
-<a name="l00094"></a>00094           <span class="keywordflow">else</span>
-<a name="l00095"></a>00095             <span class="keywordflow">return</span> iter2->second;
-<a name="l00096"></a>00096         }
-<a name="l00097"></a>00097         
-<a name="l00098"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">00098</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">self_type</a> & <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">operator++</a>(<span class="keywordtype">void</span>)
-<a name="l00099"></a>00099         {
-<a name="l00100"></a>00100           <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00101"></a>00101           {
-<a name="l00102"></a>00102             <span class="keywordflow">if</span> (is_forward)
-<a name="l00103"></a>00103               ++_i;
-<a name="l00104"></a>00104             <span class="keywordflow">else</span>
-<a name="l00105"></a>00105               --_i;
-<a name="l00106"></a>00106           }
-<a name="l00107"></a>00107           <span class="keywordflow">else</span>
-<a name="l00108"></a>00108             ++iter2;
-<a name="l00109"></a>00109           <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00110"></a>00110         }
-<a name="l00111"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a4419c6af964a7de542db8474f8ef1091">00111</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">self_type</a> & <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a4419c6af964a7de542db8474f8ef1091">operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">self_type</a> tmp = *<span class="keyword">this</span>; ++(*this); <span class="keywordflow">return</span> tmp; }
-<a name="l00112"></a>00112         
-<a name="l00113"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">00113</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">self_type</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">operator+=</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset)
-<a name="l00114"></a>00114         {
-<a name="l00115"></a>00115           <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00116"></a>00116           {
-<a name="l00117"></a>00117             <span class="keywordflow">if</span> (is_forward)
-<a name="l00118"></a>00118               _i += offset;
-<a name="l00119"></a>00119             <span class="keywordflow">else</span>
-<a name="l00120"></a>00120               _i -= offset;
-<a name="l00121"></a>00121           }
-<a name="l00122"></a>00122           <span class="keywordflow">else</span>
-<a name="l00123"></a>00123           {
-<a name="l00124"></a>00124             <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k=0; k<offset; ++k)
-<a name="l00125"></a>00125               ++iter2;  <span class="comment">//Note: User must ensure that this is always valid...</span>
-<a name="l00126"></a>00126           }
-<a name="l00127"></a>00127           <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00128"></a>00128         }
-<a name="l00129"></a>00129         
-<a name="l00130"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">00130</a>         <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">operator==</a>(<a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00131"></a>00131 <span class="keyword">        </span>{
-<a name="l00132"></a>00132           <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00133"></a>00133             <span class="keywordflow">return</span> (_i == other._i);
-<a name="l00134"></a>00134           <span class="keywordflow">return</span> (iter2 == other.iter2);
-<a name="l00135"></a>00135         }
-<a name="l00136"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">00136</a>         <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">operator!=</a>(<a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == other); }
-<a name="l00137"></a>00137         
-<a name="l00138"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a722f0ccc3f96fb85034a8f00a3860470">00138</a>         <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a722f0ccc3f96fb85034a8f00a3860470">index1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _i; }
-<a name="l00139"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a64b95ec918c78480532aa4578eac805f">00139</a>         <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a64b95ec918c78480532aa4578eac805f">index2</a>()<span class="keyword"> const</span>
-<a name="l00140"></a>00140 <span class="keyword">        </span>{ 
-<a name="l00141"></a>00141           <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00142"></a>00142             <span class="keywordflow">return</span> 0;
-<a name="l00143"></a>00143           <span class="keywordflow">else</span>
-<a name="l00144"></a>00144             <span class="keywordflow">return</span> iter2->first;
-<a name="l00145"></a>00145         }
-<a name="l00146"></a>00146         
-<a name="l00147"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ab48a06d327e6296423955301ede64223">00147</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true></a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ab48a06d327e6296423955301ede64223">begin</a>()<span class="keyword"> const</span>
-<a name="l00148"></a>00148 <span class="keyword">        </span>{
-<a name="l00149"></a>00149           <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true></a>(_mat, _i, iter2->first);
-<a name="l00150"></a>00150         }
-<a name="l00151"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#afda31b300997d15900344226c403b540">00151</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true></a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#afda31b300997d15900344226c403b540">end</a>()<span class="keyword"> const</span>
-<a name="l00152"></a>00152 <span class="keyword">        </span>{
-<a name="l00153"></a>00153           <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true></a>(_mat, _i, <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(_mat.size()));
-<a name="l00154"></a>00154         }
-<a name="l00155"></a>00155         
-<a name="l00156"></a>00156       <span class="keyword">private</span>:
-<a name="l00157"></a>00157         std::vector<std::map<unsigned int, SCALARTYPE> > <span class="keyword">const</span> & _mat;
-<a name="l00158"></a>00158         <span class="keyword">typename</span> std::map<unsigned int, SCALARTYPE>::const_iterator iter2;
-<a name="l00159"></a>00159         <span class="keywordtype">int</span> _i;
-<a name="l00160"></a>00160         <span class="keywordtype">int</span> _j;
-<a name="l00161"></a>00161     };
-<a name="l00162"></a>00162     
-<a name="l00167"></a>00167     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE>
-<a name="l00168"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">00168</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">const_sparse_matrix_adapter</a>
-<a name="l00169"></a>00169     {
-<a name="l00170"></a>00170       <span class="keyword">public</span>:
-<a name="l00171"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa5359de96982fcefb8902889e90cd009">00171</a>         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_sparse_matrix_adapted_iterator<SCALARTYPE, true, true></a>      <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_iterator1</a>;
-<a name="l00172"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adf83e37907ef2d594f62e4b05b9425bd">00172</a>         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_sparse_matrix_adapted_iterator<SCALARTYPE, false, true></a>     <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_iterator2</a>;
-<a name="l00173"></a>00173 
-<a name="l00174"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#abb7af69bf0142c0d643bc87bb93c458c">00174</a>         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_sparse_matrix_adapted_iterator<SCALARTYPE, true, false></a>   <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_reverse_iterator1</a>;
-<a name="l00175"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#ab2ccf246e378a3df6f7a4d9da121f832">00175</a>         <span class="keyword">typedef</span> SCALARTYPE    value_type;
-<a name="l00176"></a>00176         
-<a name="l00177"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adc6d39eae2e1a492baf46df00aefbbd4">00177</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adc6d39eae2e1a492baf46df00aefbbd4">const_sparse_matrix_adapter</a>(std::vector<std::map<unsigned int, SCALARTYPE> > <span class="keyword">const</span> & mat) 
-<a name="l00178"></a>00178          : _mat(mat) {};
-<a name="l00179"></a>00179         
-<a name="l00180"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">00180</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(_mat.size()); }
-<a name="l00181"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">00181</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(_mat.size()); }  <span class="comment">//we allow only square matrices</span>
-<a name="l00182"></a>00182         
-<a name="l00183"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a5b9dc1969b4f2a110d0cec988eb4b1ea">00183</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_iterator1</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a5b9dc1969b4f2a110d0cec988eb4b1ea">begin1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa5359de96982fcefb8902889e90cd009">const_iterator1</a>(_mat, 0, 0); }
-<a name="l00184"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa29369f210d72e323561ef2f45c82e85">00184</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_iterator1</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa29369f210d72e323561ef2f45c82e85">end1</a>()<span class="keyword"> const   </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa5359de96982fcefb8902889e90cd009">const_iterator1</a>(_mat, <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">size1</a>(), <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a>()); }
-<a name="l00185"></a>00185 
-<a name="l00186"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8883d4e54ffd15ae74873f3ada1ad43b">00186</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_reverse_iterator1</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8883d4e54ffd15ae74873f3ada1ad43b">rbegin1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#abb7af69bf0142c0d643bc87bb93c458c">const_reverse_iterator1</a>(_mat, <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">size1</a>() - 1, 0); }
-<a name="l00187"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a88d31c317316b533e580da19c1a625e0">00187</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_reverse_iterator1</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a88d31c317316b533e580da19c1a625e0">rend1</a>()<span class="keyword"> const   </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#abb7af69bf0142c0d643bc87bb93c458c">const_reverse_iterator1</a>(_mat, -1, <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a>()); }
-<a name="l00188"></a>00188 
-<a name="l00189"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8799eeb54a7eccddce5661c438d535f3">00189</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_iterator2</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8799eeb54a7eccddce5661c438d535f3">begin2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adf83e37907ef2d594f62e4b05b9425bd">const_iterator2</a>(_mat, 0, 0); }
-<a name="l00190"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#afe8212a7238c7a15a2731c5f47f775ec">00190</a>         <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int, SCALARTYPE&gt; &gt;">const_iterator2</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#afe8212a7238c7a15a2731c5f47f775ec">end2</a>()<span class="keyword"> const   </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adf83e37907ef2d594f62e4b05b9425bd">const_iterator2</a>(_mat, 0, <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a>()); }
-<a name="l00191"></a>00191         
-<a name="l00192"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aebaa6cb9a0b72e0792005b58205f2073">00192</a>         SCALARTYPE <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aebaa6cb9a0b72e0792005b58205f2073">operator()</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j)<span class="keyword"> const</span>
-<a name="l00193"></a>00193 <span class="keyword">        </span>{
-<a name="l00194"></a>00194           <span class="keyword">typedef</span> <span class="keyword">typename</span> std::map<unsigned int, SCALARTYPE>::const_iterator  col_iterator;
-<a name="l00195"></a>00195           
-<a name="l00196"></a>00196           col_iterator colit = _mat[i].find(j);
-<a name="l00197"></a>00197 
-<a name="l00198"></a>00198           <span class="keywordflow">if</span> (colit != _mat[i].end())
-<a name="l00199"></a>00199             <span class="keywordflow">return</span> colit->second;
-<a name="l00200"></a>00200           <span class="keywordflow">return</span> 0.0;
-<a name="l00201"></a>00201         }
-<a name="l00202"></a>00202 
-<a name="l00203"></a>00203       <span class="keyword">private</span>:
-<a name="l00204"></a>00204         std::vector<std::map<unsigned int, SCALARTYPE> > <span class="keyword">const</span> & _mat;
-<a name="l00205"></a>00205     };
-<a name="l00206"></a>00206     
-<a name="l00207"></a>00207     
-<a name="l00215"></a>00215     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">bool</span> is_iterator1>
-<a name="l00216"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">00216</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">sparse_matrix_adapted_iterator</a>
-<a name="l00217"></a>00217     {
-<a name="l00218"></a>00218       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, is_iterator1></a>    <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">self_type</a>;
-<a name="l00219"></a>00219       
-<a name="l00220"></a>00220       <span class="keyword">public</span>:
-<a name="l00221"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">00221</a>         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">self_type</a>     <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">iterator1</a>;
-<a name="l00222"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">00222</a>         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">self_type</a>     <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">iterator2</a>;
-<a name="l00223"></a>00223         
-<a name="l00224"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a28ab748b9c7783bdf3aa8fa02203a85c">00224</a>         <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a28ab748b9c7783bdf3aa8fa02203a85c">sparse_matrix_adapted_iterator</a>(std::vector<std::map<unsigned int, SCALARTYPE> > & mat, <span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)
-<a name="l00225"></a>00225          : _mat(mat), _i(i), _j(j)
-<a name="l00226"></a>00226         {
-<a name="l00227"></a>00227           <span class="keywordflow">if</span> (i < 0) <span class="comment">//reverse iterator end</span>
-<a name="l00228"></a>00228           {
-<a name="l00229"></a>00229             <span class="comment">//iter2 = _mat[0].rend();  //reverse iterator end</span>
-<a name="l00230"></a>00230           }
-<a name="l00231"></a>00231           <span class="keywordflow">else</span>  <span class="comment">//_i is valid</span>
-<a name="l00232"></a>00232           {
-<a name="l00233"></a>00233             <span class="keywordflow">if</span> (j < 0)
-<a name="l00234"></a>00234             {
-<a name="l00235"></a>00235               <span class="comment">//iter2 = _mat[i].rend();</span>
-<a name="l00236"></a>00236             }
-<a name="l00237"></a>00237             <span class="keywordflow">else</span> <span class="comment">//_j is valid</span>
-<a name="l00238"></a>00238             {
-<a name="l00239"></a>00239               <span class="keywordflow">if</span> (_i < _mat.size() && _j < _mat.size() )
-<a name="l00240"></a>00240               {
-<a name="l00241"></a>00241                 <span class="comment">//TODO: Start at entry j, not at the begin</span>
-<a name="l00242"></a>00242                 iter2 = _mat[i].begin();
-<a name="l00243"></a>00243               }
-<a name="l00244"></a>00244               <span class="keywordflow">else</span> <span class="keywordflow">if</span> (_i < _mat.size() && _j >= _mat.size())
-<a name="l00245"></a>00245                 iter2 = _mat[i].<a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a94a6ed7c67c72c74986b98e1b1343cd1">end</a>();
-<a name="l00246"></a>00246               <span class="keywordflow">else</span> <span class="comment">//i is out of range -> end iterator requested</span>
-<a name="l00247"></a>00247                 iter2 = _mat[_mat.size() - 1].end(); <span class="comment">//forward iterator end</span>
-<a name="l00248"></a>00248             }
-<a name="l00249"></a>00249           }
-<a name="l00250"></a>00250         }
-<a name="l00251"></a>00251          
-<a name="l00252"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#af2633ec1341d109e979b949d533ff1a2">00252</a>         SCALARTYPE & <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#af2633ec1341d109e979b949d533ff1a2">operator*</a>(<span class="keywordtype">void</span>)
-<a name="l00253"></a>00253         {
-<a name="l00254"></a>00254           <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00255"></a>00255           {
-<a name="l00256"></a>00256             <span class="keywordflow">return</span> _mat[_i][_j];
-<a name="l00257"></a>00257           }
-<a name="l00258"></a>00258           <span class="keywordflow">else</span>
-<a name="l00259"></a>00259             <span class="keywordflow">return</span> iter2->second;
-<a name="l00260"></a>00260         }
-<a name="l00261"></a>00261         
-<a name="l00262"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">00262</a>         <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">self_type</a> & <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">operator++</a>(<span class="keywordtype">void</span>)
-<a name="l00263"></a>00263         {
-<a name="l00264"></a>00264           <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00265"></a>00265             ++_i;
-<a name="l00266"></a>00266           <span class="keywordflow">else</span>
-<a name="l00267"></a>00267             ++iter2;
-<a name="l00268"></a>00268           <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00269"></a>00269         }
-<a name="l00270"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a4419c6af964a7de542db8474f8ef1091">00270</a>         <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">self_type</a> & <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a4419c6af964a7de542db8474f8ef1091">operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">self_type</a> tmp = *<span class="keyword">this</span>; ++(*this); <span class="keywordflow">return</span> tmp; }
-<a name="l00271"></a>00271         
-<a name="l00272"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">00272</a>         <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">self_type</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">operator+=</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset)
-<a name="l00273"></a>00273         {
-<a name="l00274"></a>00274           <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00275"></a>00275             _i += offset;
-<a name="l00276"></a>00276           <span class="keywordflow">else</span>
-<a name="l00277"></a>00277           {
-<a name="l00278"></a>00278             <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k=0; k<offset; ++k)
-<a name="l00279"></a>00279               ++iter2;  <span class="comment">//Note: User must ensure that this is always valid...</span>
-<a name="l00280"></a>00280           }
-<a name="l00281"></a>00281           <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00282"></a>00282         }
-<a name="l00283"></a>00283         
-<a name="l00284"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">00284</a>         <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">operator==</a>(<a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00285"></a>00285 <span class="keyword">        </span>{
-<a name="l00286"></a>00286           <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00287"></a>00287             <span class="keywordflow">return</span> (_i == other._i);
-<a name="l00288"></a>00288           <span class="keywordflow">return</span> (iter2 == other.iter2);
-<a name="l00289"></a>00289         }
-<a name="l00290"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">00290</a>         <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">operator!=</a>(<a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == other); }
-<a name="l00291"></a>00291         
-<a name="l00292"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a48c62d5afba1616ab8081dc78b276075">00292</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a48c62d5afba1616ab8081dc78b276075">index1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _i; }
-<a name="l00293"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a5193f8c88b303f9ebf91c0368be0139b">00293</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a5193f8c88b303f9ebf91c0368be0139b">index2</a>()<span class="keyword"> const</span>
-<a name="l00294"></a>00294 <span class="keyword">        </span>{ 
-<a name="l00295"></a>00295           <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00296"></a>00296             <span class="keywordflow">return</span> 0;
-<a name="l00297"></a>00297           <span class="keywordflow">else</span>
-<a name="l00298"></a>00298             <span class="keywordflow">return</span> iter2->first;
-<a name="l00299"></a>00299         }
-<a name="l00300"></a>00300         
-<a name="l00301"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aca3adf2f1528779c11d9abde704c2e69">00301</a>         <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1></a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aca3adf2f1528779c11d9abde704c2e69">begin</a>()<span class="keyword"> const</span>
-<a name="l00302"></a>00302 <span class="keyword">        </span>{
-<a name="l00303"></a>00303           <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1></a>(_mat, _i, iter2->first);
-<a name="l00304"></a>00304         }
-<a name="l00305"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a94a6ed7c67c72c74986b98e1b1343cd1">00305</a>         <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1></a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a94a6ed7c67c72c74986b98e1b1343cd1">end</a>()<span class="keyword"> const</span>
-<a name="l00306"></a>00306 <span class="keyword">        </span>{
-<a name="l00307"></a>00307           <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1></a>(_mat, _i, <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(_mat.size()));
-<a name="l00308"></a>00308         }
-<a name="l00309"></a>00309         
-<a name="l00310"></a>00310       <span class="keyword">private</span>:
-<a name="l00311"></a>00311         std::vector<std::map<unsigned int, SCALARTYPE> > & _mat;
-<a name="l00312"></a>00312         <span class="keyword">typename</span> std::map<unsigned int, SCALARTYPE>::iterator iter2;
-<a name="l00313"></a>00313         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _i;
-<a name="l00314"></a>00314         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _j;
-<a name="l00315"></a>00315     };
-<a name="l00316"></a>00316     
-<a name="l00317"></a>00317     
-<a name="l00318"></a>00318     
-<a name="l00323"></a>00323     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE>
-<a name="l00324"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">00324</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">sparse_matrix_adapter</a> : <span class="keyword">public</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">const_sparse_matrix_adapter</a><SCALARTYPE>
-<a name="l00325"></a>00325     {
-<a name="l00326"></a>00326         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">const_sparse_matrix_adapter<SCALARTYPE></a>   <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">BaseType</a>;
-<a name="l00327"></a>00327       <span class="keyword">public</span>:
-<a name="l00328"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a9aa7f7547cc95c129d669a1e1bc552d9">00328</a>         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, true></a>      <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">iterator1</a>;
-<a name="l00329"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#af9d07e03f84bf020e29667219e4c2ad8">00329</a>         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, false></a>     <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">iterator2</a>;
-<a name="l00330"></a>00330         
-<a name="l00331"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa97338a4e54ded964e4d45a623adbf30">00331</a>         <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa97338a4e54ded964e4d45a623adbf30">sparse_matrix_adapter</a>(std::vector<std::map<unsigned int, SCALARTYPE> > & mat) 
-<a name="l00332"></a>00332          : <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">BaseType</a>(mat), _mat(mat) { };
-<a name="l00333"></a>00333         
-<a name="l00334"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a61247f52ba999959dea8c58d3e8bc9a6">00334</a>         <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">iterator1</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a61247f52ba999959dea8c58d3e8bc9a6">begin1</a>() { <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a9aa7f7547cc95c129d669a1e1bc552d9">iterator1</a>(_mat, 0, 0); }
-<a name="l00335"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad76ba25f213ed92724da42386c401417">00335</a>         <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">iterator1</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad76ba25f213ed92724da42386c401417">end1</a>() { <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a9aa7f7547cc95c129d669a1e1bc552d9">iterator1</a>(_mat, _mat.size(), _mat.size()); }
-<a name="l00336"></a>00336 
-<a name="l00337"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a0fc615f1d97d2b19550357e227f85485">00337</a>         <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">iterator2</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a0fc615f1d97d2b19550357e227f85485">begin2</a>() { <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#af9d07e03f84bf020e29667219e4c2ad8">iterator2</a>(_mat, 0, 0); }
-<a name="l00338"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac9c68d7fd4173418872d2233f894630c">00338</a>         <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector&lt;std::map&lt;unsigned int...">iterator2</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac9c68d7fd4173418872d2233f894630c">end2</a>() { <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#af9d07e03f84bf020e29667219e4c2ad8">iterator2</a>(_mat, _mat.size(), _mat.size()); }
-<a name="l00339"></a>00339         
-<a name="l00340"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aafa6b6148eaffc7fb4518f473a5432ec">00340</a>         SCALARTYPE & <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aafa6b6148eaffc7fb4518f473a5432ec">operator()</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j) { <span class="keywordflow">return</span> _mat[i][j]; }
-<a name="l00341"></a>00341         
-<a name="l00342"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ab49c1922c02e19737b2330be0b76e455">00342</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ab49c1922c02e19737b2330be0b76e455">resize</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>)
-<a name="l00343"></a>00343         {
-<a name="l00344"></a>00344           <span class="keywordflow">if</span> (i>0)
-<a name="l00345"></a>00345             _mat.resize(i);
-<a name="l00346"></a>00346           <span class="keywordflow">if</span> (!preserve)
-<a name="l00347"></a>00347             <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>();
-<a name="l00348"></a>00348         }
-<a name="l00349"></a>00349         
-<a name="l00350"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">00350</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>()
-<a name="l00351"></a>00351         {
-<a name="l00352"></a>00352           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i<_mat.size(); ++i)
-<a name="l00353"></a>00353             _mat[i].<a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>();
-<a name="l00354"></a>00354         }
-<a name="l00355"></a>00355         
-<a name="l00356"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad851ae3af7f4c7b7441b653963dc434a">00356</a>         <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad851ae3af7f4c7b7441b653963dc434a">size1</a>() { <span class="keywordflow">return</span> _mat.size(); }
-<a name="l00357"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a5dc0d7ea09d7bebc57839beeae58a3f7">00357</a>         <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a5dc0d7ea09d7bebc57839beeae58a3f7">size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _mat.size(); } <span class="comment">//Note: Due to name hiding it is not sufficient to have it in the base class</span>
-<a name="l00358"></a>00358         
-<a name="l00359"></a>00359         <span class="comment">//assume a square matrix</span>
-<a name="l00360"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa1ab613bf0ce7b0cc370306d7425ffa2">00360</a>         <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa1ab613bf0ce7b0cc370306d7425ffa2">size2</a>() { <span class="keywordflow">return</span> _mat.size(); }
-<a name="l00361"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad5be0755605e62a9b2ca912ba0c6032e">00361</a>         <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad5be0755605e62a9b2ca912ba0c6032e">size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _mat.size(); } <span class="comment">//Note: Due to name hiding it is not sufficient to have it in the base class</span>
-<a name="l00362"></a>00362         
-<a name="l00363"></a>00363       <span class="keyword">private</span>:
-<a name="l00364"></a>00364         std::vector<std::map<unsigned int, SCALARTYPE> > & _mat;
-<a name="l00365"></a>00365     };
-<a name="l00366"></a>00366     
-<a name="l00367"></a>00367 
-<a name="l00368"></a>00368   }
-<a name="l00369"></a>00369 }
-<a name="l00370"></a>00370 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/annotated.html b/doc/doxygen/html/annotated.html
deleted file mode 100644
index 92e57f2..0000000
--- a/doc/doxygen/html/annotated.html
+++ /dev/null
@@ -1,286 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Structures</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>Data Structures</h1>  </div>
-</div>
-<div class="contents">
-Here are the data structures with brief descriptions:<table>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1backend.html">backend< dummy ></a></td><td class="indexvalue">A backend that provides contexts for ViennaCL objects (vector, matrix, etc.) </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a></td><td class="indexvalue">A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a></td><td class="indexvalue">A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></a></td><td class="indexvalue">A guard that checks whether the floating point type of GPU types is either float or double </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a></td><td class="indexvalue">A tag indicating iteration along increasing columns index of a matrix </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1column__major.html">column_major</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a></td><td class="indexvalue">A class representing a command queue </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix< SCALARTYPE, ALIGNMENT ></a></td><td class="indexvalue">A sparse square matrix in compressed sparse rows format </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">compressed_matrix< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">compressed_matrix< double, 4 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">compressed_matrix< double, 8 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">compressed_matrix< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">compressed_matrix< float, 4 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">compressed_matrix< float, 8 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER< T ></a></td><td class="indexvalue">Removes the const qualifier from a type </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">CONST_REMOVER< const T ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a></td><td class="indexvalue">A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> > </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter< SCALARTYPE ></a></td><td class="indexvalue">Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a></td><td class="indexvalue">A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated. VERY SLOW!! </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a></td><td class="indexvalue">A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row and column indices and val denotes the entry </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">coordinate_matrix< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">coordinate_matrix< double, 128 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">coordinate_matrix< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">coordinate_matrix< float, 128 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">CPU_SCALAR_TYPE_DEDUCER< T ></a></td><td class="indexvalue">Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T> </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">CPU_SCALAR_TYPE_DEDUCER< double ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">CPU_SCALAR_TYPE_DEDUCER< float ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a></td><td class="indexvalue">A class representing a compute device (e.g. a GPU) </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">DOUBLE_PRECISION_CHECKER< ScalarType ></a></td><td class="indexvalue">Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a <a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> is thrown </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">DOUBLE_PRECISION_CHECKER< double ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1enable__if.html">enable_if< b, T ></a></td><td class="indexvalue">Simple enable-if variant that uses the SFINAE pattern </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">enable_if< false, T ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy< SCALARTYPE ></a></td><td class="indexvalue">A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-users of the library </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">error_checker< T ></a></td><td class="indexvalue">An error reporting class. Template argument is used to avoid problems with external linkage </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html">first_letter_of_type< T ></a></td><td class="indexvalue">Helper meta class that returns the first letter of a particular type (float or double) </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">first_letter_of_type< double ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">first_letter_of_type< float ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a></td><td class="indexvalue">A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle< OCL_TYPE ></a></td><td class="indexvalue">Handle class the effectively represents a smart pointer for OpenCL handles </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">handle_inc_dec_helper< OCL_TYPE ></a></td><td class="indexvalue">Helper for OpenCL reference counting used by class handle </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">handle_inc_dec_helper< cl_command_queue ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">handle_inc_dec_helper< cl_context ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">handle_inc_dec_helper< cl_kernel ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">handle_inc_dec_helper< cl_mem ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">handle_inc_dec_helper< cl_program ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond< MatrixType ></a></td><td class="indexvalue">ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td><td class="indexvalue">ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a></td><td class="indexvalue">A tag for incomplete LU factorization with threshold (ILUT) </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__eigen.html">is_eigen< Tag ></a></td><td class="indexvalue">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a> </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">is_eigen< viennacl::tag_eigen ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__mtl4.html">is_mtl4< Tag ></a></td><td class="indexvalue">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a> </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">is_mtl4< viennacl::tag_mtl4 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__stl.html">is_stl< Tag ></a></td><td class="indexvalue">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a> </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">is_stl< viennacl::tag_stl ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__ublas.html">is_ublas< Tag ></a></td><td class="indexvalue">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a> </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">is_ublas< viennacl::tag_ublas ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__viennacl.html">is_viennacl< Tag ></a></td><td class="indexvalue">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a> </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">is_viennacl< viennacl::tag_viennacl ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond< MatrixType ></a></td><td class="indexvalue">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td><td class="indexvalue">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a></td><td class="indexvalue">A tag for a jacobi preconditioner </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a></td><td class="indexvalue">Represents an OpenCL kernel within ViennaCL </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a></td><td class="indexvalue">A class representing local (shared) OpenCL memory. Typically used as kernel argument </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html">lower_tag</a></td><td class="indexvalue">A tag class representing a lower triangular matrix </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1matrix.html">matrix< SCALARTYPE, F, ALIGNMENT ></a></td><td class="indexvalue">A dense matrix class </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">matrix_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">matrix_col< double, 16 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">matrix_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">matrix_col< float, 16 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression< LHS, RHS, OP ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator< ROWCOL, MATRIXTYPE ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></td><td class="indexvalue">Supply suitable increment functions for the iterators: </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 ></a></td><td class="indexvalue">Implementation of a helper meta class for deducing the correct kernels for the supplied matrix </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">matrix_prod_col_col_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">matrix_prod_col_col_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">matrix_prod_col_col_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">matrix_prod_col_col_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">matrix_prod_col_row_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">matrix_prod_col_row_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">matrix_prod_col_row_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">matrix_prod_col_row_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 ></a></td><td class="indexvalue">Deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectively </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">matrix_prod_row_col_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">matrix_prod_row_col_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">matrix_prod_row_col_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">matrix_prod_row_col_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">matrix_prod_row_row_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">matrix_prod_row_row_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">matrix_prod_row_row_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">matrix_prod_row_row_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">matrix_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">matrix_row< double, 16 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">matrix_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">matrix_row< float, 16 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a></td><td class="indexvalue">Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">matrix_solve_col_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">matrix_solve_col_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">matrix_solve_col_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">matrix_solve_col_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 ></a></td><td class="indexvalue">Deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2 </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">matrix_solve_row_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">matrix_solve_row_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">matrix_solve_row_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">matrix_solve_row_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">no_precond</a></td><td class="indexvalue">A tag class representing the use of no preconditioner </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a></td><td class="indexvalue">A XML parameter database using PugiXML. Allows to add tests for different devices and the like </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype< T ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a></td><td class="indexvalue">A tag indicating iteration along increasing row index of a matrix </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1row__major.html">row_major</a></td><td class="indexvalue">A tag for row-major storage of a dense matrix </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling< MatrixType ></a></td><td class="indexvalue">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td><td class="indexvalue">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a></td><td class="indexvalue">A tag for a row preconditioner </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1scalar.html">scalar< TYPE ></a></td><td class="indexvalue">This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type like float or double </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">scalar< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">scalar< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression< LHS, RHS, OP ></a></td><td class="indexvalue">A proxy for scalar expressions (e.g. from inner vector products) </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a></td><td class="indexvalue">A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> > </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter< SCALARTYPE ></a></td><td class="indexvalue">Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tag__none.html">tag_none</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of.html">tag_of< Sequence, Active ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">tag_of< std::vector< std::vector< T, A >, A > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">tag_of< std::vector< T, A > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::compressed_matrix< T, I > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::coordinate_matrix< T, I > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">tag_of< viennacl::matrix< T, F, alignment > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">tag_of< viennacl::vector< T, alignment > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tag__stl.html">tag_stl</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1to__string.html">to_string< T ></a></td><td class="indexvalue">Helper meta-class that converts a type to a string </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">to_string< double ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">to_string< float ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">unit_lower_tag</a></td><td class="indexvalue">A tag class representing a lower triangular matrix with unit diagonal </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">unit_upper_tag</a></td><td class="indexvalue">A tag class representing an upper triangular matrix with unit diagonal </td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">upper_tag</a></td><td class="indexvalue">A tag class representing an upper triangular matrix </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type< T ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1vector.html">vector< SCALARTYPE, ALIGNMENT ></a></td><td class="indexvalue">A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::vector </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">vector< double, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">vector< double, 16 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">vector< double, 4 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">vector< float, 1 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">vector< float, 16 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">vector< float, 4 ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression< LHS, RHS, OP ></a></td><td class="indexvalue">An expression template class that represents a binary operation that yields a vector </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR< LHS, RHS ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL< LHS, RHS ></a></td><td class="indexvalue">Extracts the vector type from one of the two arguments. Used for the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> type </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator< SCALARTYPE, ALIGNMENT ></a></td><td class="indexvalue">A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!! </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">VECTOR_SIZE_DEDUCER< LHS, RHS, OP ></a></td><td class="indexvalue">Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/backend_8hpp.html b/doc/doxygen/html/backend_8hpp.html
deleted file mode 100644
index d044838..0000000
--- a/doc/doxygen/html/backend_8hpp.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/backend.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/backend.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementations of the OpenCL backend, where all contexts are stored in.  
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include "<a class="el" href="context_8hpp_source.html">viennacl/ocl/context.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="enqueue_8hpp_source.html">viennacl/ocl/enqueue.hpp</a>"</code><br/>
-
-<p><a href="backend_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html">backend< dummy ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A backend that provides contexts for ViennaCL objects (vector, matrix, etc.).  <a href="classviennacl_1_1ocl_1_1backend.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf">current_context</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the current context.  <a href="#a0c2a174533a0aca403ff7c4aa802edcf"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6">switch_context</a> (long i)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for switching the current context.  <a href="#acc1a7460a9ff237b7c0306c32c3d34c6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb">setup_context</a> (long i, std::vector< cl_device_id > const &devices)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting devices for a context.  <a href="#add1725d48cfd159ce187e287369d1cdb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a643e413cdc3e3d682c8ae0c6f0a83e0a">setup_context</a> (long i, cl_context c, std::vector< cl_device_id > const &devices, std::map< cl_device_id, std::vector< cl_command_queue > > const &queues)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting up a context in ViennaCL from an existing OpenCL context.  <a href="#a643e413cdc3e3d682c8ae0c6f0a83e0a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aae5ebc6a53d1c2ac134b5d955c61ad9e">setup_context</a> (long i, cl_context c, std::vector< cl_device_id > const &devices, std::vector< cl_command_queue > const &queues)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting up a context in ViennaCL from an existing OpenCL context.  <a href="#aae5ebc6a53d1c2ac134b5d955c61ad9e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a4ee09e7150e7158ac0e2fbfe21740138">setup_context</a> (long i, cl_context c, cl_device_id d, cl_command_queue q)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting up a context in ViennaCL from an existing OpenCL context.  <a href="#a4ee09e7150e7158ac0e2fbfe21740138"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd">set_context_device_type</a> (long i, cl_device_type dev_type)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context.  <a href="#a11349d9bbd1691595c6ac23d03b294fd"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a0bda50e7a1d1ce32d0eb999bcf40ff65">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">viennacl::ocl::gpu_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to GPUs.  <a href="#a0bda50e7a1d1ce32d0eb999bcf40ff65"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aae6d53d33250af634366a082eb389e1e">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">viennacl::ocl::cpu_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to CPUs.  <a href="#aae6d53d33250af634366a082eb389e1e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aa55ca72f1d88e6366d9d7555d5fd3e3c">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">viennacl::ocl::default_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to the default OpenCL device type.  <a href="#aa55ca72f1d88e6366d9d7555d5fd3e3c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a8eb7b871db32c1425afe547854885e83">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">viennacl::ocl::accelerator_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to accelerators.  <a href="#a8eb7b871db32c1425afe547854885e83"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a">get_queue</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the default queue for the currently active device in the active context.  <a href="#ac7871671987d322a8766aea79b1cd17a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a053c7351f8606ff49117e251683a77b4">get_queue</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> d, unsigned int queue_id=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the queue for a particular device in the current active context.  <a href="#a053c7351f8606ff49117e251683a77b4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aaa732391e632ec192953cc997fa269df">get_queue</a> (cl_device_id dev_id, unsigned int queue_id=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the queue for a particular device in the current active context.  <a href="#aaa732391e632ec192953cc997fa269df"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f">get_kernel</a> (std::string const &prog_name, std::string const &kernel_name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the kernel for a particular program from the current active context.  <a href="#a61a73653d92f1eb2ef9c649ec253e29f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#ac8bcead4c47a372eef33d7d660fa0072">switch_device</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> &d)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for switching the active device in the current context.  <a href="#ac8bcead4c47a372eef33d7d660fa0072"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5">current_device</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the active device in the current context.  <a href="#a31b4bfa886efdae7ada1c0c5f2591ed5"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of the OpenCL backend, where all contexts are stored in. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/backend_8hpp_source.html b/doc/doxygen/html/backend_8hpp_source.html
deleted file mode 100644
index 836525f..0000000
--- a/doc/doxygen/html/backend_8hpp_source.html
+++ /dev/null
@@ -1,274 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/backend.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/backend.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="backend_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_BACKEND_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_BACKEND_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="context_8hpp.html">viennacl/ocl/context.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="enqueue_8hpp.html" title="Enqueues kernels into command queues.">viennacl/ocl/enqueue.hpp</a>"</span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a><a class="code" href="namespaceviennacl_1_1ocl.html">00028</a>   <span class="keyword">namespace </span>ocl
-<a name="l00029"></a>00029   {
-<a name="l00030"></a>00030     
-<a name="l00032"></a>00032     <span class="keyword">template</span> <<span class="keywordtype">bool</span> dummy = false>  <span class="comment">//never use parameter other than default (introduced for linkage issues only)</span>
-<a name="l00033"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html">00033</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1backend.html" title="A backend that provides contexts for ViennaCL objects (vector, matrix, etc.).">backend</a>
-<a name="l00034"></a>00034     {
-<a name="l00035"></a>00035       <span class="keyword">public</span>:
-<a name="l00040"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#ab476349b4b424527038f7484c1f0097b">00040</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1backend.html#ab476349b4b424527038f7484c1f0097b" title="Switches the current context to the context identified by i.">switch_context</a>(<span class="keywordtype">long</span> i)
-<a name="l00041"></a>00041         {
-<a name="l00042"></a>00042           current_context_id_ = i;
-<a name="l00043"></a>00043         }
-<a name="l00044"></a>00044         
-<a name="l00046"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#a672f8aadf6dc07b765887b69d4ebbf7d">00046</a>         <span class="keyword">static</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & <a class="code" href="classviennacl_1_1ocl_1_1backend.html#a672f8aadf6dc07b765887b69d4ebbf7d" title="Returns the current active context.">current_context</a>()
-<a name="l00047"></a>00047         {
-<a name="l00048"></a>00048           <span class="keywordflow">if</span> (!initialized_[current_context_id_])
-<a name="l00049"></a>00049           {
-<a name="l00050"></a>00050             <span class="comment">//std::cout << "Initializing context no. " << current_context_id_ << std::endl;</span>
-<a name="l00051"></a>00051             contexts_[current_context_id_].init();
-<a name="l00052"></a>00052             <span class="comment">//create one queue per device:</span>
-<a name="l00053"></a>00053             std::vector<viennacl::ocl::device> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a> = contexts_[current_context_id_].devices();
-<a name="l00054"></a>00054             <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j<devices.size(); ++j)
-<a name="l00055"></a>00055               contexts_[current_context_id_].add_queue(devices[j]);
-<a name="l00056"></a>00056             initialized_[current_context_id_] = <span class="keyword">true</span>;
-<a name="l00057"></a>00057             <span class="comment">/*</span>
-<a name="l00058"></a>00058 <span class="comment">            std::cout << "Context no. " << current_context_id_ << " initialized with " << devices.size() << " devices" << std::endl;</span>
-<a name="l00059"></a>00059 <span class="comment">            std::cout << "Device id: " << devices[0].id() << std::endl;</span>
-<a name="l00060"></a>00060 <span class="comment">            std::cout << "Current device id: " << contexts_[current_context_id_].current_device().id() << std::endl; */</span>
-<a name="l00061"></a>00061           }
-<a name="l00062"></a>00062           <span class="keywordflow">return</span> contexts_[current_context_id_];
-<a name="l00063"></a>00063         }
-<a name="l00064"></a>00064         
-<a name="l00066"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#a825af6f15ffeb9448de160661e5bb377">00066</a>         <span class="keyword">static</span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> & <a class="code" href="classviennacl_1_1ocl_1_1backend.html#a825af6f15ffeb9448de160661e5bb377" title="Returns the current queue for the active device in the active context.">get_queue</a>()
-<a name="l00067"></a>00067         {
-<a name="l00068"></a>00068           <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1ocl_1_1backend.html#a672f8aadf6dc07b765887b69d4ebbf7d" title="Returns the current active context.">current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a>();
-<a name="l00069"></a>00069         }
-<a name="l00070"></a>00070 
-<a name="l00076"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734">00076</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734" title="Sets a number of devices for the context.">setup_context</a>(<span class="keywordtype">long</span> i,
-<a name="l00077"></a>00077                                   std::vector<cl_device_id> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>)
-<a name="l00078"></a>00078         {
-<a name="l00079"></a>00079           <span class="keywordflow">if</span> (initialized_[i])
-<a name="l00080"></a>00080             std::cerr << <span class="stringliteral">"ViennaCL: Warning in init_context(): Providing a list of devices has no effect, because context for ViennaCL is already created!"</span> << std::endl;
-<a name="l00081"></a>00081           <span class="keywordflow">else</span>
-<a name="l00082"></a>00082           {
-<a name="l00083"></a>00083             <span class="comment">//set devices for context:</span>
-<a name="l00084"></a>00084             <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j<devices.size(); ++j)
-<a name="l00085"></a>00085               contexts_[i].add_device(devices[j]);
-<a name="l00086"></a>00086           }
-<a name="l00087"></a>00087         }
-<a name="l00088"></a>00088 
-<a name="l00096"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#ac0a9ddc7f74148e9f5fe8bc5872e4da7">00096</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734" title="Sets a number of devices for the context.">setup_context</a>(<span class="keywordtype">long</span> i,
-<a name="l00097"></a>00097                                   cl_context c,
-<a name="l00098"></a>00098                                   std::vector<cl_device_id> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>,
-<a name="l00099"></a>00099                                   std::map< cl_device_id, std::vector< cl_command_queue > > <span class="keyword">const</span> & queues)
-<a name="l00100"></a>00100         {
-<a name="l00101"></a>00101           assert(devices.size() == queues.size() && <span class="stringliteral">"ViennaCL expects one queue per device!"</span>);
-<a name="l00102"></a>00102           
-<a name="l00103"></a>00103           <span class="keywordflow">if</span> (initialized_[i])
-<a name="l00104"></a>00104             std::cerr << <span class="stringliteral">"ViennaCL: Warning in init_context(): Providing a list of devices has no effect, because context for ViennaCL is already created!"</span> << std::endl;
-<a name="l00105"></a>00105           <span class="keywordflow">else</span>
-<a name="l00106"></a>00106           {
-<a name="l00107"></a>00107             <span class="comment">//set devices for context:</span>
-<a name="l00108"></a>00108             <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j<devices.size(); ++j)
-<a name="l00109"></a>00109               contexts_[i].add_device(devices[j]);
-<a name="l00110"></a>00110             
-<a name="l00111"></a>00111             <span class="comment">//init context:</span>
-<a name="l00112"></a>00112             contexts_[i].init(c);
-<a name="l00113"></a>00113             
-<a name="l00114"></a>00114             <span class="comment">//add queues:</span>
-<a name="l00115"></a>00115             <span class="keyword">typedef</span> <span class="keyword">typename</span> std::map< cl_device_id, std::vector< cl_command_queue > >::const_iterator queue_iterator;
-<a name="l00116"></a>00116             <span class="keywordflow">for</span> (queue_iterator qit = queues.begin();
-<a name="l00117"></a>00117                                 qit != queues.end();
-<a name="l00118"></a>00118                               ++qit)
-<a name="l00119"></a>00119             {
-<a name="l00120"></a>00120               std::vector<cl_command_queue> <span class="keyword">const</span> & queues_for_device = qit->second;
-<a name="l00121"></a>00121               <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j=0; j<queues_for_device.size(); ++j)
-<a name="l00122"></a>00122                 contexts_[i].add_queue(qit->first, queues_for_device[j]);
-<a name="l00123"></a>00123             }
-<a name="l00124"></a>00124             
-<a name="l00125"></a>00125             initialized_[i] = <span class="keyword">true</span>;
-<a name="l00126"></a>00126           }
-<a name="l00127"></a>00127         }
-<a name="l00128"></a>00128 
-<a name="l00136"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#a2d0605c63ed50df91d198700387e1372">00136</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734" title="Sets a number of devices for the context.">setup_context</a>(<span class="keywordtype">long</span> i, cl_context c, std::vector<cl_device_id> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>, std::vector<cl_command_queue> <span class="keyword">const</span> & queue)
-<a name="l00137"></a>00137         {
-<a name="l00138"></a>00138           assert(devices.size() == queue.size() && <span class="stringliteral">"ViennaCL expects one queue per device!"</span>);
-<a name="l00139"></a>00139           
-<a name="l00140"></a>00140           <span class="comment">//wrap queue vector into map</span>
-<a name="l00141"></a>00141           std::map< cl_device_id, std::vector<cl_command_queue> > queues_map;
-<a name="l00142"></a>00142           <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j<devices.size(); ++j)
-<a name="l00143"></a>00143             queues_map[devices[j]].push_back(queue[j]);
-<a name="l00144"></a>00144           
-<a name="l00145"></a>00145           <a class="code" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734" title="Sets a number of devices for the context.">setup_context</a>(i, c, devices, queues_map);
-<a name="l00146"></a>00146         }
-<a name="l00147"></a>00147 
-<a name="l00149"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#a4c8905ac7d2b12cdb0d3582561d78eff">00149</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1backend.html#a4c8905ac7d2b12cdb0d3582561d78eff" title="Sets the context device type.">set_context_device_type</a>(<span class="keywordtype">long</span> i, cl_device_type t)
-<a name="l00150"></a>00150         {
-<a name="l00151"></a>00151           contexts_[i].default_device_type(t);
-<a name="l00152"></a>00152         }
-<a name="l00153"></a>00153 
-<a name="l00154"></a>00154       <span class="keyword">private</span>:
-<a name="l00155"></a>00155         <span class="keyword">static</span> <span class="keywordtype">long</span> current_context_id_;
-<a name="l00156"></a>00156         <span class="keyword">static</span> std::map<long, bool> initialized_;
-<a name="l00157"></a>00157         <span class="keyword">static</span> std::map<long, viennacl::ocl::context> contexts_;
-<a name="l00158"></a>00158     };
-<a name="l00159"></a>00159     
-<a name="l00160"></a>00160     <span class="keyword">template</span> <<span class="keywordtype">bool</span> dummy>
-<a name="l00161"></a>00161     <span class="keywordtype">long</span> backend<dummy>::current_context_id_ = 0;
-<a name="l00162"></a>00162 
-<a name="l00163"></a>00163     <span class="keyword">template</span> <<span class="keywordtype">bool</span> dummy>
-<a name="l00164"></a>00164     std::map<long, bool> backend<dummy>::initialized_;
-<a name="l00165"></a>00165 
-<a name="l00166"></a>00166     <span class="keyword">template</span> <<span class="keywordtype">bool</span> dummy>
-<a name="l00167"></a>00167     std::map<long, viennacl::ocl::context> backend<dummy>::contexts_;
-<a name="l00168"></a>00168     
-<a name="l00170"></a>00170 
-<a name="l00171"></a>00171     <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">current_context</a>()
-<a name="l00172"></a>00172     {
-<a name="l00173"></a>00173       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::backend<>::current_context</a>();
-<a name="l00174"></a>00174     }
-<a name="l00175"></a>00175 
-<a name="l00177"></a><a class="code" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6">00177</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6" title="Convenience function for switching the current context.">switch_context</a>(<span class="keywordtype">long</span> i)
-<a name="l00178"></a>00178     {
-<a name="l00179"></a>00179       <a class="code" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6" title="Convenience function for switching the current context.">viennacl::ocl::backend<>::switch_context</a>(i);
-<a name="l00180"></a>00180     }
-<a name="l00181"></a>00181     
-<a name="l00182"></a>00182 
-<a name="l00184"></a><a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb">00184</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">setup_context</a>(<span class="keywordtype">long</span> i,
-<a name="l00185"></a>00185                               std::vector<cl_device_id> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>)
-<a name="l00186"></a>00186     {
-<a name="l00187"></a>00187       <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">viennacl::ocl::backend<>::setup_context</a>(i, devices);
-<a name="l00188"></a>00188     }
-<a name="l00189"></a>00189 
-<a name="l00191"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a643e413cdc3e3d682c8ae0c6f0a83e0a">00191</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">setup_context</a>(<span class="keywordtype">long</span> i,
-<a name="l00192"></a>00192                               cl_context c,
-<a name="l00193"></a>00193                               std::vector<cl_device_id> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>,
-<a name="l00194"></a>00194                               std::map< cl_device_id, std::vector<cl_command_queue> > <span class="keyword">const</span> & queues)
-<a name="l00195"></a>00195     {
-<a name="l00196"></a>00196       <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">viennacl::ocl::backend<>::setup_context</a>(i, c, devices, queues);
-<a name="l00197"></a>00197     }
-<a name="l00198"></a>00198     
-<a name="l00200"></a><a class="code" href="namespaceviennacl_1_1ocl.html#aae5ebc6a53d1c2ac134b5d955c61ad9e">00200</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">setup_context</a>(<span class="keywordtype">long</span> i, cl_context c, std::vector<cl_device_id> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>, std::vector<cl_command_queue> <span class="keyword">const</span> & queues)
-<a name="l00201"></a>00201     {
-<a name="l00202"></a>00202       <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">viennacl::ocl::backend<>::setup_context</a>(i, c, devices, queues);
-<a name="l00203"></a>00203     }
-<a name="l00204"></a>00204 
-<a name="l00206"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a4ee09e7150e7158ac0e2fbfe21740138">00206</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">setup_context</a>(<span class="keywordtype">long</span> i, cl_context c, cl_device_id d, cl_command_queue q)
-<a name="l00207"></a>00207     {
-<a name="l00208"></a>00208       std::vector<cl_device_id> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>(1);
-<a name="l00209"></a>00209       std::vector<cl_command_queue> queues(1);
-<a name="l00210"></a>00210       devices[0] = d;
-<a name="l00211"></a>00211       queues[0] = q;
-<a name="l00212"></a>00212       <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">viennacl::ocl::backend<>::setup_context</a>(i, c, devices, queues);
-<a name="l00213"></a>00213     }
-<a name="l00214"></a>00214 
-<a name="l00216"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd">00216</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(<span class="keywordtype">long</span> i, cl_device_type dev_type)
-<a name="l00217"></a>00217     {
-<a name="l00218"></a>00218       <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">viennacl::ocl::backend<>::set_context_device_type</a>(i, dev_type);
-<a name="l00219"></a>00219     }
-<a name="l00220"></a>00220 
-<a name="l00222"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a0bda50e7a1d1ce32d0eb999bcf40ff65">00222</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(<span class="keywordtype">long</span> i, <a class="code" href="structviennacl_1_1ocl_1_1gpu__tag.html">viennacl::ocl::gpu_tag</a>)
-<a name="l00223"></a>00223     {
-<a name="l00224"></a>00224       <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(i, CL_DEVICE_TYPE_GPU);
-<a name="l00225"></a>00225     }
-<a name="l00226"></a>00226 
-<a name="l00228"></a><a class="code" href="namespaceviennacl_1_1ocl.html#aae6d53d33250af634366a082eb389e1e">00228</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(<span class="keywordtype">long</span> i, <a class="code" href="structviennacl_1_1ocl_1_1cpu__tag.html">viennacl::ocl::cpu_tag</a>)
-<a name="l00229"></a>00229     {
-<a name="l00230"></a>00230       <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(i, CL_DEVICE_TYPE_CPU);
-<a name="l00231"></a>00231     }
-<a name="l00232"></a>00232 
-<a name="l00234"></a><a class="code" href="namespaceviennacl_1_1ocl.html#aa55ca72f1d88e6366d9d7555d5fd3e3c">00234</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(<span class="keywordtype">long</span> i, <a class="code" href="structviennacl_1_1ocl_1_1default__tag.html">viennacl::ocl::default_tag</a>)
-<a name="l00235"></a>00235     {
-<a name="l00236"></a>00236       <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(i, CL_DEVICE_TYPE_DEFAULT);
-<a name="l00237"></a>00237     }
-<a name="l00238"></a>00238 
-<a name="l00240"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a8eb7b871db32c1425afe547854885e83">00240</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(<span class="keywordtype">long</span> i, <a class="code" href="structviennacl_1_1ocl_1_1accelerator__tag.html">viennacl::ocl::accelerator_tag</a>)
-<a name="l00241"></a>00241     {
-<a name="l00242"></a>00242       <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(i, CL_DEVICE_TYPE_ACCELERATOR);
-<a name="l00243"></a>00243     }
-<a name="l00244"></a>00244 
-<a name="l00246"></a>00246 
-<a name="l00247"></a><a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a">00247</a>     <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> & <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">get_queue</a>()
-<a name="l00248"></a>00248     {
-<a name="l00249"></a>00249       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a>();
-<a name="l00250"></a>00250     }
-<a name="l00251"></a>00251     
-<a name="l00253"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a053c7351f8606ff49117e251683a77b4">00253</a>     <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> & <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">get_queue</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> d, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queue_id = 0)
-<a name="l00254"></a>00254     {
-<a name="l00255"></a>00255       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a>(d.<a class="code" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06" title="Returns the OpenCL device id.">id</a>(), queue_id);
-<a name="l00256"></a>00256     }
-<a name="l00257"></a>00257 
-<a name="l00259"></a><a class="code" href="namespaceviennacl_1_1ocl.html#aaa732391e632ec192953cc997fa269df">00259</a>     <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> & <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">get_queue</a>(cl_device_id dev_id, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queue_id = 0)
-<a name="l00260"></a>00260     {
-<a name="l00261"></a>00261       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a>(dev_id, queue_id);
-<a name="l00262"></a>00262     }
-<a name="l00263"></a>00263 
-<a name="l00264"></a>00264 
-<a name="l00266"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f">00266</a>     <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">get_kernel</a>(std::string <span class="keyword">const</span> & prog_name, std::string <span class="keyword">const</span> & kernel_name)
-<a name="l00267"></a>00267     {
-<a name="l00268"></a>00268       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name).<a class="code" href="classviennacl_1_1ocl_1_1program.html#a593fbca8c511a382654582513faf24fb" title="Returns the kernel with the provided name.">get_kernel</a>(kernel_name);
-<a name="l00269"></a>00269     }
-<a name="l00270"></a>00270 
-<a name="l00272"></a><a class="code" href="namespaceviennacl_1_1ocl.html#ac8bcead4c47a372eef33d7d660fa0072">00272</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#ac8bcead4c47a372eef33d7d660fa0072" title="Convenience function for switching the active device in the current context.">switch_device</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> & d)
-<a name="l00273"></a>00273     {
-<a name="l00274"></a>00274       <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9f74ed0d416018dc2825ddc6f4d8101e" title="Switches the current device to the i-th device in this context.">switch_device</a>(d);
-<a name="l00275"></a>00275     }
-<a name="l00276"></a>00276     
-<a name="l00278"></a>00278     <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">current_device</a>()
-<a name="l00279"></a>00279     {
-<a name="l00280"></a>00280       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#ad1be9bca91f95427bc2875827baadab4" title="Returns the current device.">current_device</a>();
-<a name="l00281"></a>00281     }
-<a name="l00282"></a>00282 
-<a name="l00283"></a>00283   } <span class="comment">//ocl</span>
-<a name="l00284"></a>00284 } <span class="comment">//viennacl</span>
-<a name="l00285"></a>00285 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/bc_s.png b/doc/doxygen/html/bc_s.png
deleted file mode 100644
index e401862..0000000
Binary files a/doc/doxygen/html/bc_s.png and /dev/null differ
diff --git a/doc/doxygen/html/bicgstab_8hpp.html b/doc/doxygen/html/bicgstab_8hpp.html
deleted file mode 100644
index 27b3732..0000000
--- a/doc/doxygen/html/bicgstab_8hpp.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/bicgstab.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/bicgstab.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>The stabilized bi-conjugate gradient method is implemented here.  
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <cmath></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="prod_8hpp_source.html">viennacl/linalg/prod.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="inner__prod_8hpp_source.html">viennacl/linalg/inner_prod.hpp</a>"</code><br/>
-
-<p><a href="bicgstab_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function.  <a href="classviennacl_1_1linalg_1_1bicgstab__tag.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55">solve</a> (const MatrixType &matrix, VectorType const &rhs, bicgstab_tag const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the stabilized Bi-conjugate gradient solver.  <a href="#ab50f87d195eb82ddbe5ce910e914bc55"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7eb0bd2b912aa3c5d83aa4801e7e89fd">solve</a> (const MatrixType &matrix, VectorType const &rhs, bicgstab_tag const &tag, <a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">viennacl::linalg::no_precond</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType , typename PreconditionerType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#adbcb7f6a46ca520d01f6ce53f83f5069">solve</a> (const MatrixType &matrix, VectorType const &rhs, bicgstab_tag const &tag, PreconditionerType const &precond)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the preconditioned stabilized Bi-conjugate gradient solver.  <a href="#adbcb7f6a46ca520d01f6ce53f83f5069"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The stabilized bi-conjugate gradient method is implemented here. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/bicgstab_8hpp_source.html b/doc/doxygen/html/bicgstab_8hpp_source.html
deleted file mode 100644
index 0370bdc..0000000
--- a/doc/doxygen/html/bicgstab_8hpp_source.html
+++ /dev/null
@@ -1,256 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/bicgstab.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/bicgstab.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="bicgstab_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_BICGSTAB_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_BICGSTAB_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <cmath></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="prod_8hpp.html" title="Generic interface for matrix-vector and matrix-matrix products. See viennacl/linalg/vector_operations...">viennacl/linalg/prod.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="inner__prod_8hpp.html" title="Generic interface for the computation of inner products. See viennacl/linalg/vector_operations.hpp for implementations.">viennacl/linalg/inner_prod.hpp</a>"</span>
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>viennacl
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031   <span class="keyword">namespace </span>linalg
-<a name="l00032"></a>00032   {
-<a name="l00033"></a>00033     
-<a name="l00036"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">00036</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html" title="A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for d...">bicgstab_tag</a>
-<a name="l00037"></a>00037     {
-<a name="l00038"></a>00038       <span class="keyword">public</span>:
-<a name="l00044"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a5bc5a824cc4327c98fba2137408743e5">00044</a>         <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a5bc5a824cc4327c98fba2137408743e5" title="The constructor.">bicgstab_tag</a>(<span class="keywordtype">double</span> tol = 1e-8, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a> = 300) : _tol(tol), _iterations(<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>) {};
-<a name="l00045"></a>00045       
-<a name="l00047"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3">00047</a>         <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _tol; }
-<a name="l00049"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">00049</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _iterations; }
-<a name="l00050"></a>00050         
-<a name="l00052"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">00052</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> iters_taken_; }
-<a name="l00053"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a0643bc87331b97f3a90e71ec54ff205b">00053</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a0643bc87331b97f3a90e71ec54ff205b">iters</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ iters_taken_ = i; }
-<a name="l00054"></a>00054         
-<a name="l00056"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f">00056</a>         <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> last_error_; }
-<a name="l00058"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a086bf00d9923c3f80f62de3f8491a322">00058</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a086bf00d9923c3f80f62de3f8491a322" title="Sets the estimated relative error at the end of the solver run.">error</a>(<span class="keywordtype">double</span> e)<span class="keyword"> const </span>{ last_error_ = e; }
-<a name="l00059"></a>00059         
-<a name="l00060"></a>00060       <span class="keyword">private</span>:
-<a name="l00061"></a>00061         <span class="keywordtype">double</span> _tol;
-<a name="l00062"></a>00062         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _iterations;
-<a name="l00063"></a>00063 
-<a name="l00064"></a>00064         <span class="comment">//return values from solver</span>
-<a name="l00065"></a>00065         <span class="keyword">mutable</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iters_taken_;
-<a name="l00066"></a>00066         <span class="keyword">mutable</span> <span class="keywordtype">double</span> last_error_;
-<a name="l00067"></a>00067     };
-<a name="l00068"></a>00068     
-<a name="l00069"></a>00069 
-<a name="l00079"></a>00079     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00080"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55">00080</a>     VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html" title="A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for d...">bicgstab_tag</a> <span class="keyword">const</span> & tag)
-<a name="l00081"></a>00081     {
-<a name="l00082"></a>00082       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">viennacl::tools::result_of::value_type<VectorType>::type</a>            ScalarType;
-<a name="l00083"></a>00083       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType</a>    CPU_ScalarType;
-<a name="l00084"></a>00084       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> problem_size = <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits::size</a>(rhs);
-<a name="l00085"></a>00085       VectorType result(problem_size);
-<a name="l00086"></a>00086       <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(result);
-<a name="l00087"></a>00087 
-<a name="l00088"></a>00088       VectorType residual = rhs;
-<a name="l00089"></a>00089       VectorType p = rhs;
-<a name="l00090"></a>00090       VectorType r0star = rhs;
-<a name="l00091"></a>00091       VectorType tmp0(problem_size);
-<a name="l00092"></a>00092       VectorType tmp1(problem_size);
-<a name="l00093"></a>00093       VectorType s(problem_size);
-<a name="l00094"></a>00094 
-<a name="l00095"></a>00095       CPU_ScalarType ip_rr0star = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(rhs,r0star);
-<a name="l00096"></a>00096       CPU_ScalarType norm_rhs_host = ip_rr0star;
-<a name="l00097"></a>00097       CPU_ScalarType beta;
-<a name="l00098"></a>00098       CPU_ScalarType alpha;
-<a name="l00099"></a>00099       CPU_ScalarType omega;
-<a name="l00100"></a>00100       ScalarType inner_prod_temp; <span class="comment">//temporary variable for inner product computation</span>
-<a name="l00101"></a>00101       ScalarType new_ip_rr0star = 0;
-<a name="l00102"></a>00102       
-<a name="l00103"></a>00103       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>(); ++i)
-<a name="l00104"></a>00104       {
-<a name="l00105"></a>00105         tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>(i+1);
-<a name="l00106"></a>00106         tmp0 = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, p);
-<a name="l00107"></a>00107         <span class="comment">//alpha = ip_rr0star / viennacl::linalg::inner_prod(tmp0, r0star);</span>
-<a name="l00108"></a>00108         inner_prod_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp0, r0star);
-<a name="l00109"></a>00109         alpha = ip_rr0star / <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(inner_prod_temp);
-<a name="l00110"></a>00110 
-<a name="l00111"></a>00111         <span class="comment">//s = residual - alpha*tmp0;</span>
-<a name="l00112"></a>00112         s = residual;
-<a name="l00113"></a>00113         s -= alpha*tmp0;
-<a name="l00114"></a>00114         
-<a name="l00115"></a>00115         <span class="comment">//std::cout << "alpha: " << alpha << std::endl;</span>
-<a name="l00116"></a>00116         <span class="comment">/*std::cout << "s[0]: " << s[0] << std::endl;</span>
-<a name="l00117"></a>00117 <span class="comment">        std::cout << "s[end]: " << s[s.size()-1] << std::endl;</span>
-<a name="l00118"></a>00118 <span class="comment">        for (long k=0; k<10; ++k)</span>
-<a name="l00119"></a>00119 <span class="comment">          std::cout << s[k] << std::endl;</span>
-<a name="l00120"></a>00120 <span class="comment">        exit(0);*/</span>
-<a name="l00121"></a>00121         
-<a name="l00122"></a>00122         
-<a name="l00123"></a>00123         tmp1 = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, s);
-<a name="l00124"></a>00124         <span class="comment">//omega = viennacl::linalg::inner_prod(tmp1, s) / viennacl::linalg::inner_prod(tmp1, tmp1);</span>
-<a name="l00125"></a>00125         inner_prod_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp1, s);
-<a name="l00126"></a>00126         omega = inner_prod_temp;
-<a name="l00127"></a>00127         inner_prod_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp1, tmp1);
-<a name="l00128"></a>00128         omega /= inner_prod_temp;
-<a name="l00129"></a>00129         
-<a name="l00130"></a>00130         <span class="comment">//result += alpha * p + omega * s;</span>
-<a name="l00131"></a>00131         result += alpha * p;
-<a name="l00132"></a>00132         result += omega * s;
-<a name="l00133"></a>00133         
-<a name="l00134"></a>00134         <span class="comment">//residual = s - omega * tmp1;</span>
-<a name="l00135"></a>00135         residual = s;
-<a name="l00136"></a>00136         residual -= omega*tmp1;
-<a name="l00137"></a>00137         
-<a name="l00138"></a>00138         new_ip_rr0star = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual,r0star);
-<a name="l00139"></a>00139         <span class="keywordflow">if</span> (std::fabs( <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual, residual) / norm_rhs_host) < tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>() * tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>())
-<a name="l00140"></a>00140           <span class="keywordflow">break</span>;
-<a name="l00141"></a>00141         
-<a name="l00142"></a>00142         <span class="comment">//beta = new_ip_rr0star / ip_rr0star * alpha/omega;</span>
-<a name="l00143"></a>00143         CPU_ScalarType cpu_temp = new_ip_rr0star; <span class="comment">//read from device only once</span>
-<a name="l00144"></a>00144         beta = cpu_temp / ip_rr0star * alpha/omega;
-<a name="l00145"></a>00145         ip_rr0star = cpu_temp;
-<a name="l00146"></a>00146 
-<a name="l00147"></a>00147         <span class="comment">//p = residual + beta * (p - omega*tmp0);</span>
-<a name="l00148"></a>00148         p -= omega * tmp0;
-<a name="l00149"></a>00149         p *= beta;
-<a name="l00150"></a>00150         p += residual;
-<a name="l00151"></a>00151       }
-<a name="l00152"></a>00152       
-<a name="l00153"></a>00153       <span class="comment">//store last error estimate:</span>
-<a name="l00154"></a>00154       tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(std::sqrt(std::fabs(<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual, residual) / norm_rhs_host)));
-<a name="l00155"></a>00155       
-<a name="l00156"></a>00156       <span class="keywordflow">return</span> result;
-<a name="l00157"></a>00157     }
-<a name="l00158"></a>00158 
-<a name="l00159"></a>00159     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00160"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a7eb0bd2b912aa3c5d83aa4801e7e89fd">00160</a>     VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html" title="A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for d...">bicgstab_tag</a> <span class="keyword">const</span> & tag, <a class="code" href="classviennacl_1_1linalg_1_1no__precond.html" title="A tag class representing the use of no preconditioner.">viennacl::linalg::no_precond</a>)
-<a name="l00161"></a>00161     {
-<a name="l00162"></a>00162       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(matrix, rhs, tag);
-<a name="l00163"></a>00163     }
-<a name="l00164"></a>00164 
-<a name="l00175"></a>00175     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType, <span class="keyword">typename</span> PreconditionerType>
-<a name="l00176"></a><a class="code" href="namespaceviennacl_1_1linalg.html#adbcb7f6a46ca520d01f6ce53f83f5069">00176</a>     VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html" title="A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for d...">bicgstab_tag</a> <span class="keyword">const</span> & tag, PreconditionerType <span class="keyword">const</span> & precond)
-<a name="l00177"></a>00177     {
-<a name="l00178"></a>00178       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">viennacl::tools::result_of::value_type<VectorType>::type</a>    ScalarType;
-<a name="l00179"></a>00179       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType</a>    CPU_ScalarType;
-<a name="l00180"></a>00180       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> problem_size = <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits::size</a>(rhs);
-<a name="l00181"></a>00181       VectorType result(problem_size);
-<a name="l00182"></a>00182       result.clear();
-<a name="l00183"></a>00183 
-<a name="l00184"></a>00184       VectorType residual = rhs;
-<a name="l00185"></a>00185       precond.apply(residual);
-<a name="l00186"></a>00186       VectorType r0star = residual;  <span class="comment">//can be chosen arbitrarily in fact</span>
-<a name="l00187"></a>00187       VectorType tmp0(problem_size);
-<a name="l00188"></a>00188       VectorType tmp1(problem_size);
-<a name="l00189"></a>00189       VectorType s(problem_size);
-<a name="l00190"></a>00190       
-<a name="l00191"></a>00191       VectorType p = residual;
-<a name="l00192"></a>00192 
-<a name="l00193"></a>00193       CPU_ScalarType ip_rr0star = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual,r0star);
-<a name="l00194"></a>00194       CPU_ScalarType norm_rhs_host = ip_rr0star;
-<a name="l00195"></a>00195       CPU_ScalarType beta;
-<a name="l00196"></a>00196       CPU_ScalarType alpha;
-<a name="l00197"></a>00197       CPU_ScalarType omega;
-<a name="l00198"></a>00198       ScalarType new_ip_rr0star = 0;
-<a name="l00199"></a>00199       ScalarType inner_prod_temp; <span class="comment">//temporary variable for inner product</span>
-<a name="l00200"></a>00200       
-<a name="l00201"></a>00201       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>(); ++i)
-<a name="l00202"></a>00202       {
-<a name="l00203"></a>00203         tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>(i+1);
-<a name="l00204"></a>00204         tmp0 = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, p);
-<a name="l00205"></a>00205         precond.apply(tmp0);
-<a name="l00206"></a>00206         <span class="comment">//alpha = ip_rr0star / viennacl::linalg::inner_prod(tmp0, r0star);</span>
-<a name="l00207"></a>00207         inner_prod_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp0, r0star);
-<a name="l00208"></a>00208         alpha = ip_rr0star / <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(inner_prod_temp);
-<a name="l00209"></a>00209 
-<a name="l00210"></a>00210         <span class="comment">//s = residual - alpha*tmp0;</span>
-<a name="l00211"></a>00211         s = residual;
-<a name="l00212"></a>00212         s -= alpha*tmp0;
-<a name="l00213"></a>00213 
-<a name="l00214"></a>00214         tmp1 = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, s);
-<a name="l00215"></a>00215         precond.apply(tmp1);
-<a name="l00216"></a>00216         <span class="comment">//omega = viennacl::linalg::inner_prod(tmp1, s) / viennacl::linalg::inner_prod(tmp1, tmp1);</span>
-<a name="l00217"></a>00217         inner_prod_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp1, s);
-<a name="l00218"></a>00218         omega = inner_prod_temp;
-<a name="l00219"></a>00219         inner_prod_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp1, tmp1);
-<a name="l00220"></a>00220         omega /= inner_prod_temp;
-<a name="l00221"></a>00221         
-<a name="l00222"></a>00222         <span class="comment">//result += alpha * p + omega * s;</span>
-<a name="l00223"></a>00223         result += alpha * p;
-<a name="l00224"></a>00224         result += omega * s;
-<a name="l00225"></a>00225         <span class="comment">//residual = s - omega * tmp1;</span>
-<a name="l00226"></a>00226         residual = s;
-<a name="l00227"></a>00227         residual -= omega*tmp1;
-<a name="l00228"></a>00228         
-<a name="l00229"></a>00229         new_ip_rr0star = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual,r0star);
-<a name="l00230"></a>00230         <span class="keywordflow">if</span> (std::fabs(<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual, residual) / norm_rhs_host) < tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>() * tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>() )
-<a name="l00231"></a>00231           <span class="keywordflow">break</span>;
-<a name="l00232"></a>00232         
-<a name="l00233"></a>00233         <span class="comment">//beta = new_ip_rr0star / ip_rr0star * alpha/omega;</span>
-<a name="l00234"></a>00234         CPU_ScalarType cpu_temp = new_ip_rr0star; <span class="comment">//read from device only once</span>
-<a name="l00235"></a>00235         beta = cpu_temp / ip_rr0star * alpha/omega;
-<a name="l00236"></a>00236         ip_rr0star = cpu_temp;
-<a name="l00237"></a>00237 
-<a name="l00238"></a>00238         <span class="comment">//p = residual + beta * (p - omega*tmp0);</span>
-<a name="l00239"></a>00239         p -= omega * tmp0;
-<a name="l00240"></a>00240         <span class="comment">//p = residual + beta * p;</span>
-<a name="l00241"></a>00241         p *= beta;
-<a name="l00242"></a>00242         p += residual;
-<a name="l00243"></a>00243       }
-<a name="l00244"></a>00244       
-<a name="l00245"></a>00245       <span class="comment">//store last error estimate:</span>
-<a name="l00246"></a>00246       tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(std::sqrt(std::fabs(<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual, residual) / norm_rhs_host)));
-<a name="l00247"></a>00247       
-<a name="l00248"></a>00248       <span class="keywordflow">return</span> result;
-<a name="l00249"></a>00249     }
-<a name="l00250"></a>00250 
-<a name="l00251"></a>00251   }
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253 
-<a name="l00254"></a>00254 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/cg_8hpp.html b/doc/doxygen/html/cg_8hpp.html
deleted file mode 100644
index c13cda2..0000000
--- a/doc/doxygen/html/cg_8hpp.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/cg.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/cg.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>The conjugate gradient method is implemented here.  
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-<code>#include <cmath></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="ilu_8hpp_source.html">viennacl/linalg/ilu.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="prod_8hpp_source.html">viennacl/linalg/prod.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="inner__prod_8hpp_source.html">viennacl/linalg/inner_prod.hpp</a>"</code><br/>
-
-<p><a href="cg_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function.  <a href="classviennacl_1_1linalg_1_1cg__tag.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6bc45bf37430c67d6a32ed8e10e77e94">solve</a> (const MatrixType &matrix, VectorType const &rhs, cg_tag const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the conjugate gradient solver without preconditioner.  <a href="#a6bc45bf37430c67d6a32ed8e10e77e94"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a560520300c350a1d8afa44d5c036b48b">solve</a> (const MatrixType &matrix, VectorType const &rhs, cg_tag const &tag, <a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">viennacl::linalg::no_precond</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType , typename PreconditionerType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#adefd0a97aaeaa8eb75097847443c6ee1">solve</a> (const MatrixType &matrix, VectorType const &rhs, cg_tag const &tag, PreconditionerType const &precond)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the preconditioned conjugate gradient solver.  <a href="#adefd0a97aaeaa8eb75097847443c6ee1"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The conjugate gradient method is implemented here. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/cg_8hpp_source.html b/doc/doxygen/html/cg_8hpp_source.html
deleted file mode 100644
index cd57e6e..0000000
--- a/doc/doxygen/html/cg_8hpp_source.html
+++ /dev/null
@@ -1,218 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/cg.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/cg.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="cg_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_CG_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_CG_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <map></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <cmath></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="ilu_8hpp.html" title="Implementations of incomplete factorization preconditioners.">viennacl/linalg/ilu.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="prod_8hpp.html" title="Generic interface for matrix-vector and matrix-matrix products. See viennacl/linalg/vector_operations...">viennacl/linalg/prod.hpp</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="inner__prod_8hpp.html" title="Generic interface for the computation of inner products. See viennacl/linalg/vector_operations.hpp for implementations.">viennacl/linalg/inner_prod.hpp</a>"</span>
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033   <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034   {
-<a name="l00035"></a>00035     
-<a name="l00038"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html">00038</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html" title="A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the solve()...">cg_tag</a>
-<a name="l00039"></a>00039     {
-<a name="l00040"></a>00040       <span class="keyword">public</span>:
-<a name="l00046"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a987be47faf08698e2775045a23de5abe">00046</a>         <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a987be47faf08698e2775045a23de5abe" title="The constructor.">cg_tag</a>(<span class="keywordtype">double</span> tol = 1e-8, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a> = 300) : _tol(tol), _iterations(<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>) {};
-<a name="l00047"></a>00047       
-<a name="l00049"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3">00049</a>         <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _tol; }
-<a name="l00051"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">00051</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _iterations; }
-<a name="l00052"></a>00052         
-<a name="l00054"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">00054</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> iters_taken_; }
-<a name="l00055"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a0643bc87331b97f3a90e71ec54ff205b">00055</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a0643bc87331b97f3a90e71ec54ff205b">iters</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ iters_taken_ = i; }
-<a name="l00056"></a>00056         
-<a name="l00058"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f">00058</a>         <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> last_error_; }
-<a name="l00060"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a086bf00d9923c3f80f62de3f8491a322">00060</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a086bf00d9923c3f80f62de3f8491a322" title="Sets the estimated relative error at the end of the solver run.">error</a>(<span class="keywordtype">double</span> e)<span class="keyword"> const </span>{ last_error_ = e; }
-<a name="l00061"></a>00061         
-<a name="l00062"></a>00062         
-<a name="l00063"></a>00063       <span class="keyword">private</span>:
-<a name="l00064"></a>00064         <span class="keywordtype">double</span> _tol;
-<a name="l00065"></a>00065         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _iterations;
-<a name="l00066"></a>00066         
-<a name="l00067"></a>00067         <span class="comment">//return values from solver</span>
-<a name="l00068"></a>00068         <span class="keyword">mutable</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iters_taken_;
-<a name="l00069"></a>00069         <span class="keyword">mutable</span> <span class="keywordtype">double</span> last_error_;
-<a name="l00070"></a>00070     };
-<a name="l00071"></a>00071     
-<a name="l00072"></a>00072 
-<a name="l00082"></a>00082     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00083"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a6bc45bf37430c67d6a32ed8e10e77e94">00083</a>     VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html" title="A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the solve()...">cg_tag</a> <span class="keyword">const</span> & tag)
-<a name="l00084"></a>00084     {
-<a name="l00085"></a>00085       <span class="comment">//typedef typename VectorType::value_type      ScalarType;</span>
-<a name="l00086"></a>00086       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">viennacl::tools::result_of::value_type<VectorType>::type</a>    ScalarType;
-<a name="l00087"></a>00087       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType</a>    CPU_ScalarType;
-<a name="l00088"></a>00088       
-<a name="l00089"></a>00089       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> problem_size = <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits::size</a>(rhs);
-<a name="l00090"></a>00090       VectorType result(problem_size);
-<a name="l00091"></a>00091       <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(result);
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093       VectorType residual = rhs;
-<a name="l00094"></a>00094       VectorType p = rhs;
-<a name="l00095"></a>00095       VectorType tmp(problem_size);
-<a name="l00096"></a>00096 
-<a name="l00097"></a>00097       ScalarType tmp_in_p;
-<a name="l00098"></a>00098       ScalarType residual_norm_squared;
-<a name="l00099"></a>00099       CPU_ScalarType ip_rr = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(rhs,rhs);
-<a name="l00100"></a>00100       CPU_ScalarType alpha;
-<a name="l00101"></a>00101       CPU_ScalarType new_ip_rr = 0;
-<a name="l00102"></a>00102       CPU_ScalarType beta;
-<a name="l00103"></a>00103       CPU_ScalarType norm_rhs_squared = ip_rr;
-<a name="l00104"></a>00104       
-<a name="l00105"></a>00105       <span class="comment">//std::cout << "Starting CG solver... " << std::endl;</span>
-<a name="l00106"></a>00106       
-<a name="l00107"></a>00107       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>(); ++i)
-<a name="l00108"></a>00108       {
-<a name="l00109"></a>00109         tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>(i+1);
-<a name="l00110"></a>00110         tmp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, p);
-<a name="l00111"></a>00111 
-<a name="l00112"></a>00112         <span class="comment">//alpha = ip_rr / viennacl::linalg::inner_prod(tmp, p);</span>
-<a name="l00113"></a>00113         tmp_in_p = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp, p);
-<a name="l00114"></a>00114         alpha = ip_rr / <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(tmp_in_p);
-<a name="l00115"></a>00115         
-<a name="l00116"></a>00116         result += alpha * p;
-<a name="l00117"></a>00117         residual -= alpha * tmp;
-<a name="l00118"></a>00118         
-<a name="l00119"></a>00119         residual_norm_squared = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual,residual);
-<a name="l00120"></a>00120         new_ip_rr = <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(residual_norm_squared);
-<a name="l00121"></a>00121         <span class="keywordflow">if</span> (new_ip_rr / norm_rhs_squared < tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>() *  tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>())<span class="comment">//squared norms involved here</span>
-<a name="l00122"></a>00122           <span class="keywordflow">break</span>;
-<a name="l00123"></a>00123         
-<a name="l00124"></a>00124         beta = new_ip_rr / ip_rr;
-<a name="l00125"></a>00125         ip_rr = new_ip_rr;
-<a name="l00126"></a>00126 
-<a name="l00127"></a>00127         <span class="comment">//p = residual + beta*p;</span>
-<a name="l00128"></a>00128         p *= beta;
-<a name="l00129"></a>00129         p += residual;
-<a name="l00130"></a>00130       } 
-<a name="l00131"></a>00131       
-<a name="l00132"></a>00132       <span class="comment">//store last error estimate:</span>
-<a name="l00133"></a>00133       tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(sqrt(new_ip_rr / norm_rhs_squared));
-<a name="l00134"></a>00134       
-<a name="l00135"></a>00135       <span class="keywordflow">return</span> result;
-<a name="l00136"></a>00136     }
-<a name="l00137"></a>00137 
-<a name="l00138"></a>00138     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00139"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a560520300c350a1d8afa44d5c036b48b">00139</a>     VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html" title="A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the solve()...">cg_tag</a> <span class="keyword">const</span> & tag, <a class="code" href="classviennacl_1_1linalg_1_1no__precond.html" title="A tag class representing the use of no preconditioner.">viennacl::linalg::no_precond</a>)
-<a name="l00140"></a>00140     {
-<a name="l00141"></a>00141       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(matrix, rhs, tag);
-<a name="l00142"></a>00142     }
-<a name="l00143"></a>00143 
-<a name="l00154"></a>00154     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType, <span class="keyword">typename</span> PreconditionerType>
-<a name="l00155"></a><a class="code" href="namespaceviennacl_1_1linalg.html#adefd0a97aaeaa8eb75097847443c6ee1">00155</a>     VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html" title="A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the solve()...">cg_tag</a> <span class="keyword">const</span> & tag, PreconditionerType <span class="keyword">const</span> & precond)
-<a name="l00156"></a>00156     {
-<a name="l00157"></a>00157       <span class="keyword">typedef</span> <span class="keyword">typename</span> VectorType::value_type      ScalarType;
-<a name="l00158"></a>00158       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType</a>    CPU_ScalarType;
-<a name="l00159"></a>00159       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> problem_size = <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits::size</a>(rhs);
-<a name="l00160"></a>00160       
-<a name="l00161"></a>00161       VectorType result(problem_size);
-<a name="l00162"></a>00162       result.clear();
-<a name="l00163"></a>00163       
-<a name="l00164"></a>00164       VectorType residual = rhs;
-<a name="l00165"></a>00165       VectorType tmp(problem_size);
-<a name="l00166"></a>00166       VectorType z = rhs;
-<a name="l00167"></a>00167 
-<a name="l00168"></a>00168       precond.apply(z);
-<a name="l00169"></a>00169       VectorType p = z;
-<a name="l00170"></a>00170 
-<a name="l00171"></a>00171       ScalarType tmp_in_p;
-<a name="l00172"></a>00172       ScalarType residual_in_z;
-<a name="l00173"></a>00173       CPU_ScalarType ip_rr = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual, z);
-<a name="l00174"></a>00174       CPU_ScalarType alpha;
-<a name="l00175"></a>00175       CPU_ScalarType new_ip_rr = 0;
-<a name="l00176"></a>00176       CPU_ScalarType beta;
-<a name="l00177"></a>00177       CPU_ScalarType norm_rhs_squared = ip_rr;
-<a name="l00178"></a>00178       CPU_ScalarType new_ipp_rr_over_norm_rhs;
-<a name="l00179"></a>00179       
-<a name="l00180"></a>00180       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>(); ++i)
-<a name="l00181"></a>00181       {
-<a name="l00182"></a>00182         tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>(i+1);
-<a name="l00183"></a>00183         tmp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, p);
-<a name="l00184"></a>00184         
-<a name="l00185"></a>00185         tmp_in_p = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp, p);
-<a name="l00186"></a>00186         alpha = ip_rr / <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(tmp_in_p);
-<a name="l00187"></a>00187         
-<a name="l00188"></a>00188         result += alpha * p;
-<a name="l00189"></a>00189         residual -= alpha * tmp;
-<a name="l00190"></a>00190         z = residual;
-<a name="l00191"></a>00191         precond.apply(z);
-<a name="l00192"></a>00192         
-<a name="l00193"></a>00193         residual_in_z = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual, z);
-<a name="l00194"></a>00194         new_ip_rr = <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(residual_in_z);
-<a name="l00195"></a>00195         new_ipp_rr_over_norm_rhs = new_ip_rr / norm_rhs_squared;
-<a name="l00196"></a>00196         <span class="keywordflow">if</span> (std::fabs(new_ipp_rr_over_norm_rhs) < tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>() *  tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>())    <span class="comment">//squared norms involved here</span>
-<a name="l00197"></a>00197           <span class="keywordflow">break</span>;
-<a name="l00198"></a>00198         
-<a name="l00199"></a>00199         beta = new_ip_rr / ip_rr;
-<a name="l00200"></a>00200         ip_rr = new_ip_rr;
-<a name="l00201"></a>00201         
-<a name="l00202"></a>00202         <span class="comment">//p = z + beta*p;</span>
-<a name="l00203"></a>00203         p *= beta;
-<a name="l00204"></a>00204         p += z;
-<a name="l00205"></a>00205       } 
-<a name="l00206"></a>00206 
-<a name="l00207"></a>00207       <span class="comment">//store last error estimate:</span>
-<a name="l00208"></a>00208       tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(sqrt(std::fabs(new_ip_rr / norm_rhs_squared)));
-<a name="l00209"></a>00209 
-<a name="l00210"></a>00210       <span class="keywordflow">return</span> result;
-<a name="l00211"></a>00211     }
-<a name="l00212"></a>00212 
-<a name="l00213"></a>00213   }
-<a name="l00214"></a>00214 }
-<a name="l00215"></a>00215 
-<a name="l00216"></a>00216 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classes.html b/doc/doxygen/html/classes.html
deleted file mode 100644
index 63f8533..0000000
--- a/doc/doxygen/html/classes.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Alphabetical List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>Data Structure Index</h1>  </div>
-</div>
-<div class="contents">
-<div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_H">H</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_J">J</a> | <a class="qindex" href="#letter_K">K</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_P">P</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a> | <a class="qindex" href="#letter_U">U</a> | <a class="qindex" href="#letter_V">V</a></div>
-<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
-<tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  A  </div></td></tr></table>
-</td><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  F  </div></td></tr></table>
-</td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">matrix_prod_row_col_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1scalar.html">scalar</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html">first_letter_of_type</a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">matrix_prod_row_col_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">scalar< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td></tr><tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  B  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">first_letter_of_type< double ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>)   </td><td><a class="el" href="structviennacl_1_1is__eigen.html">is_eigen</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">matrix_prod_row_col_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">scalar< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1backend.html">backend</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">first_letter_of_type< float ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>)   </td><td><a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">is_eigen< viennacl::tag_eigen ></a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">matrix_prod_row_col_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  G  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1is__mtl4.html">is_mtl4</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">matrix_prod_row_row_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">is_mtl4< viennacl::tag_mtl4 ></a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">matrix_prod_row_row_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  C  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1is__stl.html">is_stl</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">matrix_prod_row_row_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  T  </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  H  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">is_stl< viennacl::tag_stl ></a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">matrix_prod_row_row_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">CHECK_SCALAR_TEMPLATE_ARGUMENT</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1is__ublas.html">is_ublas</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">matrix_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">handle_inc_dec_helper</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">is_ublas< viennacl::tag_ublas ></a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">matrix_row< double, 16 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1tag__none.html">tag_none</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">handle_inc_dec_helper< cl_command_queue ></a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1is__viennacl.html">is_viennacl</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">matrix_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">handle_inc_dec_helper< cl_context ></a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">is_viennacl< viennacl::tag_viennacl ></a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">matrix_row< float, 16 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1column__major.html">column_major</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">handle_inc_dec_helper< cl_kernel ></a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a name="letter_J"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  J  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">MATRIX_SIZE_DEDUCER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">tag_of< std::vector< std::vector< T, A >, A > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">handle_inc_dec_helper< cl_mem ></a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">tag_of< std::vector< T, A > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">handle_inc_dec_helper< cl_program ></a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::compressed_matrix< T, I > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  I  </div></td></tr></table>
-</td><td><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::coordinate_matrix< T, I > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">compressed_matrix< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a name="letter_K"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  K  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">matrix_solve_col_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">tag_of< viennacl::matrix< T, F, alignment > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">compressed_matrix< double, 4 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">matrix_solve_col_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">compressed_matrix< double, 8 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  L  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">matrix_solve_col_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">tag_of< viennacl::vector< T, alignment > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">compressed_matrix< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">matrix_solve_col_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1tag__stl.html">tag_stl</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">compressed_matrix< float, 4 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html">lower_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">compressed_matrix< float, 8 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  M  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1io_1_1to__string.html">to_string</a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">CONST_REMOVER< const T ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1matrix.html">matrix</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">to_string< double ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">matrix_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">to_string< float ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">matrix_col< double, 16 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">matrix_solve_row_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  U  </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">matrix_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">matrix_solve_row_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">unit_lower_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">matrix_col< float, 16 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">matrix_solve_row_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">unit_upper_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">matrix_solve_row_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">coordinate_matrix< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">upper_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">coordinate_matrix< double, 128 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  V  </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">coordinate_matrix< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  N  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type</a> (<a class="el" href="namespaceviennacl_1_1tools_1_1result__of.html">viennacl::tools::result_of</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">coordinate_matrix< float, 128 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">no_precond</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a class="el" href="classviennacl_1_1vector.html">vector</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">CPU_SCALAR_TYPE_DEDUCER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_KERNEL_CLASS_DEDUCER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  O  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">vector< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">CPU_SCALAR_TYPE_DEDUCER< double ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">vector< double, 16 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">CPU_SCALAR_TYPE_DEDUCER< float ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">vector< double, 4 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">matrix_prod_col_col_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  P  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">vector< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">matrix_prod_col_col_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">vector< float, 16 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">matrix_prod_col_col_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">vector< float, 4 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">matrix_prod_col_col_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">matrix_prod_col_row_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  D  </div></td></tr></table>
-</td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">matrix_prod_col_row_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">matrix_prod_col_row_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">matrix_prod_col_row_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>)   </td><td><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>)   </td><td><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">DOUBLE_PRECISION_CHECKER</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  R  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">VECTOR_SIZE_DEDUCER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">DOUBLE_PRECISION_CHECKER< double ></a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="structviennacl_1_1row__major.html">row_major</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  E  </div></td></tr></table>
-</td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1enable__if.html">enable_if</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">enable_if< false, T ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  S  </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>)   </td></tr><tr><td><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">error_checker</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>)   </td></tr></table><div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_H">H</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_J">J</a> | <a class="qindex" href="#letter_K">K</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_P">P</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a> | <a class="qindex" href="#letter_U">U</a> | <a class="qindex" href="#letter_V">V</a></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1compressed__matrix.html b/doc/doxygen/html/classviennacl_1_1compressed__matrix.html
deleted file mode 100644
index 7b5edcb..0000000
--- a/doc/doxygen/html/classviennacl_1_1compressed__matrix.html
+++ /dev/null
@@ -1,465 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< SCALARTYPE, ALIGNMENT > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>compressed_matrix< SCALARTYPE, ALIGNMENT > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::compressed_matrix" -->
-<p>A sparse square matrix in compressed sparse rows format.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="compressed__matrix_8hpp_source.html">compressed_matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< typename <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><br class="typebreak"/>
-< SCALARTYPE >::ResultType > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">value_type</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00">compressed_matrix</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Default construction of a compressed matrix. No memory is allocated.  <a href="#a837bbcb68157a2e753f0ac1632a6ce00"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a3ba96c743010a59262c8a0d8a18bc87f">compressed_matrix</a> (unsigned int rows, unsigned int cols, unsigned int nonzeros=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construction of a compressed matrix with the supplied number of rows and columns. If the number of nonzeros is positive, memory is allocated.  <a href="#a3ba96c743010a59262c8a0d8a18bc87f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a9d9605472ab231ce31949eb09938d72d">compressed_matrix</a> (cl_mem mem_row_buffer, cl_mem mem_col_buffer, cl_mem mem_elements, unsigned int rows, unsigned int cols, unsigned int nonzeros)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a30594c885d58e3372b44a4e358715483">set</a> (unsigned int *row_jumper, unsigned int *col_buffer, SCALARTYPE *elements, unsigned int cols, unsigned int nonzeros)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the row, column and value arrays of the compressed matrix.  <a href="#a30594c885d58e3372b44a4e358715483"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">reserve</a> (unsigned int new_nonzeros)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved.  <a href="#a4de4afd37fea94c8d1bb2df3eacdcdf1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a72c98b8dba1f78661da5d71f20550d25">resize</a> (unsigned int new_size1, unsigned int new_size2, bool preserve=true)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Resize the matrix.  <a href="#a72c98b8dba1f78661da5d71f20550d25"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4">size1</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of rows.  <a href="#a10aa70c5b59457061b66e118e8fc05e4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">size2</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of columns.  <a href="#ac1b69377d2b4e37ccb5fab0fa125bc9a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6">nnz</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of nonzero entries.  <a href="#a972c39774748817eb7b1de422b2eeff6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3">handle1</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle to the row index array.  <a href="#a3fe10834aae81725adf7b0614222a3b3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898">handle2</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle to the column index array.  <a href="#ab51dbf980dbd2eeb1f3e7d45d8f5b898"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle to the matrix entry array.  <a href="#abe419a13116160fd12b66f47c5180e5c"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, unsigned int ALIGNMENT><br/>
- class viennacl::compressed_matrix< SCALARTYPE, ALIGNMENT ></h3>
-
-<p>A sparse square matrix in compressed sparse rows format. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>The floating point type (either float or double, checked at compile time) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>ALIGNMENT</em> </td><td>The internal memory size for the entries in each row is given by (<a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size()</a>/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory. </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="aed985c700866b1bae61cb8bcd5d322fe"></a><!-- doxytag: member="viennacl::compressed_matrix::value_type" ref="aed985c700866b1bae61cb8bcd5d322fe" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a><typename <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><SCALARTYPE>::ResultType> <a class="el" href="classviennacl_1_1scalar.html">value_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a837bbcb68157a2e753f0ac1632a6ce00"></a><!-- doxytag: member="viennacl::compressed_matrix::compressed_matrix" ref="a837bbcb68157a2e753f0ac1632a6ce00" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Default construction of a compressed matrix. No memory is allocated. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3ba96c743010a59262c8a0d8a18bc87f"></a><!-- doxytag: member="viennacl::compressed_matrix::compressed_matrix" ref="a3ba96c743010a59262c8a0d8a18bc87f" args="(unsigned int rows, unsigned int cols, unsigned int nonzeros=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a> </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>rows</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>cols</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>nonzeros</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, explicit]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Construction of a compressed matrix with the supplied number of rows and columns. If the number of nonzeros is positive, memory is allocated. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>rows</em> </td><td>Number of rows </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cols</em> </td><td>Number of columns </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>nonzeros</em> </td><td>Optional number of nonzeros for memory preallocation </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9d9605472ab231ce31949eb09938d72d"></a><!-- doxytag: member="viennacl::compressed_matrix::compressed_matrix" ref="a9d9605472ab231ce31949eb09938d72d" args="(cl_mem mem_row_buffer, cl_mem mem_col_buffer, cl_mem mem_elements, unsigned int rows, unsigned int cols, unsigned int nonzeros)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a> </td>
-          <td>(</td>
-          <td class="paramtype">cl_mem </td>
-          <td class="paramname"> <em>mem_row_buffer</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_mem </td>
-          <td class="paramname"> <em>mem_col_buffer</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_mem </td>
-          <td class="paramname"> <em>mem_elements</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>rows</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>cols</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>nonzeros</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, explicit]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="abe419a13116160fd12b66f47c5180e5c"></a><!-- doxytag: member="viennacl::compressed_matrix::handle" ref="abe419a13116160fd12b66f47c5180e5c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle to the matrix entry array. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3fe10834aae81725adf7b0614222a3b3"></a><!-- doxytag: member="viennacl::compressed_matrix::handle1" ref="a3fe10834aae81725adf7b0614222a3b3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle to the row index array. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab51dbf980dbd2eeb1f3e7d45d8f5b898"></a><!-- doxytag: member="viennacl::compressed_matrix::handle2" ref="ab51dbf980dbd2eeb1f3e7d45d8f5b898" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle to the column index array. </p>
-
-</div>
-</div>
-<a class="anchor" id="a972c39774748817eb7b1de422b2eeff6"></a><!-- doxytag: member="viennacl::compressed_matrix::nnz" ref="a972c39774748817eb7b1de422b2eeff6" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const unsigned int& nnz </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of nonzero entries. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4de4afd37fea94c8d1bb2df3eacdcdf1"></a><!-- doxytag: member="viennacl::compressed_matrix::reserve" ref="a4de4afd37fea94c8d1bb2df3eacdcdf1" args="(unsigned int new_nonzeros)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void reserve </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>new_nonzeros</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved. </p>
-
-</div>
-</div>
-<a class="anchor" id="a72c98b8dba1f78661da5d71f20550d25"></a><!-- doxytag: member="viennacl::compressed_matrix::resize" ref="a72c98b8dba1f78661da5d71f20550d25" args="(unsigned int new_size1, unsigned int new_size2, bool preserve=true)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void resize </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>new_size1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>new_size2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">bool </td>
-          <td class="paramname"> <em>preserve</em> = <code>true</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Resize the matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>new_size1</em> </td><td>New number of rows </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>new_size2</em> </td><td>New number of columns </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>preserve</em> </td><td>If true, the old values are preserved. At present, old values are always discarded. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a30594c885d58e3372b44a4e358715483"></a><!-- doxytag: member="viennacl::compressed_matrix::set" ref="a30594c885d58e3372b44a4e358715483" args="(unsigned int *row_jumper, unsigned int *col_buffer, SCALARTYPE *elements, unsigned int cols, unsigned int nonzeros)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void set </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int * </td>
-          <td class="paramname"> <em>row_jumper</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int * </td>
-          <td class="paramname"> <em>col_buffer</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SCALARTYPE * </td>
-          <td class="paramname"> <em>elements</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>cols</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>nonzeros</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the row, column and value arrays of the compressed matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>row_jumper</em> </td><td>Pointer to an array holding the indices of the first element of each row (starting with zero). E.g. row_jumper[10] returns the index of the first entry of the 11th row. The array length is 'cols + 1' </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>col_buffer</em> </td><td>Pointer to an array holding the column index of each entry. The array length is 'nonzeros' </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>elements</em> </td><td>Pointer to an array holding the entries of the sparse matrix. The array length is 'elements' </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cols</em> </td><td>Number of columns (and rows) of the sparse matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>nonzeros</em> </td><td>Number of nonzeros </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a10aa70c5b59457061b66e118e8fc05e4"></a><!-- doxytag: member="viennacl::compressed_matrix::size1" ref="a10aa70c5b59457061b66e118e8fc05e4" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const unsigned int& size1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of rows. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac1b69377d2b4e37ccb5fab0fa125bc9a"></a><!-- doxytag: member="viennacl::compressed_matrix::size2" ref="ac1b69377d2b4e37ccb5fab0fa125bc9a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const unsigned int& size2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of columns. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="compressed__matrix_8hpp_source.html">compressed_matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1const__vector__iterator.html b/doc/doxygen/html/classviennacl_1_1const__vector__iterator.html
deleted file mode 100644
index d568eba..0000000
--- a/doc/doxygen/html/classviennacl_1_1const__vector__iterator.html
+++ /dev/null
@@ -1,404 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: const_vector_iterator< SCALARTYPE, ALIGNMENT > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a>  </div>
-  <div class="headertitle">
-<h1>const_vector_iterator< SCALARTYPE, ALIGNMENT > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::const_vector_iterator" -->
-<p>A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated. VERY SLOW!!  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="vector_8hpp_source.html">vector.hpp</a>></code></p>
-<div class="dynheader">
-Inheritance diagram for const_vector_iterator< SCALARTYPE, ALIGNMENT >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="classviennacl_1_1const__vector__iterator.png" usemap="#const_vector_iterator< SCALARTYPE, ALIGNMENT >_map" alt=""/>
-  <map id="const_vector_iterator< SCALARTYPE, ALIGNMENT >_map" name="const_vector_iterator< SCALARTYPE, ALIGNMENT >_map">
-<area href="classviennacl_1_1vector__iterator.html" alt="vector_iterator< SCALARTYPE, ALIGNMENT >" shape="rect" coords="0,56,319,80"/>
-</map>
-</div>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#ae59e37ebbe3a193fa2dd307e94d99518">value_type</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef long </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#ac6a7762dba62eaf3d6379fc12481b559">const_vector_iterator</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#aa8e2e53d1a9740dc9a7e5dc30b03734b">const_vector_iterator</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > const &vec, cl_uint index)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor.  <a href="#aa8e2e53d1a9740dc9a7e5dc30b03734b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a9cf058c9dc4e611bc1a4c0690fe02492">const_vector_iterator</a> (<a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > const &elements, cl_uint index)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">value_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a832e184e247b97ecb752bf291d814dff">operator*</a> (void) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a0b50df67a5cd6493e8839fd8990500a7">operator++</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a39f7c37604fd9845ff487b36b6f88602">operator++</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">operator==</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">operator!=</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#aec7de6121b5440524976b3baf978fb5c">operator-</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a63fe5e79738641bc4c5fd1f07740e3c7">operator+</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> diff) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem ><br class="typebreak"/>
- const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">handle</a> () const </td></tr>
-<tr><td colspan="2"><h2><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc">elements_</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The index of the entry the iterator is currently pointing to.  <a href="#a620028b02247d371f9637f6a648a13cc"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, unsigned int ALIGNMENT><br/>
- class viennacl::const_vector_iterator< SCALARTYPE, ALIGNMENT ></h3>
-
-<p>A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated. VERY SLOW!! </p>
-<p>Every dereference operation initiates a transfer from the GPU to the CPU. The overhead of such a transfer is around 50us, so 20.000 dereferences take one second. This is four orders of magnitude slower than similar dereferences on the CPU. However, increments and comparisons of iterators is as fast as for CPU types. If you need a fast iterator, copy the whole vector to the CPU first and iterate over the CPU object, e.g. std::vector<float> temp; copy(gpu_vector, temp); for (std::vector<float>::const_iterator iter = temp.begin(); iter != temp.end(); ++iter) { //do something } Note that you may obtain inconsistent data if entries of gpu_vector are manipulated elsewhere in the meanwhile.</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>The underlying floating point type (either float or double) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>ALIGNMENT</em> </td><td>Alignment of the underlying vector, </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a> </dd></dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a8ad60a9ff2530781950dbfd682353e64"></a><!-- doxytag: member="viennacl::const_vector_iterator::difference_type" ref="a8ad60a9ff2530781950dbfd682353e64" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef long <a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae59e37ebbe3a193fa2dd307e94d99518"></a><!-- doxytag: member="viennacl::const_vector_iterator::value_type" ref="ae59e37ebbe3a193fa2dd307e94d99518" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE> <a class="el" href="classviennacl_1_1scalar.html">value_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ac6a7762dba62eaf3d6379fc12481b559"></a><!-- doxytag: member="viennacl::const_vector_iterator::const_vector_iterator" ref="ac6a7762dba62eaf3d6379fc12481b559" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa8e2e53d1a9740dc9a7e5dc30b03734b"></a><!-- doxytag: member="viennacl::const_vector_iterator::const_vector_iterator" ref="aa8e2e53d1a9740dc9a7e5dc30b03734b" args="(vector< SCALARTYPE, ALIGNMENT > const &vec, cl_uint index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > const & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_uint </td>
-          <td class="paramname"> <em>index</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector over which to iterate </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>The starting index of the iterator </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9cf058c9dc4e611bc1a4c0690fe02492"></a><!-- doxytag: member="viennacl::const_vector_iterator::const_vector_iterator" ref="a9cf058c9dc4e611bc1a4c0690fe02492" args="(viennacl::ocl::handle< cl_mem > const &elements, cl_uint index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > const & </td>
-          <td class="paramname"> <em>elements</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_uint </td>
-          <td class="paramname"> <em>index</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a625da5e66b023a7ed067040a21ec834d"></a><!-- doxytag: member="viennacl::const_vector_iterator::handle" ref="a625da5e66b023a7ed067040a21ec834d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem> const& handle </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5a79972f223067007dcfd4350cbad30f"></a><!-- doxytag: member="viennacl::const_vector_iterator::index" ref="a5a79972f223067007dcfd4350cbad30f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int index </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0c704f6470bc4c7392b964dd83a1d97b"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator!=" ref="a0c704f6470bc4c7392b964dd83a1d97b" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool operator!= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a832e184e247b97ecb752bf291d814dff"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator*" ref="a832e184e247b97ecb752bf291d814dff" args="(void) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">value_type</a> operator* </td>
-          <td>(</td>
-          <td class="paramtype">void </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a63fe5e79738641bc4c5fd1f07740e3c7"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator+" ref="a63fe5e79738641bc4c5fd1f07740e3c7" args="(difference_type diff) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> operator+ </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> </td>
-          <td class="paramname"> <em>diff</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0b50df67a5cd6493e8839fd8990500a7"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator++" ref="a0b50df67a5cd6493e8839fd8990500a7" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> operator++ </td>
-          <td>(</td>
-          <td class="paramtype">void </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a39f7c37604fd9845ff487b36b6f88602"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator++" ref="a39f7c37604fd9845ff487b36b6f88602" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> operator++ </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aec7de6121b5440524976b3baf978fb5c"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator-" ref="aec7de6121b5440524976b3baf978fb5c" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> operator- </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae01970b831b1c1dc3a9f22f7a4e19cf6"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator==" ref="ae01970b831b1c1dc3a9f22f7a4e19cf6" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool operator== </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="a620028b02247d371f9637f6a648a13cc"></a><!-- doxytag: member="viennacl::const_vector_iterator::elements_" ref="a620028b02247d371f9637f6a648a13cc" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem> <a class="el" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc">elements_</a><code> [protected]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>The index of the entry the iterator is currently pointing to. </p>
-
-</div>
-</div>
-<a class="anchor" id="a961e8f62e2b57b3021c417a2c61dfb82"></a><!-- doxytag: member="viennacl::const_vector_iterator::index_" ref="a961e8f62e2b57b3021c417a2c61dfb82" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int <a class="el" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a><code> [protected]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="vector_8hpp_source.html">vector.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1const__vector__iterator.png b/doc/doxygen/html/classviennacl_1_1const__vector__iterator.png
deleted file mode 100644
index f9bd4a5..0000000
Binary files a/doc/doxygen/html/classviennacl_1_1const__vector__iterator.png and /dev/null differ
diff --git a/doc/doxygen/html/classviennacl_1_1coordinate__matrix.html b/doc/doxygen/html/classviennacl_1_1coordinate__matrix.html
deleted file mode 100644
index 37d6891..0000000
--- a/doc/doxygen/html/classviennacl_1_1coordinate__matrix.html
+++ /dev/null
@@ -1,409 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: coordinate_matrix< SCALARTYPE, ALIGNMENT > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a>  </div>
-  <div class="headertitle">
-<h1>coordinate_matrix< SCALARTYPE, ALIGNMENT > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::coordinate_matrix" -->
-<p>A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row and column indices and val denotes the entry.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="coordinate__matrix_8hpp_source.html">coordinate_matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< typename <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><br class="typebreak"/>
-< SCALARTYPE >::ResultType > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">value_type</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#aee188ff216de32fdea80ffcaf47c515a">coordinate_matrix</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Default construction of a coordinate matrix. No memory is allocated.  <a href="#aee188ff216de32fdea80ffcaf47c515a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#ab6d3264162d39010d13f24c98eaeb528">coordinate_matrix</a> (unsigned int rows, unsigned int cols, unsigned int nonzeros=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construction of a coordinate matrix with the supplied number of rows and columns. If the number of nonzeros is positive, memory is allocated.  <a href="#ab6d3264162d39010d13f24c98eaeb528"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">reserve</a> (unsigned int new_nonzeros)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved.  <a href="#a4de4afd37fea94c8d1bb2df3eacdcdf1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#a72c98b8dba1f78661da5d71f20550d25">resize</a> (unsigned int new_size1, unsigned int new_size2, bool preserve=true)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Resize the matrix.  <a href="#a72c98b8dba1f78661da5d71f20550d25"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7">size1</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of rows.  <a href="#a890ed2f6c982169c737bd4f68b2a5db7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of columns.  <a href="#aacffdea3e049b0080b6fa4ac4c2fd881"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b">nnz</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of nonzero entries.  <a href="#afd2735dee9ed4b7afb979c1f7a7e2c0b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f">internal_nnz</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of internal nonzero entries.  <a href="#a7293d194294dda1d5fee2e11c0344d2f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8">handle12</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle to the (row, column) index array.  <a href="#a3816ff54e1dc90d0c1650bf44580dac8"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle to the matrix entry array.  <a href="#abe419a13116160fd12b66f47c5180e5c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#a3a2d3ce95e8cd635a285c7584c8691a0">handle3</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle to the group start index array.  <a href="#a3a2d3ce95e8cd635a285c7584c8691a0"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="friends"></a>
-Friends</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE2 , unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">copy</a> (const CPU_MATRIX &cpu_matrix, <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE2, ALIGNMENT2 > &gpu_matrix)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, unsigned int ALIGNMENT><br/>
- class viennacl::coordinate_matrix< SCALARTYPE, ALIGNMENT ></h3>
-
-<p>A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row and column indices and val denotes the entry. </p>
-<p>The present implementation of <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> suffers from poor runtime efficiency. Users are adviced to use <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> in the meanwhile.</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>The floating point type (either float or double, checked at compile time) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>ALIGNMENT</em> </td><td>The internal memory size for the arrays, given by (<a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size()</a>/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="aed985c700866b1bae61cb8bcd5d322fe"></a><!-- doxytag: member="viennacl::coordinate_matrix::value_type" ref="aed985c700866b1bae61cb8bcd5d322fe" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a><typename <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><SCALARTYPE>::ResultType> <a class="el" href="classviennacl_1_1scalar.html">value_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="aee188ff216de32fdea80ffcaf47c515a"></a><!-- doxytag: member="viennacl::coordinate_matrix::coordinate_matrix" ref="aee188ff216de32fdea80ffcaf47c515a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Default construction of a coordinate matrix. No memory is allocated. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab6d3264162d39010d13f24c98eaeb528"></a><!-- doxytag: member="viennacl::coordinate_matrix::coordinate_matrix" ref="ab6d3264162d39010d13f24c98eaeb528" args="(unsigned int rows, unsigned int cols, unsigned int nonzeros=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a> </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>rows</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>cols</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>nonzeros</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Construction of a coordinate matrix with the supplied number of rows and columns. If the number of nonzeros is positive, memory is allocated. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>rows</em> </td><td>Number of rows </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cols</em> </td><td>Number of columns </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>nonzeros</em> </td><td>Optional number of nonzeros for memory preallocation </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="abe419a13116160fd12b66f47c5180e5c"></a><!-- doxytag: member="viennacl::coordinate_matrix::handle" ref="abe419a13116160fd12b66f47c5180e5c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle to the matrix entry array. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3816ff54e1dc90d0c1650bf44580dac8"></a><!-- doxytag: member="viennacl::coordinate_matrix::handle12" ref="a3816ff54e1dc90d0c1650bf44580dac8" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle12 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle to the (row, column) index array. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3a2d3ce95e8cd635a285c7584c8691a0"></a><!-- doxytag: member="viennacl::coordinate_matrix::handle3" ref="a3a2d3ce95e8cd635a285c7584c8691a0" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle3 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle to the group start index array. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7293d194294dda1d5fee2e11c0344d2f"></a><!-- doxytag: member="viennacl::coordinate_matrix::internal_nnz" ref="a7293d194294dda1d5fee2e11c0344d2f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int internal_nnz </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of internal nonzero entries. </p>
-
-</div>
-</div>
-<a class="anchor" id="afd2735dee9ed4b7afb979c1f7a7e2c0b"></a><!-- doxytag: member="viennacl::coordinate_matrix::nnz" ref="afd2735dee9ed4b7afb979c1f7a7e2c0b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int nnz </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of nonzero entries. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4de4afd37fea94c8d1bb2df3eacdcdf1"></a><!-- doxytag: member="viennacl::coordinate_matrix::reserve" ref="a4de4afd37fea94c8d1bb2df3eacdcdf1" args="(unsigned int new_nonzeros)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void reserve </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>new_nonzeros</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved. </p>
-
-</div>
-</div>
-<a class="anchor" id="a72c98b8dba1f78661da5d71f20550d25"></a><!-- doxytag: member="viennacl::coordinate_matrix::resize" ref="a72c98b8dba1f78661da5d71f20550d25" args="(unsigned int new_size1, unsigned int new_size2, bool preserve=true)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void resize </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>new_size1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>new_size2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">bool </td>
-          <td class="paramname"> <em>preserve</em> = <code>true</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Resize the matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>new_size1</em> </td><td>New number of rows </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>new_size2</em> </td><td>New number of columns </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>preserve</em> </td><td>If true, the old values are preserved. At present, old values are always discarded. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a890ed2f6c982169c737bd4f68b2a5db7"></a><!-- doxytag: member="viennacl::coordinate_matrix::size1" ref="a890ed2f6c982169c737bd4f68b2a5db7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int size1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of rows. </p>
-
-</div>
-</div>
-<a class="anchor" id="aacffdea3e049b0080b6fa4ac4c2fd881"></a><!-- doxytag: member="viennacl::coordinate_matrix::size2" ref="aacffdea3e049b0080b6fa4ac4c2fd881" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int size2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of columns. </p>
-
-</div>
-</div>
-<hr/><h2>Friends And Related Function Documentation</h2>
-<a class="anchor" id="ac897302c28562b6e0fc56d2802102960"></a><!-- doxytag: member="viennacl::coordinate_matrix::copy" ref="ac897302c28562b6e0fc56d2802102960" args="(const CPU_MATRIX &cpu_matrix, coordinate_matrix< SCALARTYPE2, ALIGNMENT2 > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void copy </td>
-          <td>(</td>
-          <td class="paramtype">const CPU_MATRIX & </td>
-          <td class="paramname"> <em>cpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE2, ALIGNMENT2 > & </td>
-          <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [friend]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="coordinate__matrix_8hpp_source.html">coordinate_matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1entry__proxy.html b/doc/doxygen/html/classviennacl_1_1entry__proxy.html
deleted file mode 100644
index 02a5995..0000000
--- a/doc/doxygen/html/classviennacl_1_1entry__proxy.html
+++ /dev/null
@@ -1,329 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: entry_proxy< SCALARTYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy< SCALARTYPE ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>entry_proxy< SCALARTYPE > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::entry_proxy" -->
-<p>A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-users of the library.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="entry__proxy_8hpp_source.html">entry_proxy.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a969b706bdf3d3ab2ae15cb24085b0b81">entry_proxy</a> (unsigned int mem_offset, <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > const &mem_handle)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The constructor for the proxy class. Declared explicit to avoid any surprises created by the compiler.  <a href="#a969b706bdf3d3ab2ae15cb24085b0b81"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#ae111ad2b2148ff97982f897adb9f03a1">operator+=</a> (SCALARTYPE value)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a CPU floating point value.  <a href="#ae111ad2b2148ff97982f897adb9f03a1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a2255068fb4a338c350ceb6c5a933097b">operator-=</a> (SCALARTYPE value)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a CPU floating point value.  <a href="#a2255068fb4a338c350ceb6c5a933097b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#ac1c79eb6f521714145802e095d2063a5">operator*=</a> (SCALARTYPE value)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace multiplication with a CPU floating point value.  <a href="#ac1c79eb6f521714145802e095d2063a5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a0eb65cfaa5a879f33d9c389ad9595b0c">operator/=</a> (SCALARTYPE value)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace division by a CPU floating point value.  <a href="#a0eb65cfaa5a879f33d9c389ad9595b0c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#aac69195b98b89d2dbb4cb339e3d00852">operator=</a> (SCALARTYPE value)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment of a CPU floating point value.  <a href="#aac69195b98b89d2dbb4cb339e3d00852"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a6d7884311926bdd52601f636e82d3562">operator=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &value)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment of a GPU floating point value. Avoids unnecessary GPU->CPU->GPU transfers.  <a href="#a6d7884311926bdd52601f636e82d3562"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a1fe82cd71bef5d14642c9ab3d205fd94">operator=</a> (<a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment of another GPU value.  <a href="#a1fe82cd71bef5d14642c9ab3d205fd94"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#accf19b79da67d458fb38880c7a055f8d">operator SCALARTYPE</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Conversion to a CPU floating point value.  <a href="#accf19b79da67d458fb38880c7a055f8d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a5a79972f223067007dcfd4350cbad30f">index</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the index of the represented element.  <a href="#a5a79972f223067007dcfd4350cbad30f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem ><br class="typebreak"/>
- const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the memory <a class="el" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">viennacl::ocl::handle</a>.  <a href="#a625da5e66b023a7ed067040a21ec834d"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename SCALARTYPE><br/>
- class viennacl::entry_proxy< SCALARTYPE ></h3>
-
-<p>A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-users of the library. </p>
-<p>This proxy provides access to a single entry of a vector. If the element is assigned to a GPU object, no unnecessary transfers to the CPU and back to GPU are initiated.</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>Either float or double </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a969b706bdf3d3ab2ae15cb24085b0b81"></a><!-- doxytag: member="viennacl::entry_proxy::entry_proxy" ref="a969b706bdf3d3ab2ae15cb24085b0b81" args="(unsigned int mem_offset, viennacl::ocl::handle< cl_mem > const &mem_handle)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>mem_offset</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > const & </td>
-          <td class="paramname"> <em>mem_handle</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, explicit]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>The constructor for the proxy class. Declared explicit to avoid any surprises created by the compiler. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mem_offset</em> </td><td>The memory offset in multiples of sizeof(SCALARTYPE) relative to the memory pointed to by the handle </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mem_handle</em> </td><td>A <a class="el" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">viennacl::ocl::handle</a> for the memory buffer on the GPU. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a625da5e66b023a7ed067040a21ec834d"></a><!-- doxytag: member="viennacl::entry_proxy::handle" ref="a625da5e66b023a7ed067040a21ec834d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem> const& handle </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the memory <a class="el" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">viennacl::ocl::handle</a>. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5a79972f223067007dcfd4350cbad30f"></a><!-- doxytag: member="viennacl::entry_proxy::index" ref="a5a79972f223067007dcfd4350cbad30f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int index </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the index of the represented element. </p>
-
-</div>
-</div>
-<a class="anchor" id="accf19b79da67d458fb38880c7a055f8d"></a><!-- doxytag: member="viennacl::entry_proxy::operator SCALARTYPE" ref="accf19b79da67d458fb38880c7a055f8d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">operator SCALARTYPE </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Conversion to a CPU floating point value. </p>
-<p>This conversion allows to write something like double test = vector(4); However, one has to keep in mind that CPU<->GPU transfers are very slow compared to CPU<->CPU operations. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac1c79eb6f521714145802e095d2063a5"></a><!-- doxytag: member="viennacl::entry_proxy::operator*=" ref="ac1c79eb6f521714145802e095d2063a5" args="(SCALARTYPE value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator*= </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>value</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace multiplication with a CPU floating point value. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae111ad2b2148ff97982f897adb9f03a1"></a><!-- doxytag: member="viennacl::entry_proxy::operator+=" ref="ae111ad2b2148ff97982f897adb9f03a1" args="(SCALARTYPE value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator+= </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>value</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a CPU floating point value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2255068fb4a338c350ceb6c5a933097b"></a><!-- doxytag: member="viennacl::entry_proxy::operator-=" ref="a2255068fb4a338c350ceb6c5a933097b" args="(SCALARTYPE value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator-= </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>value</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a CPU floating point value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0eb65cfaa5a879f33d9c389ad9595b0c"></a><!-- doxytag: member="viennacl::entry_proxy::operator/=" ref="a0eb65cfaa5a879f33d9c389ad9595b0c" args="(SCALARTYPE value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator/= </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>value</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace division by a CPU floating point value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6d7884311926bdd52601f636e82d3562"></a><!-- doxytag: member="viennacl::entry_proxy::operator=" ref="a6d7884311926bdd52601f636e82d3562" args="(scalar< SCALARTYPE > const &value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>value</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Assignment of a GPU floating point value. Avoids unnecessary GPU->CPU->GPU transfers. </p>
-
-</div>
-</div>
-<a class="anchor" id="a1fe82cd71bef5d14642c9ab3d205fd94"></a><!-- doxytag: member="viennacl::entry_proxy::operator=" ref="a1fe82cd71bef5d14642c9ab3d205fd94" args="(entry_proxy const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Assignment of another GPU value. </p>
-
-</div>
-</div>
-<a class="anchor" id="aac69195b98b89d2dbb4cb339e3d00852"></a><!-- doxytag: member="viennacl::entry_proxy::operator=" ref="aac69195b98b89d2dbb4cb339e3d00852" args="(SCALARTYPE value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>value</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Assignment of a CPU floating point value. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="entry__proxy_8hpp_source.html">entry_proxy.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1bicgstab__tag.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1bicgstab__tag.html
deleted file mode 100644
index f67d8eb..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1bicgstab__tag.html
+++ /dev/null
@@ -1,226 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: bicgstab_tag Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>bicgstab_tag Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::bicgstab_tag" -->
-<p>A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="bicgstab_8hpp_source.html">bicgstab.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a5bc5a824cc4327c98fba2137408743e5">bicgstab_tag</a> (double tol=1e-8, unsigned int max_iterations=300)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The constructor.  <a href="#a5bc5a824cc4327c98fba2137408743e5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3">tolerance</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the relative tolerance.  <a href="#a2e99612a88de21eaeb07e55be78a28a3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">max_iterations</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum number of iterations.  <a href="#ab0a4e05130e2f14ba0374b9570ae9525"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">iters</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the number of solver iterations:  <a href="#a26002e6fe73ece7e16b125d9f4e97be9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a0643bc87331b97f3a90e71ec54ff205b">iters</a> (unsigned int i) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f">error</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the estimated relative error at the end of the solver run.  <a href="#ae75852c9d9bf937552ee5a1bafea818f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a086bf00d9923c3f80f62de3f8491a322">error</a> (double e) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the estimated relative error at the end of the solver run.  <a href="#a086bf00d9923c3f80f62de3f8491a322"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a5bc5a824cc4327c98fba2137408743e5"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::bicgstab_tag" ref="a5bc5a824cc4327c98fba2137408743e5" args="(double tol=1e-8, unsigned int max_iterations=300)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a> </td>
-          <td>(</td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>tol</em> = <code>1e-8</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>max_iterations</em> = <code>300</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>The constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>tol</em> </td><td>Relative tolerance for the residual (solver quits if ||r|| < tol * ||r_initial||) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>max_iterations</em> </td><td>The maximum number of iterations </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae75852c9d9bf937552ee5a1bafea818f"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::error" ref="ae75852c9d9bf937552ee5a1bafea818f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">double error </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the estimated relative error at the end of the solver run. </p>
-
-</div>
-</div>
-<a class="anchor" id="a086bf00d9923c3f80f62de3f8491a322"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::error" ref="a086bf00d9923c3f80f62de3f8491a322" args="(double e) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void error </td>
-          <td>(</td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>e</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the estimated relative error at the end of the solver run. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0643bc87331b97f3a90e71ec54ff205b"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::iters" ref="a0643bc87331b97f3a90e71ec54ff205b" args="(unsigned int i) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void iters </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>i</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a26002e6fe73ece7e16b125d9f4e97be9"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::iters" ref="a26002e6fe73ece7e16b125d9f4e97be9" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int iters </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Return the number of solver iterations: </p>
-
-</div>
-</div>
-<a class="anchor" id="ab0a4e05130e2f14ba0374b9570ae9525"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::max_iterations" ref="ab0a4e05130e2f14ba0374b9570ae9525" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int max_iterations </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum number of iterations. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2e99612a88de21eaeb07e55be78a28a3"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::tolerance" ref="a2e99612a88de21eaeb07e55be78a28a3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">double tolerance </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the relative tolerance. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="bicgstab_8hpp_source.html">bicgstab.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1cg__tag.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1cg__tag.html
deleted file mode 100644
index 2bd4b7a..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1cg__tag.html
+++ /dev/null
@@ -1,226 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: cg_tag Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>cg_tag Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::cg_tag" -->
-<p>A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="cg_8hpp_source.html">cg.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a987be47faf08698e2775045a23de5abe">cg_tag</a> (double tol=1e-8, unsigned int max_iterations=300)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The constructor.  <a href="#a987be47faf08698e2775045a23de5abe"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3">tolerance</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the relative tolerance.  <a href="#a2e99612a88de21eaeb07e55be78a28a3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">max_iterations</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum number of iterations.  <a href="#ab0a4e05130e2f14ba0374b9570ae9525"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">iters</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the number of solver iterations:  <a href="#a26002e6fe73ece7e16b125d9f4e97be9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a0643bc87331b97f3a90e71ec54ff205b">iters</a> (unsigned int i) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f">error</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the estimated relative error at the end of the solver run.  <a href="#ae75852c9d9bf937552ee5a1bafea818f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a086bf00d9923c3f80f62de3f8491a322">error</a> (double e) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the estimated relative error at the end of the solver run.  <a href="#a086bf00d9923c3f80f62de3f8491a322"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a987be47faf08698e2775045a23de5abe"></a><!-- doxytag: member="viennacl::linalg::cg_tag::cg_tag" ref="a987be47faf08698e2775045a23de5abe" args="(double tol=1e-8, unsigned int max_iterations=300)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a> </td>
-          <td>(</td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>tol</em> = <code>1e-8</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>max_iterations</em> = <code>300</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>The constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>tol</em> </td><td>Relative tolerance for the residual (solver quits if ||r|| < tol * ||r_initial||) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>max_iterations</em> </td><td>The maximum number of iterations </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae75852c9d9bf937552ee5a1bafea818f"></a><!-- doxytag: member="viennacl::linalg::cg_tag::error" ref="ae75852c9d9bf937552ee5a1bafea818f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">double error </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the estimated relative error at the end of the solver run. </p>
-
-</div>
-</div>
-<a class="anchor" id="a086bf00d9923c3f80f62de3f8491a322"></a><!-- doxytag: member="viennacl::linalg::cg_tag::error" ref="a086bf00d9923c3f80f62de3f8491a322" args="(double e) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void error </td>
-          <td>(</td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>e</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the estimated relative error at the end of the solver run. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0643bc87331b97f3a90e71ec54ff205b"></a><!-- doxytag: member="viennacl::linalg::cg_tag::iters" ref="a0643bc87331b97f3a90e71ec54ff205b" args="(unsigned int i) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void iters </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>i</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a26002e6fe73ece7e16b125d9f4e97be9"></a><!-- doxytag: member="viennacl::linalg::cg_tag::iters" ref="a26002e6fe73ece7e16b125d9f4e97be9" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int iters </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Return the number of solver iterations: </p>
-
-</div>
-</div>
-<a class="anchor" id="ab0a4e05130e2f14ba0374b9570ae9525"></a><!-- doxytag: member="viennacl::linalg::cg_tag::max_iterations" ref="ab0a4e05130e2f14ba0374b9570ae9525" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int max_iterations </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum number of iterations. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2e99612a88de21eaeb07e55be78a28a3"></a><!-- doxytag: member="viennacl::linalg::cg_tag::tolerance" ref="a2e99612a88de21eaeb07e55be78a28a3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">double tolerance </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the relative tolerance. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="cg_8hpp_source.html">cg.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1gmres__tag.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1gmres__tag.html
deleted file mode 100644
index 50e00ab..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1gmres__tag.html
+++ /dev/null
@@ -1,278 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: gmres_tag Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>gmres_tag Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::gmres_tag" -->
-<p>A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="gmres_8hpp_source.html">gmres.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a83b42e2a7d307fb4d23a039027904fab">gmres_tag</a> (double tol=1e-10, unsigned int max_iterations=300, unsigned int krylov_dim=20)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The constructor.  <a href="#a83b42e2a7d307fb4d23a039027904fab"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3">tolerance</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the relative tolerance.  <a href="#a2e99612a88de21eaeb07e55be78a28a3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">max_iterations</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum number of iterations.  <a href="#ab0a4e05130e2f14ba0374b9570ae9525"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89">krylov_dim</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum dimension of the Krylov space before restart.  <a href="#a5841d44a68cceea5176b41420649ce89"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a16290e7b3ac1b41c490bbcf2837937a8">max_restarts</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum number of GMRES restarts.  <a href="#a16290e7b3ac1b41c490bbcf2837937a8"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">iters</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the number of solver iterations:  <a href="#a26002e6fe73ece7e16b125d9f4e97be9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a0643bc87331b97f3a90e71ec54ff205b">iters</a> (unsigned int i) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the number of solver iterations (should only be modified by the solver).  <a href="#a0643bc87331b97f3a90e71ec54ff205b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f">error</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the estimated relative error at the end of the solver run.  <a href="#ae75852c9d9bf937552ee5a1bafea818f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a086bf00d9923c3f80f62de3f8491a322">error</a> (double e) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the estimated relative error at the end of the solver run.  <a href="#a086bf00d9923c3f80f62de3f8491a322"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a83b42e2a7d307fb4d23a039027904fab"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::gmres_tag" ref="a83b42e2a7d307fb4d23a039027904fab" args="(double tol=1e-10, unsigned int max_iterations=300, unsigned int krylov_dim=20)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a> </td>
-          <td>(</td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>tol</em> = <code>1e-10</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>max_iterations</em> = <code>300</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>krylov_dim</em> = <code>20</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>The constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>tol</em> </td><td>Relative tolerance for the residual (solver quits if ||r|| < tol * ||r_initial||) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>max_iterations</em> </td><td>The maximum number of iterations (including restarts </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>krylov_dim</em> </td><td>The maximum dimension of the Krylov space before restart (number of restarts is found by max_iterations / krylov_dim) </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae75852c9d9bf937552ee5a1bafea818f"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::error" ref="ae75852c9d9bf937552ee5a1bafea818f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">double error </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the estimated relative error at the end of the solver run. </p>
-
-</div>
-</div>
-<a class="anchor" id="a086bf00d9923c3f80f62de3f8491a322"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::error" ref="a086bf00d9923c3f80f62de3f8491a322" args="(double e) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void error </td>
-          <td>(</td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>e</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the estimated relative error at the end of the solver run. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0643bc87331b97f3a90e71ec54ff205b"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::iters" ref="a0643bc87331b97f3a90e71ec54ff205b" args="(unsigned int i) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void iters </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>i</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Set the number of solver iterations (should only be modified by the solver). </p>
-
-</div>
-</div>
-<a class="anchor" id="a26002e6fe73ece7e16b125d9f4e97be9"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::iters" ref="a26002e6fe73ece7e16b125d9f4e97be9" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int iters </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Return the number of solver iterations: </p>
-
-</div>
-</div>
-<a class="anchor" id="a5841d44a68cceea5176b41420649ce89"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::krylov_dim" ref="a5841d44a68cceea5176b41420649ce89" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int krylov_dim </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum dimension of the Krylov space before restart. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab0a4e05130e2f14ba0374b9570ae9525"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::max_iterations" ref="ab0a4e05130e2f14ba0374b9570ae9525" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int max_iterations </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum number of iterations. </p>
-
-</div>
-</div>
-<a class="anchor" id="a16290e7b3ac1b41c490bbcf2837937a8"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::max_restarts" ref="a16290e7b3ac1b41c490bbcf2837937a8" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int max_restarts </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum number of GMRES restarts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2e99612a88de21eaeb07e55be78a28a3"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::tolerance" ref="a2e99612a88de21eaeb07e55be78a28a3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">double tolerance </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the relative tolerance. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="gmres_8hpp_source.html">gmres.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__precond.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__precond.html
deleted file mode 100644
index 0c3b4f7..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__precond.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: ilut_precond< MatrixType > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond< MatrixType ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>ilut_precond< MatrixType > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::ilut_precond" -->
-<p>ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="ilu_8hpp_source.html">ilu.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond</a> (MatrixType const &mat, <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> const &tag)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a> (VectorType &vec) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename MatrixType><br/>
- class viennacl::linalg::ilut_precond< MatrixType ></h3>
-
-<p>ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a1961e282ec4851df696e3d6808d1fcbe"></a><!-- doxytag: member="viennacl::linalg::ilut_precond::ilut_precond" ref="a1961e282ec4851df696e3d6808d1fcbe" args="(MatrixType const &mat, ilut_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond</a> </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a58cb0bc6ab58fc3b770c91cc15362d0a"></a><!-- doxytag: member="viennacl::linalg::ilut_precond::apply" ref="a58cb0bc6ab58fc3b770c91cc15362d0a" args="(VectorType &vec) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void apply </td>
-          <td>(</td>
-          <td class="paramtype">VectorType & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="ilu_8hpp_source.html">ilu.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html
deleted file mode 100644
index ec5b931..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >" -->
-<p>ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="ilu_8hpp_source.html">ilu.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">MatrixType</a> const &mat, <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> const &tag)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a14dbb6add8cf6b44cf240ba3020404be">apply</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< ScalarType > &vec) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename ScalarType, unsigned int MAT_ALIGNMENT><br/>
- class viennacl::linalg::ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></h3>
-
-<p>ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. </p>
-<p>Specialization for <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a1961e282ec4851df696e3d6808d1fcbe"></a><!-- doxytag: member="viennacl::linalg::ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::ilut_precond" ref="a1961e282ec4851df696e3d6808d1fcbe" args="(MatrixType const &mat, ilut_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1compressed__matrix.html">MatrixType</a> const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a14dbb6add8cf6b44cf240ba3020404be"></a><!-- doxytag: member="viennacl::linalg::ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::apply" ref="a14dbb6add8cf6b44cf240ba3020404be" args="(vector< ScalarType > &vec) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void apply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">vector</a>< ScalarType > & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="ilu_8hpp_source.html">ilu.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__tag.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__tag.html
deleted file mode 100644
index 1a325b2..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__tag.html
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: ilut_tag Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>ilut_tag Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::ilut_tag" -->
-<p>A tag for incomplete LU factorization with threshold (ILUT).  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="ilu_8hpp_source.html">ilu.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a9308c6447d14308fcfac1f83f456108a">ilut_tag</a> (unsigned int entries_per_row=10, double drop_tolerance=1e-3)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The constructor.  <a href="#a9308c6447d14308fcfac1f83f456108a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a146cc7a6b6e8ebb052f057416f7d356d">set_drop_tolerance</a> (double tol)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">get_drop_tolerance</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#af01a20f9ca9bdd5264128ef2f57b0b11">set_entries_per_row</a> (unsigned int e)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">get_entries_per_row</a> () const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for incomplete LU factorization with threshold (ILUT). </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a9308c6447d14308fcfac1f83f456108a"></a><!-- doxytag: member="viennacl::linalg::ilut_tag::ilut_tag" ref="a9308c6447d14308fcfac1f83f456108a" args="(unsigned int entries_per_row=10, double drop_tolerance=1e-3)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>entries_per_row</em> = <code>10</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>drop_tolerance</em> = <code>1e-3</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>The constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>entries_per_row</em> </td><td>Number of nonzero entries per row in L and U. Note that L and U are stored in a single matrix, thus there are 2*entries_per_row in total. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>drop_tolerance</em> </td><td>The drop tolerance for ILUT </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a3dca5fa27b598fea7c6db2861924965f"></a><!-- doxytag: member="viennacl::linalg::ilut_tag::get_drop_tolerance" ref="a3dca5fa27b598fea7c6db2861924965f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">double get_drop_tolerance </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a24bd151db0892082aec946d18d0599ce"></a><!-- doxytag: member="viennacl::linalg::ilut_tag::get_entries_per_row" ref="a24bd151db0892082aec946d18d0599ce" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int get_entries_per_row </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a146cc7a6b6e8ebb052f057416f7d356d"></a><!-- doxytag: member="viennacl::linalg::ilut_tag::set_drop_tolerance" ref="a146cc7a6b6e8ebb052f057416f7d356d" args="(double tol)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void set_drop_tolerance </td>
-          <td>(</td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>tol</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af01a20f9ca9bdd5264128ef2f57b0b11"></a><!-- doxytag: member="viennacl::linalg::ilut_tag::set_entries_per_row" ref="af01a20f9ca9bdd5264128ef2f57b0b11" args="(unsigned int e)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void set_entries_per_row </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>e</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="ilu_8hpp_source.html">ilu.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__precond.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__precond.html
deleted file mode 100644
index 6a59e3f..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__precond.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: jacobi_precond< MatrixType > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond< MatrixType ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>jacobi_precond< MatrixType > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::jacobi_precond" -->
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="jacobi__precond_8hpp_source.html">jacobi_precond.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond</a> (MatrixType const &mat, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a> const &tag)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a> (VectorType &vec) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Apply to res = b - Ax, i.e. jacobi applied vec (right hand side),.  <a href="#a58cb0bc6ab58fc3b770c91cc15362d0a"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename MatrixType><br/>
- class viennacl::linalg::jacobi_precond< MatrixType ></h3>
-
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a784aceacd83c8ffda5a601bbf332b7b3"></a><!-- doxytag: member="viennacl::linalg::jacobi_precond::jacobi_precond" ref="a784aceacd83c8ffda5a601bbf332b7b3" args="(MatrixType const &mat, jacobi_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond</a> </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a> const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a58cb0bc6ab58fc3b770c91cc15362d0a"></a><!-- doxytag: member="viennacl::linalg::jacobi_precond::apply" ref="a58cb0bc6ab58fc3b770c91cc15362d0a" args="(VectorType &vec) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void apply </td>
-          <td>(</td>
-          <td class="paramtype">VectorType & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Apply to res = b - Ax, i.e. jacobi applied vec (right hand side),. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="jacobi__precond_8hpp_source.html">jacobi_precond.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html
deleted file mode 100644
index 60f197f..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >" -->
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="jacobi__precond_8hpp_source.html">jacobi_precond.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">MatrixType</a> const &mat, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a> const &tag)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">init_gpu</a> ()</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">apply</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, ALIGNMENT > &vec) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename ScalarType, unsigned int MAT_ALIGNMENT><br/>
- class viennacl::linalg::jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></h3>
-
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. </p>
-<p>Specialization for <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a784aceacd83c8ffda5a601bbf332b7b3"></a><!-- doxytag: member="viennacl::linalg::jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::jacobi_precond" ref="a784aceacd83c8ffda5a601bbf332b7b3" args="(MatrixType const &mat, jacobi_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1compressed__matrix.html">MatrixType</a> const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a> const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a5f15f216a95536e869b31f5e529fe975"></a><!-- doxytag: member="viennacl::linalg::jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::apply" ref="a5f15f216a95536e869b31f5e529fe975" args="(viennacl::vector< ScalarType, ALIGNMENT > &vec) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void apply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9688692acd00f424e984302f94f328c2"></a><!-- doxytag: member="viennacl::linalg::jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::init_gpu" ref="a9688692acd00f424e984302f94f328c2" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void init_gpu </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="jacobi__precond_8hpp_source.html">jacobi_precond.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__tag.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__tag.html
deleted file mode 100644
index 32e9427..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__tag.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: jacobi_tag Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>jacobi_tag Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::jacobi_tag" -->
-<p>A tag for a jacobi preconditioner.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="jacobi__precond_8hpp_source.html">jacobi_precond.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for a jacobi preconditioner. </p>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="jacobi__precond_8hpp_source.html">jacobi_precond.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1no__precond.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1no__precond.html
deleted file mode 100644
index 12948d7..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1no__precond.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: no_precond Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">no_precond</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>no_precond Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::no_precond" -->
-<p>A tag class representing the use of no preconditioner.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a> (VectorType &vec) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag class representing the use of no preconditioner. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a58cb0bc6ab58fc3b770c91cc15362d0a"></a><!-- doxytag: member="viennacl::linalg::no_precond::apply" ref="a58cb0bc6ab58fc3b770c91cc15362d0a" args="(VectorType &vec) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void apply </td>
-          <td>(</td>
-          <td class="paramtype">VectorType & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling.html
deleted file mode 100644
index a9945bf..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling.html
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: row_scaling< MatrixType > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling< MatrixType ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>row_scaling< MatrixType > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::row_scaling" -->
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="row__scaling_8hpp_source.html">row_scaling.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html#a505b14065ba3fd81710d349907a73334">row_scaling</a> (MatrixType const &mat, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor for the preconditioner.  <a href="#a505b14065ba3fd81710d349907a73334"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a> (VectorType &vec) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Apply to res = b - Ax, i.e. row applied vec (right hand side),.  <a href="#a58cb0bc6ab58fc3b770c91cc15362d0a"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename MatrixType><br/>
- class viennacl::linalg::row_scaling< MatrixType ></h3>
-
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a505b14065ba3fd81710d349907a73334"></a><!-- doxytag: member="viennacl::linalg::row_scaling::row_scaling" ref="a505b14065ba3fd81710d349907a73334" args="(MatrixType const &mat, row_scaling_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling</a> </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Constructor for the preconditioner. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>A row scaling tag holding the desired norm. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a58cb0bc6ab58fc3b770c91cc15362d0a"></a><!-- doxytag: member="viennacl::linalg::row_scaling::apply" ref="a58cb0bc6ab58fc3b770c91cc15362d0a" args="(VectorType &vec) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void apply </td>
-          <td>(</td>
-          <td class="paramtype">VectorType & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Apply to res = b - Ax, i.e. row applied vec (right hand side),. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="row__scaling_8hpp_source.html">row_scaling.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html
deleted file mode 100644
index f1d7e60..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > >" -->
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="row__scaling_8hpp_source.html">row_scaling.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a505b14065ba3fd81710d349907a73334">row_scaling</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">MatrixType</a> const &mat, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor for the preconditioner.  <a href="#a505b14065ba3fd81710d349907a73334"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">init_gpu</a> ()</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">apply</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, ALIGNMENT > &vec) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename ScalarType, unsigned int MAT_ALIGNMENT><br/>
- class viennacl::linalg::row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></h3>
-
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. </p>
-<p>Specialization for <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a505b14065ba3fd81710d349907a73334"></a><!-- doxytag: member="viennacl::linalg::row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::row_scaling" ref="a505b14065ba3fd81710d349907a73334" args="(MatrixType const &mat, row_scaling_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1compressed__matrix.html">MatrixType</a> const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Constructor for the preconditioner. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>A row scaling tag holding the desired norm. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a5f15f216a95536e869b31f5e529fe975"></a><!-- doxytag: member="viennacl::linalg::row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::apply" ref="a5f15f216a95536e869b31f5e529fe975" args="(viennacl::vector< ScalarType, ALIGNMENT > &vec) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void apply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9688692acd00f424e984302f94f328c2"></a><!-- doxytag: member="viennacl::linalg::row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::init_gpu" ref="a9688692acd00f424e984302f94f328c2" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void init_gpu </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="row__scaling_8hpp_source.html">row_scaling.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling__tag.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling__tag.html
deleted file mode 100644
index ce0af54..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling__tag.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: row_scaling_tag Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>row_scaling_tag Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::row_scaling_tag" -->
-<p>A tag for a row preconditioner.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="row__scaling_8hpp_source.html">row_scaling.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a12412041036e5beed6c8c1e0f2fade5e">row_scaling_tag</a> (unsigned int p=2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor.  <a href="#a12412041036e5beed6c8c1e0f2fade5e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687">norm</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the index p of the l^p-norm (1... sum(abs(x)), 2... sqrt(sum(x_i^2))). Currently only p=1 and p=2 supported.  <a href="#a1122a7018fc4679fa8f6aaf37976f687"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for a row preconditioner. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a12412041036e5beed6c8c1e0f2fade5e"></a><!-- doxytag: member="viennacl::linalg::row_scaling_tag::row_scaling_tag" ref="a12412041036e5beed6c8c1e0f2fade5e" args="(unsigned int p=2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>p</em> = <code>2</code></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>Integer selecting the desired row norm. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a1122a7018fc4679fa8f6aaf37976f687"></a><!-- doxytag: member="viennacl::linalg::row_scaling_tag::norm" ref="a1122a7018fc4679fa8f6aaf37976f687" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int norm </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the index p of the l^p-norm (1... sum(abs(x)), 2... sqrt(sum(x_i^2))). Currently only p=1 and p=2 supported. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="row__scaling_8hpp_source.html">row_scaling.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1matrix.html b/doc/doxygen/html/classviennacl_1_1matrix.html
deleted file mode 100644
index ac05c85..0000000
--- a/doc/doxygen/html/classviennacl_1_1matrix.html
+++ /dev/null
@@ -1,960 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix< SCALARTYPE, F, ALIGNMENT > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1matrix.html">matrix< SCALARTYPE, F, ALIGNMENT ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a>  </div>
-  <div class="headertitle">
-<h1>matrix< SCALARTYPE, F, ALIGNMENT > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::matrix" -->
-<p>A dense matrix class.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a><br class="typebreak"/>
-< <a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a>, <a class="el" href="classviennacl_1_1matrix.html">matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT > > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ac726b43e88eee76bc8d8eb9dcd8a5fb4">iterator1</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a><br class="typebreak"/>
-< <a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a>, <a class="el" href="classviennacl_1_1matrix.html">matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT > > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ac85ff703941f442ef2b38ce83b71d808">iterator2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< typename <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><br class="typebreak"/>
-< SCALARTYPE >::ResultType > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#aed985c700866b1bae61cb8bcd5d322fe">value_type</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3">matrix</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The default constructor. Does not allocate any memory.  <a href="#a2b7f607d95bd2aeb66a382ff2df384c3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a67e5572450ecba91b1bfe1f691236bbd">matrix</a> (unsigned int rows, unsigned int columns)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates the matrix with the given dimensions.  <a href="#a67e5572450ecba91b1bfe1f691236bbd"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ad97f1c76628466ba92630597913b7798">matrix</a> (cl_mem mem, unsigned int rows, unsigned int columns)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a625b18f427f3642439f1a84f01fd1a16">matrix</a> (<a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< LHS, RHS, OP > const &proxy)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a26544386781d4023aa902d3cb922e0eb">matrix</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">operator=</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a8130ec92bb6c6f3d9522c5e32528bdfc">operator=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23">resize</a> (unsigned int rows, unsigned int columns, bool preserve=true)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Resizes the matrix. Existing entries can be preserved, but.  <a href="#a76ffc3a247bdd7e9a4225f14744c1f23"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#aee035c6150315c1511e4abfda4b17571">operator()</a> (unsigned int row_index, unsigned int col_index)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Read-write access to a single element of the vector.  <a href="#aee035c6150315c1511e4abfda4b17571"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a85566d47047a4d034c6f5afcb3411b33">operator()</a> (unsigned int row_index, unsigned int col_index) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Read access to a single element of the vector.  <a href="#a85566d47047a4d034c6f5afcb3411b33"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, op_add > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a7693f9e5a4310f9f89ab8c5fadc2c5c0">operator+</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">operator+=</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, op_sub > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ada8b83b6ead4dfed5ec3c087580cf6b9">operator-</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">operator-=</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &other)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int A1, unsigned int A2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a0e5c37d9c65e5c457816ebabde5dfe6b">operator+=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod > &proxy)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int A1, unsigned int A2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ac48ef303a00c6f0418fd991779bba455">operator-=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod > &proxy)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int A1, unsigned int A2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a9f0249af669fc7dfa3e9baf15c74fefb">operator+=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod >, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int A1, unsigned int A2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#abf94aa936b88e8840684fdcb71c975af">operator-=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod >, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#af9d2e9edda2d1896fcbcf2d6068bd90f">operator*=</a> (SCALARTYPE val)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ab87ac2c48bb2b05ce27a01180e09f869">operator*=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a9bc4ea8061b64ebd021610e805e00f76">operator/=</a> (SCALARTYPE val)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a613b5b6e9bc337aea80d09e92179c204">operator/=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType1 , typename MatrixType2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#adc76eef234678aba57478ab41b5880f1">operator=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< MatrixType1, MatrixType2, op_prod > &proxy)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a3aaa450a353d0d7ff4bf89740a92a5c3">operator=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_add > &proxy)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#aaa1fd1f887b588b66d3eae3a264b09cb">operator=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_sub > &proxy)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4">size1</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of rows.  <a href="#a10aa70c5b59457061b66e118e8fc05e4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">size2</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of columns.  <a href="#ac1b69377d2b4e37ccb5fab0fa125bc9a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Resets all entries to zero.  <a href="#ac8bb3912a3ce86b15842e79d0b421204"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3">internal_size1</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the internal number of rows. Usually required for launching OpenCL kernels only.  <a href="#a4854e3e0aa7a3751f63f6602b38ee4b3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335">internal_size2</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the internal number of columns. Usually required for launching OpenCL kernels only.  <a href="#acd1a1df1441c667eded344541031a335"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34">internal_size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).  <a href="#ac3019718fecac86d25ad8446e57bdd34"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle.  <a href="#abe419a13116160fd12b66f47c5180e5c"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="friends"></a>
-Friends</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE2 , typename F2 , unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a> (const CPU_MATRIX &cpu_matrix, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE2, F2, ALIGNMENT2 > &gpu_matrix)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE2 , typename A1 , typename A2 , typename F2 , unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a16f29c7064c0aa97dfbf324336c5176a">copy</a> (const std::vector< std::vector< SCALARTYPE2, A1 >, A2 > &cpu_matrix, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE2, F2, ALIGNMENT2 > &gpu_matrix)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE2 , typename F2 , unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a482880bc796727f4dcb859a2ceb64c6d">fast_copy</a> (SCALARTYPE2 *cpu_matrix_begin, SCALARTYPE2 *cpu_matrix_end, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE2, F2, ALIGNMENT2 > &gpu_matrix)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, typename F, unsigned int ALIGNMENT><br/>
- class viennacl::matrix< SCALARTYPE, F, ALIGNMENT ></h3>
-
-<p>A dense matrix class. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>The underlying scalar type (either float or double) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>F</em> </td><td>Storage layout: Either <a class="el" href="structviennacl_1_1row__major.html" title="A tag for row-major storage of a dense matrix.">row_major</a> or <a class="el" href="structviennacl_1_1column__major.html">column_major</a> (at present only <a class="el" href="structviennacl_1_1row__major.html" title="A tag for row-major storage of a dense matrix.">row_major</a> is supported) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>ALIGNMENT</em> </td><td>The internal memory size is given by (<a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size()</a>/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory. </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="ac726b43e88eee76bc8d8eb9dcd8a5fb4"></a><!-- doxytag: member="viennacl::matrix::iterator1" ref="ac726b43e88eee76bc8d8eb9dcd8a5fb4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a><<a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a>, <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT> > <a class="el" href="classviennacl_1_1matrix__iterator.html">iterator1</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac85ff703941f442ef2b38ce83b71d808"></a><!-- doxytag: member="viennacl::matrix::iterator2" ref="ac85ff703941f442ef2b38ce83b71d808" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a><<a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a>, <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT> > <a class="el" href="classviennacl_1_1matrix__iterator.html">iterator2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aed985c700866b1bae61cb8bcd5d322fe"></a><!-- doxytag: member="viennacl::matrix::value_type" ref="aed985c700866b1bae61cb8bcd5d322fe" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a><typename <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><SCALARTYPE>::ResultType> <a class="el" href="classviennacl_1_1scalar.html">value_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a2b7f607d95bd2aeb66a382ff2df384c3"></a><!-- doxytag: member="viennacl::matrix::matrix" ref="a2b7f607d95bd2aeb66a382ff2df384c3" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>The default constructor. Does not allocate any memory. </p>
-
-</div>
-</div>
-<a class="anchor" id="a67e5572450ecba91b1bfe1f691236bbd"></a><!-- doxytag: member="viennacl::matrix::matrix" ref="a67e5572450ecba91b1bfe1f691236bbd" args="(unsigned int rows, unsigned int columns)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a> </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>rows</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>columns</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, explicit]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Creates the matrix with the given dimensions. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>rows</em> </td><td>Number of rows </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>columns</em> </td><td>Number of columns </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad97f1c76628466ba92630597913b7798"></a><!-- doxytag: member="viennacl::matrix::matrix" ref="ad97f1c76628466ba92630597913b7798" args="(cl_mem mem, unsigned int rows, unsigned int columns)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a> </td>
-          <td>(</td>
-          <td class="paramtype">cl_mem </td>
-          <td class="paramname"> <em>mem</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>rows</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>columns</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, explicit]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a625b18f427f3642439f1a84f01fd1a16"></a><!-- doxytag: member="viennacl::matrix::matrix" ref="a625b18f427f3642439f1a84f01fd1a16" args="(matrix_expression< LHS, RHS, OP > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< LHS, RHS, OP > const & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a26544386781d4023aa902d3cb922e0eb"></a><!-- doxytag: member="viennacl::matrix::matrix" ref="a26544386781d4023aa902d3cb922e0eb" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &mat)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a> </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a><!-- doxytag: member="viennacl::matrix::clear" ref="ac8bb3912a3ce86b15842e79d0b421204" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void clear </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Resets all entries to zero. </p>
-
-</div>
-</div>
-<a class="anchor" id="abe419a13116160fd12b66f47c5180e5c"></a><!-- doxytag: member="viennacl::matrix::handle" ref="abe419a13116160fd12b66f47c5180e5c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac3019718fecac86d25ad8446e57bdd34"></a><!-- doxytag: member="viennacl::matrix::internal_size" ref="ac3019718fecac86d25ad8446e57bdd34" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const unsigned int internal_size </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE). </p>
-
-</div>
-</div>
-<a class="anchor" id="a4854e3e0aa7a3751f63f6602b38ee4b3"></a><!-- doxytag: member="viennacl::matrix::internal_size1" ref="a4854e3e0aa7a3751f63f6602b38ee4b3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const unsigned int internal_size1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the internal number of rows. Usually required for launching OpenCL kernels only. </p>
-
-</div>
-</div>
-<a class="anchor" id="acd1a1df1441c667eded344541031a335"></a><!-- doxytag: member="viennacl::matrix::internal_size2" ref="acd1a1df1441c667eded344541031a335" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const unsigned int internal_size2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the internal number of columns. Usually required for launching OpenCL kernels only. </p>
-
-</div>
-</div>
-<a class="anchor" id="aee035c6150315c1511e4abfda4b17571"></a><!-- doxytag: member="viennacl::matrix::operator()" ref="aee035c6150315c1511e4abfda4b17571" args="(unsigned int row_index, unsigned int col_index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a><SCALARTYPE> operator() </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>row_index</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>col_index</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Read-write access to a single element of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="a85566d47047a4d034c6f5afcb3411b33"></a><!-- doxytag: member="viennacl::matrix::operator()" ref="a85566d47047a4d034c6f5afcb3411b33" args="(unsigned int row_index, unsigned int col_index) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE> operator() </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>row_index</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>col_index</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Read access to a single element of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="af9d2e9edda2d1896fcbcf2d6068bd90f"></a><!-- doxytag: member="viennacl::matrix::operator*=" ref="af9d2e9edda2d1896fcbcf2d6068bd90f" args="(SCALARTYPE val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator*= </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>val</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab87ac2c48bb2b05ce27a01180e09f869"></a><!-- doxytag: member="viennacl::matrix::operator*=" ref="ab87ac2c48bb2b05ce27a01180e09f869" args="(scalar< SCALARTYPE > const &val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator*= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>val</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7693f9e5a4310f9f89ab8c5fadc2c5c0"></a><!-- doxytag: member="viennacl::matrix::operator+" ref="a7693f9e5a4310f9f89ab8c5fadc2c5c0" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, op_add > operator+ </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0e5c37d9c65e5c457816ebabde5dfe6b"></a><!-- doxytag: member="viennacl::matrix::operator+=" ref="a0e5c37d9c65e5c457816ebabde5dfe6b" args="(const matrix_expression< const vector< SCALARTYPE, A1 >, const vector< SCALARTYPE, A2 >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9f0249af669fc7dfa3e9baf15c74fefb"></a><!-- doxytag: member="viennacl::matrix::operator+=" ref="a9f0249af669fc7dfa3e9baf15c74fefb" args="(const matrix_expression< const matrix_expression< const vector< SCALARTYPE, A1 >, const vector< SCALARTYPE, A2 >, op_prod >, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod >, const SCALARTYPE, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a017324eb06f5b4f9f43a1931d151e99c"></a><!-- doxytag: member="viennacl::matrix::operator+=" ref="a017324eb06f5b4f9f43a1931d151e99c" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ada8b83b6ead4dfed5ec3c087580cf6b9"></a><!-- doxytag: member="viennacl::matrix::operator-" ref="ada8b83b6ead4dfed5ec3c087580cf6b9" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, op_sub > operator- </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aeaadfa9e3ffd70b4d4787bc832a964e6"></a><!-- doxytag: member="viennacl::matrix::operator-=" ref="aeaadfa9e3ffd70b4d4787bc832a964e6" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac48ef303a00c6f0418fd991779bba455"></a><!-- doxytag: member="viennacl::matrix::operator-=" ref="ac48ef303a00c6f0418fd991779bba455" args="(const matrix_expression< const vector< SCALARTYPE, A1 >, const vector< SCALARTYPE, A2 >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abf94aa936b88e8840684fdcb71c975af"></a><!-- doxytag: member="viennacl::matrix::operator-=" ref="abf94aa936b88e8840684fdcb71c975af" args="(const matrix_expression< const matrix_expression< const vector< SCALARTYPE, A1 >, const vector< SCALARTYPE, A2 >, op_prod >, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod >, const SCALARTYPE, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9bc4ea8061b64ebd021610e805e00f76"></a><!-- doxytag: member="viennacl::matrix::operator/=" ref="a9bc4ea8061b64ebd021610e805e00f76" args="(SCALARTYPE val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator/= </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>val</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a613b5b6e9bc337aea80d09e92179c204"></a><!-- doxytag: member="viennacl::matrix::operator/=" ref="a613b5b6e9bc337aea80d09e92179c204" args="(scalar< SCALARTYPE > const &val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator/= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>val</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a3aaa450a353d0d7ff4bf89740a92a5c3"></a><!-- doxytag: member="viennacl::matrix::operator=" ref="a3aaa450a353d0d7ff4bf89740a92a5c3" args="(const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_add > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_add > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adc76eef234678aba57478ab41b5880f1"></a><!-- doxytag: member="viennacl::matrix::operator=" ref="adc76eef234678aba57478ab41b5880f1" args="(const matrix_expression< MatrixType1, MatrixType2, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< MatrixType1, MatrixType2, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aaa1fd1f887b588b66d3eae3a264b09cb"></a><!-- doxytag: member="viennacl::matrix::operator=" ref="aaa1fd1f887b588b66d3eae3a264b09cb" args="(const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_sub > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_sub > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8130ec92bb6c6f3d9522c5e32528bdfc"></a><!-- doxytag: member="viennacl::matrix::operator=" ref="a8130ec92bb6c6f3d9522c5e32528bdfc" args="(const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_trans > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa609ee520223e208f4a39a78522865c3"></a><!-- doxytag: member="viennacl::matrix::operator=" ref="aa609ee520223e208f4a39a78522865c3" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &mat)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a76ffc3a247bdd7e9a4225f14744c1f23"></a><!-- doxytag: member="viennacl::matrix::resize" ref="a76ffc3a247bdd7e9a4225f14744c1f23" args="(unsigned int rows, unsigned int columns, bool preserve=true)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void resize </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>rows</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>columns</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">bool </td>
-          <td class="paramname"> <em>preserve</em> = <code>true</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Resizes the matrix. Existing entries can be preserved, but. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>rows</em> </td><td>New number of rows </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>columns</em> </td><td>New number of columns </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>preserve</em> </td><td>If true, existing values are preserved. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a10aa70c5b59457061b66e118e8fc05e4"></a><!-- doxytag: member="viennacl::matrix::size1" ref="a10aa70c5b59457061b66e118e8fc05e4" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const unsigned int& size1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of rows. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac1b69377d2b4e37ccb5fab0fa125bc9a"></a><!-- doxytag: member="viennacl::matrix::size2" ref="ac1b69377d2b4e37ccb5fab0fa125bc9a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const unsigned int& size2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of columns. </p>
-
-</div>
-</div>
-<hr/><h2>Friends And Related Function Documentation</h2>
-<a class="anchor" id="a6d60b3ee25e9dec224c68f00f4a3a97f"></a><!-- doxytag: member="viennacl::matrix::copy" ref="a6d60b3ee25e9dec224c68f00f4a3a97f" args="(const CPU_MATRIX &cpu_matrix, matrix< SCALARTYPE2, F2, ALIGNMENT2 > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void copy </td>
-          <td>(</td>
-          <td class="paramtype">const CPU_MATRIX & </td>
-          <td class="paramname"> <em>cpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE2, F2, ALIGNMENT2 > & </td>
-          <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [friend]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a16f29c7064c0aa97dfbf324336c5176a"></a><!-- doxytag: member="viennacl::matrix::copy" ref="a16f29c7064c0aa97dfbf324336c5176a" args="(const std::vector< std::vector< SCALARTYPE2, A1 >, A2 > &cpu_matrix, matrix< SCALARTYPE2, F2, ALIGNMENT2 > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void copy </td>
-          <td>(</td>
-          <td class="paramtype">const std::vector< std::vector< SCALARTYPE2, A1 >, A2 > & </td>
-          <td class="paramname"> <em>cpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE2, F2, ALIGNMENT2 > & </td>
-          <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [friend]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a482880bc796727f4dcb859a2ceb64c6d"></a><!-- doxytag: member="viennacl::matrix::fast_copy" ref="a482880bc796727f4dcb859a2ceb64c6d" args="(SCALARTYPE2 *cpu_matrix_begin, SCALARTYPE2 *cpu_matrix_end, matrix< SCALARTYPE2, F2, ALIGNMENT2 > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void fast_copy </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE2 * </td>
-          <td class="paramname"> <em>cpu_matrix_begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SCALARTYPE2 * </td>
-          <td class="paramname"> <em>cpu_matrix_end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE2, F2, ALIGNMENT2 > & </td>
-          <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [friend]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1matrix__expression.html b/doc/doxygen/html/classviennacl_1_1matrix__expression.html
deleted file mode 100644
index 9c8bf17..0000000
--- a/doc/doxygen/html/classviennacl_1_1matrix__expression.html
+++ /dev/null
@@ -1,172 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_expression< LHS, RHS, OP > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression< LHS, RHS, OP ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_expression< LHS, RHS, OP > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::matrix_expression" -->
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html#a466edf19960e38ab2eecab2109956c53">matrix_expression</a> (LHS &lhs, RHS &rhs)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Extracts the vector type from the two operands.  <a href="#a466edf19960e38ab2eecab2109956c53"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">LHS & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html#abb680866089de4e937ddc6ce6f1f1830">lhs</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get left hand side operand.  <a href="#abb680866089de4e937ddc6ce6f1f1830"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">RHS & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html#a563f5aecaa0755006225235e44a11a82">rhs</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get right hand side operand.  <a href="#a563f5aecaa0755006225235e44a11a82"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html#a890ed2f6c982169c737bd4f68b2a5db7">size1</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the size of the result vector.  <a href="#a890ed2f6c982169c737bd4f68b2a5db7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a> () const </td></tr>
-</table>
-<h3>template<typename LHS, typename RHS, typename OP><br/>
- class viennacl::matrix_expression< LHS, RHS, OP ></h3>
-
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a466edf19960e38ab2eecab2109956c53"></a><!-- doxytag: member="viennacl::matrix_expression::matrix_expression" ref="a466edf19960e38ab2eecab2109956c53" args="(LHS &lhs, RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a> </td>
-          <td>(</td>
-          <td class="paramtype">LHS & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">RHS & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Extracts the vector type from the two operands. </p>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="abb680866089de4e937ddc6ce6f1f1830"></a><!-- doxytag: member="viennacl::matrix_expression::lhs" ref="abb680866089de4e937ddc6ce6f1f1830" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">LHS& lhs </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Get left hand side operand. </p>
-
-</div>
-</div>
-<a class="anchor" id="a563f5aecaa0755006225235e44a11a82"></a><!-- doxytag: member="viennacl::matrix_expression::rhs" ref="a563f5aecaa0755006225235e44a11a82" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">RHS& rhs </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Get right hand side operand. </p>
-
-</div>
-</div>
-<a class="anchor" id="a890ed2f6c982169c737bd4f68b2a5db7"></a><!-- doxytag: member="viennacl::matrix_expression::size1" ref="a890ed2f6c982169c737bd4f68b2a5db7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int size1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the size of the result vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="aacffdea3e049b0080b6fa4ac4c2fd881"></a><!-- doxytag: member="viennacl::matrix_expression::size2" ref="aacffdea3e049b0080b6fa4ac4c2fd881" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int size2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1matrix__iterator.html b/doc/doxygen/html/classviennacl_1_1matrix__iterator.html
deleted file mode 100644
index 75c84a3..0000000
--- a/doc/doxygen/html/classviennacl_1_1matrix__iterator.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_iterator< ROWCOL, MATRIXTYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator< ROWCOL, MATRIXTYPE ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_iterator< ROWCOL, MATRIXTYPE > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::matrix_iterator" -->
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef MATRIXTYPE::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">value_type</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#af0a6ccd186d6da5fae3227b45fbfcf5a">matrix_iterator</a> (MATRIXTYPE &mat, unsigned int start_row, unsigned int start_col)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">value_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a94001b4941ee37e508c3442528389b16">operator*</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#aa5055e4100b53acad1be8697088ff1dc">operator++</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a4419c6af964a7de542db8474f8ef1091">operator++</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#ad25b9ad360f06fda1535074b749cf023">operator==</a> (<a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a> const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a111e186f57ea74111730a997ba77ea17">operator!=</a> (<a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a> const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a4c13e5b96cb010e538968b7c330dbfbd">index1</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a3b437ced850483c2d50f888a33463c95">index2</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">MATRIXTYPE & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a472f3f82844b2d229acbd12e34d6764b">operator()</a> (void) const </td></tr>
-</table>
-<h3>template<typename ROWCOL, typename MATRIXTYPE><br/>
- class viennacl::matrix_iterator< ROWCOL, MATRIXTYPE ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a4d1008b55c3e6de3a019d5514c4393d8"></a><!-- doxytag: member="viennacl::matrix_iterator::value_type" ref="a4d1008b55c3e6de3a019d5514c4393d8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef MATRIXTYPE::value_type <a class="el" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">value_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="af0a6ccd186d6da5fae3227b45fbfcf5a"></a><!-- doxytag: member="viennacl::matrix_iterator::matrix_iterator" ref="af0a6ccd186d6da5fae3227b45fbfcf5a" args="(MATRIXTYPE &mat, unsigned int start_row, unsigned int start_col)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a> </td>
-          <td>(</td>
-          <td class="paramtype">MATRIXTYPE & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>start_row</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>start_col</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a4c13e5b96cb010e538968b7c330dbfbd"></a><!-- doxytag: member="viennacl::matrix_iterator::index1" ref="a4c13e5b96cb010e538968b7c330dbfbd" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int index1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a3b437ced850483c2d50f888a33463c95"></a><!-- doxytag: member="viennacl::matrix_iterator::index2" ref="a3b437ced850483c2d50f888a33463c95" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int index2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a111e186f57ea74111730a997ba77ea17"></a><!-- doxytag: member="viennacl::matrix_iterator::operator!=" ref="a111e186f57ea74111730a997ba77ea17" args="(self_type const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool operator!= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a472f3f82844b2d229acbd12e34d6764b"></a><!-- doxytag: member="viennacl::matrix_iterator::operator()" ref="a472f3f82844b2d229acbd12e34d6764b" args="(void) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">MATRIXTYPE& operator() </td>
-          <td>(</td>
-          <td class="paramtype">void </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a94001b4941ee37e508c3442528389b16"></a><!-- doxytag: member="viennacl::matrix_iterator::operator*" ref="a94001b4941ee37e508c3442528389b16" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">value_type</a> operator* </td>
-          <td>(</td>
-          <td class="paramtype">void </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa5055e4100b53acad1be8697088ff1dc"></a><!-- doxytag: member="viennacl::matrix_iterator::operator++" ref="aa5055e4100b53acad1be8697088ff1dc" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a>& operator++ </td>
-          <td>(</td>
-          <td class="paramtype">void </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4419c6af964a7de542db8474f8ef1091"></a><!-- doxytag: member="viennacl::matrix_iterator::operator++" ref="a4419c6af964a7de542db8474f8ef1091" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a>& operator++ </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad25b9ad360f06fda1535074b749cf023"></a><!-- doxytag: member="viennacl::matrix_iterator::operator==" ref="ad25b9ad360f06fda1535074b749cf023" args="(self_type const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool operator== </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1backend.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1backend.html
deleted file mode 100644
index 37880c5..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1backend.html
+++ /dev/null
@@ -1,309 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: backend< dummy > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1backend.html">backend< dummy ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>backend< dummy > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::backend" -->
-<p>A backend that provides contexts for ViennaCL objects (vector, matrix, etc.).  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="backend_8hpp_source.html">backend.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#ab476349b4b424527038f7484c1f0097b">switch_context</a> (long i)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Switches the current context to the context identified by i.  <a href="#ab476349b4b424527038f7484c1f0097b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#a672f8aadf6dc07b765887b69d4ebbf7d">current_context</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the current active context.  <a href="#a672f8aadf6dc07b765887b69d4ebbf7d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#a825af6f15ffeb9448de160661e5bb377">get_queue</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the current queue for the active device in the active context.  <a href="#a825af6f15ffeb9448de160661e5bb377"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734">setup_context</a> (long i, std::vector< cl_device_id > const &devices)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a number of devices for the context.  <a href="#aee6bc733f6369cd7147ea8904cc8c734"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#ac0a9ddc7f74148e9f5fe8bc5872e4da7">setup_context</a> (long i, cl_context c, std::vector< cl_device_id > const &devices, std::map< cl_device_id, std::vector< cl_command_queue > > const &queues)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes ViennaCL with an already existing context.  <a href="#ac0a9ddc7f74148e9f5fe8bc5872e4da7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#a2d0605c63ed50df91d198700387e1372">setup_context</a> (long i, cl_context c, std::vector< cl_device_id > const &devices, std::vector< cl_command_queue > const &queue)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes ViennaCL with an already existing context.  <a href="#a2d0605c63ed50df91d198700387e1372"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#a4c8905ac7d2b12cdb0d3582561d78eff">set_context_device_type</a> (long i, cl_device_type t)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context device type.  <a href="#a4c8905ac7d2b12cdb0d3582561d78eff"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<bool dummy = false><br/>
- class viennacl::ocl::backend< dummy ></h3>
-
-<p>A backend that provides contexts for ViennaCL objects (vector, matrix, etc.). </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a672f8aadf6dc07b765887b69d4ebbf7d"></a><!-- doxytag: member="viennacl::ocl::backend::current_context" ref="a672f8aadf6dc07b765887b69d4ebbf7d" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static <a class="el" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a>& current_context </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the current active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a825af6f15ffeb9448de160661e5bb377"></a><!-- doxytag: member="viennacl::ocl::backend::get_queue" ref="a825af6f15ffeb9448de160661e5bb377" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a>& get_queue </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the current queue for the active device in the active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4c8905ac7d2b12cdb0d3582561d78eff"></a><!-- doxytag: member="viennacl::ocl::backend::set_context_device_type" ref="a4c8905ac7d2b12cdb0d3582561d78eff" args="(long i, cl_device_type t)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void set_context_device_type </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_device_type </td>
-          <td class="paramname"> <em>t</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the context device type. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac0a9ddc7f74148e9f5fe8bc5872e4da7"></a><!-- doxytag: member="viennacl::ocl::backend::setup_context" ref="ac0a9ddc7f74148e9f5fe8bc5872e4da7" args="(long i, cl_context c, std::vector< cl_device_id > const &devices, std::map< cl_device_id, std::vector< cl_command_queue > > const &queues)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void setup_context </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_context </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::vector< cl_device_id > const & </td>
-          <td class="paramname"> <em>devices</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::map< cl_device_id, std::vector< cl_command_queue > > const & </td>
-          <td class="paramname"> <em>queues</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Initializes ViennaCL with an already existing context. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>ID of the context to be set up </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>The OpenCL handle of the existing context </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>devices</em> </td><td>A vector of OpenCL device-IDs that should be added to the context </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>queues</em> </td><td>A map of queues for each device </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aee6bc733f6369cd7147ea8904cc8c734"></a><!-- doxytag: member="viennacl::ocl::backend::setup_context" ref="aee6bc733f6369cd7147ea8904cc8c734" args="(long i, std::vector< cl_device_id > const &devices)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void setup_context </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::vector< cl_device_id > const & </td>
-          <td class="paramname"> <em>devices</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets a number of devices for the context. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>ID of the context to be set up </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>devices</em> </td><td>A vector of OpenCL device-IDs that should be added to the context </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2d0605c63ed50df91d198700387e1372"></a><!-- doxytag: member="viennacl::ocl::backend::setup_context" ref="a2d0605c63ed50df91d198700387e1372" args="(long i, cl_context c, std::vector< cl_device_id > const &devices, std::vector< cl_command_queue > const &queue)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void setup_context </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_context </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::vector< cl_device_id > const & </td>
-          <td class="paramname"> <em>devices</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::vector< cl_command_queue > const & </td>
-          <td class="paramname"> <em>queue</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Initializes ViennaCL with an already existing context. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>ID of the context to be set up </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>The OpenCL handle of the existing context </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>devices</em> </td><td>A vector of OpenCL device-IDs that should be added to the context </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>queue</em> </td><td>One queue per device </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab476349b4b424527038f7484c1f0097b"></a><!-- doxytag: member="viennacl::ocl::backend::switch_context" ref="ab476349b4b424527038f7484c1f0097b" args="(long i)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void switch_context </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Switches the current context to the context identified by i. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>ID of the new active context </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="backend_8hpp_source.html">backend.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1build__program__failure.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1build__program__failure.html
deleted file mode 100644
index 9559b84..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1build__program__failure.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: build_program_failure Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>build_program_failure Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::build_program_failure" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1command__queue.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1command__queue.html
deleted file mode 100644
index 5788eeb..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1command__queue.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: command_queue Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>command_queue Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::command_queue" -->
-<p>A class representing a command queue.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="command__queue_8hpp_source.html">command_queue.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#aba31105fa2a4846b873a623250654765">command_queue</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#ab6b585ec6f27ddcefe7fee6ffcb226d3">command_queue</a> (<a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_command_queue > h, cl_device_id dev)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a8d0b958ef5c2d71eceeccafc994ef5d6">command_queue</a> (<a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a0cbf9009ed0ae2f832646cc41a843a72">operator=</a> (<a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b">finish</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Waits until all kernels in the queue have finished their execution.  <a href="#adc3c5cffb594b811f8a851924349af5b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#ab7e40dfa63aeb29fa6078d04795dffed">flush</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Waits until all kernels in the queue have started their execution.  <a href="#ab7e40dfa63aeb29fa6078d04795dffed"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_command_queue > const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a> () const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A class representing a command queue. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="aba31105fa2a4846b873a623250654765"></a><!-- doxytag: member="viennacl::ocl::command_queue::command_queue" ref="aba31105fa2a4846b873a623250654765" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab6b585ec6f27ddcefe7fee6ffcb226d3"></a><!-- doxytag: member="viennacl::ocl::command_queue::command_queue" ref="ab6b585ec6f27ddcefe7fee6ffcb226d3" args="(viennacl::ocl::handle< cl_command_queue > h, cl_device_id dev)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_command_queue > </td>
-          <td class="paramname"> <em>h</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_device_id </td>
-          <td class="paramname"> <em>dev</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8d0b958ef5c2d71eceeccafc994ef5d6"></a><!-- doxytag: member="viennacl::ocl::command_queue::command_queue" ref="a8d0b958ef5c2d71eceeccafc994ef5d6" args="(command_queue const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="adc3c5cffb594b811f8a851924349af5b"></a><!-- doxytag: member="viennacl::ocl::command_queue::finish" ref="adc3c5cffb594b811f8a851924349af5b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void finish </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Waits until all kernels in the queue have finished their execution. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab7e40dfa63aeb29fa6078d04795dffed"></a><!-- doxytag: member="viennacl::ocl::command_queue::flush" ref="ab7e40dfa63aeb29fa6078d04795dffed" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void flush </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Waits until all kernels in the queue have started their execution. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8c301f0516a039dbac9b263be6e70815"></a><!-- doxytag: member="viennacl::ocl::command_queue::handle" ref="a8c301f0516a039dbac9b263be6e70815" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_command_queue> const& <a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0cbf9009ed0ae2f832646cc41a843a72"></a><!-- doxytag: member="viennacl::ocl::command_queue::operator=" ref="a0cbf9009ed0ae2f832646cc41a843a72" args="(command_queue const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a>& operator= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="command__queue_8hpp_source.html">command_queue.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1compiler__not__available.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1compiler__not__available.html
deleted file mode 100644
index 615f140..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1compiler__not__available.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compiler_not_available Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>compiler_not_available Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::compiler_not_available" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1context.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1context.html
deleted file mode 100644
index 3ed8d94..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1context.html
+++ /dev/null
@@ -1,694 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: context Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>context Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::context" -->
-<p><code>#include <<a class="el" href="context_8hpp_source.html">context.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a23a1f7bd41068b622c4015f5654ee3f3">context</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_device_type </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a721482c91a5042d1457b76addf95ff19">default_device_type</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the default device type for the context.  <a href="#a721482c91a5042d1457b76addf95ff19"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#aa52e297b2bed0c1bda1d7ca8ecdd0620">default_device_type</a> (cl_device_type dtype)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the device type for this context.  <a href="#aa52e297b2bed0c1bda1d7ca8ecdd0620"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::vector<br class="typebreak"/>
-< <a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> ><br class="typebreak"/>
- const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#acd464974135d4def89834832207da4b9">devices</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a vector with all devices in this context.  <a href="#acd464974135d4def89834832207da4b9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#ad1be9bca91f95427bc2875827baadab4">current_device</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the current device.  <a href="#ad1be9bca91f95427bc2875827baadab4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a9f74ed0d416018dc2825ddc6f4d8101e">switch_device</a> (size_t i)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Switches the current device to the i-th device in this context.  <a href="#a9f74ed0d416018dc2825ddc6f4d8101e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a3d316253d55eade417eee44bb38b127c">switch_device</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const &d)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the supplied device is used within the context, it becomes the current active device.  <a href="#a3d316253d55eade417eee44bb38b127c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5">add_device</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const &d)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Add a device to the context. Must be done before the context is initialized.  <a href="#acfd4efd12222f075766bda8ad1557cf5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a9d802c8ffe94de98a9c049dbf4a3561d">add_device</a> (cl_device_id d)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Add a device to the context. Must be done before the context is initialized.  <a href="#a9d802c8ffe94de98a9c049dbf4a3561d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a02fd73d861ef2e4aabb38c0c9ff82947">init</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes a new context.  <a href="#a02fd73d861ef2e4aabb38c0c9ff82947"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a22330fee3e871b4f8467c8952a94597c">init</a> (cl_context c)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes the context from an existing, user-supplied context.  <a href="#a22330fee3e871b4f8467c8952a94597c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5">create_memory</a> (cl_mem_flags flags, unsigned int size, void *ptr=NULL)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a memory buffer within the context.  <a href="#a22299eef7ac0c36ba322a2bb25e953c5"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename A , template< typename, typename > class VectorType> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a1e038c8113ae2ce29ce49264573aaad3">create_memory</a> (cl_mem_flags flags, const VectorType< SCALARTYPE, A > &_buffer)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a memory buffer within the context initialized from the supplied data.  <a href="#a1e038c8113ae2ce29ce49264573aaad3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a52bf0f755d6ac169258502c22b179d3f">add_queue</a> (cl_device_id dev, cl_command_queue q)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds an existing queue for the given device to the context.  <a href="#a52bf0f755d6ac169258502c22b179d3f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a3998738469ebf1f8168b246e2c1cd175">add_queue</a> (cl_device_id dev)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a queue for the given device to the context.  <a href="#a3998738469ebf1f8168b246e2c1cd175"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#ac171d50dc65c9edb5f30327d6549bd08">add_queue</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> d)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a queue for the given device to the context.  <a href="#ac171d50dc65c9edb5f30327d6549bd08"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a52653c861c4b28157632901b3b401a93">get_queue</a> (cl_device_id dev, size_t i=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the queue with the provided index for the given device.  <a href="#a52653c861c4b28157632901b3b401a93"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb">add_program</a> (cl_program p, std::string const &prog_name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a program to the context.  <a href="#a87c0fbb40f4ee1928c72dbf8d19512bb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a79fd3f2c5fd14ff3cf130504949538dc">add_program</a> (std::string const &source, std::string const &prog_name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a new program with the provided source to the context.  <a href="#a79fd3f2c5fd14ff3cf130504949538dc"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a">get_program</a> (std::string const &name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the program with the provided name.  <a href="#a9258b6b0121e6f1bebe7b83b9e2a625a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a69eae83a60cdc4b1365dca0e7bd93a44">get_program</a> (size_t id)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the program with the provided id.  <a href="#a69eae83a60cdc4b1365dca0e7bd93a44"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a05252a29e4e6aa036db1e8b784ed28ec">program_num</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of programs within this context.  <a href="#a05252a29e4e6aa036db1e8b784ed28ec"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a2921a13758255386f686ba24ebc86140">device_num</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of devices within this context.  <a href="#a2921a13758255386f686ba24ebc86140"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_context > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the context handle.  <a href="#a04a2acfc068529af42d1772382a20b90"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#ae03a1e8a810ded73e6a457729f02a6fe">operator<</a> (<a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a> const &other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Less-than comparable for compatibility with std:map.  <a href="#ae03a1e8a810ded73e6a457729f02a6fe"></a><br/></td></tr>
-</table>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a23a1f7bd41068b622c4015f5654ee3f3"></a><!-- doxytag: member="viennacl::ocl::context::context" ref="a23a1f7bd41068b622c4015f5654ee3f3" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="acfd4efd12222f075766bda8ad1557cf5"></a><!-- doxytag: member="viennacl::ocl::context::add_device" ref="acfd4efd12222f075766bda8ad1557cf5" args="(viennacl::ocl::device const &d)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void add_device </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & </td>
-          <td class="paramname"> <em>d</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Add a device to the context. Must be done before the context is initialized. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9d802c8ffe94de98a9c049dbf4a3561d"></a><!-- doxytag: member="viennacl::ocl::context::add_device" ref="a9d802c8ffe94de98a9c049dbf4a3561d" args="(cl_device_id d)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void add_device </td>
-          <td>(</td>
-          <td class="paramtype">cl_device_id </td>
-          <td class="paramname"> <em>d</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Add a device to the context. Must be done before the context is initialized. </p>
-
-</div>
-</div>
-<a class="anchor" id="a87c0fbb40f4ee1928c72dbf8d19512bb"></a><!-- doxytag: member="viennacl::ocl::context::add_program" ref="a87c0fbb40f4ee1928c72dbf8d19512bb" args="(cl_program p, std::string const &prog_name)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>& add_program </td>
-          <td>(</td>
-          <td class="paramtype">cl_program </td>
-          <td class="paramname"> <em>p</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::string const & </td>
-          <td class="paramname"> <em>prog_name</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a program to the context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a79fd3f2c5fd14ff3cf130504949538dc"></a><!-- doxytag: member="viennacl::ocl::context::add_program" ref="a79fd3f2c5fd14ff3cf130504949538dc" args="(std::string const &source, std::string const &prog_name)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>& add_program </td>
-          <td>(</td>
-          <td class="paramtype">std::string const & </td>
-          <td class="paramname"> <em>source</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::string const & </td>
-          <td class="paramname"> <em>prog_name</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a new program with the provided source to the context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a52bf0f755d6ac169258502c22b179d3f"></a><!-- doxytag: member="viennacl::ocl::context::add_queue" ref="a52bf0f755d6ac169258502c22b179d3f" args="(cl_device_id dev, cl_command_queue q)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void add_queue </td>
-          <td>(</td>
-          <td class="paramtype">cl_device_id </td>
-          <td class="paramname"> <em>dev</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_command_queue </td>
-          <td class="paramname"> <em>q</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds an existing queue for the given device to the context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3998738469ebf1f8168b246e2c1cd175"></a><!-- doxytag: member="viennacl::ocl::context::add_queue" ref="a3998738469ebf1f8168b246e2c1cd175" args="(cl_device_id dev)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void add_queue </td>
-          <td>(</td>
-          <td class="paramtype">cl_device_id </td>
-          <td class="paramname"> <em>dev</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a queue for the given device to the context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac171d50dc65c9edb5f30327d6549bd08"></a><!-- doxytag: member="viennacl::ocl::context::add_queue" ref="ac171d50dc65c9edb5f30327d6549bd08" args="(viennacl::ocl::device d)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void add_queue </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> </td>
-          <td class="paramname"> <em>d</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a queue for the given device to the context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a22299eef7ac0c36ba322a2bb25e953c5"></a><!-- doxytag: member="viennacl::ocl::context::create_memory" ref="a22299eef7ac0c36ba322a2bb25e953c5" args="(cl_mem_flags flags, unsigned int size, void *ptr=NULL)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem> create_memory </td>
-          <td>(</td>
-          <td class="paramtype">cl_mem_flags </td>
-          <td class="paramname"> <em>flags</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>size</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void * </td>
-          <td class="paramname"> <em>ptr</em> = <code>NULL</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Creates a memory buffer within the context. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>OpenCL flags for the buffer creation </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>Size of the memory buffer in bytes </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>ptr</em> </td><td>Optional pointer to CPU memory, with which the OpenCL memory should be initialized </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1e038c8113ae2ce29ce49264573aaad3"></a><!-- doxytag: member="viennacl::ocl::context::create_memory" ref="a1e038c8113ae2ce29ce49264573aaad3" args="(cl_mem_flags flags, const VectorType< SCALARTYPE, A > &_buffer)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem> create_memory </td>
-          <td>(</td>
-          <td class="paramtype">cl_mem_flags </td>
-          <td class="paramname"> <em>flags</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const VectorType< SCALARTYPE, A > & </td>
-          <td class="paramname"> <em>_buffer</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Creates a memory buffer within the context initialized from the supplied data. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>OpenCL flags for the buffer creation </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>_buffer</em> </td><td>A vector (STL vector, ublas vector, etc.) </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad1be9bca91f95427bc2875827baadab4"></a><!-- doxytag: member="viennacl::ocl::context::current_device" ref="ad1be9bca91f95427bc2875827baadab4" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const& current_device </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the current device. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa52e297b2bed0c1bda1d7ca8ecdd0620"></a><!-- doxytag: member="viennacl::ocl::context::default_device_type" ref="aa52e297b2bed0c1bda1d7ca8ecdd0620" args="(cl_device_type dtype)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void default_device_type </td>
-          <td>(</td>
-          <td class="paramtype">cl_device_type </td>
-          <td class="paramname"> <em>dtype</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the device type for this context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a721482c91a5042d1457b76addf95ff19"></a><!-- doxytag: member="viennacl::ocl::context::default_device_type" ref="a721482c91a5042d1457b76addf95ff19" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">cl_device_type default_device_type </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the default device type for the context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2921a13758255386f686ba24ebc86140"></a><!-- doxytag: member="viennacl::ocl::context::device_num" ref="a2921a13758255386f686ba24ebc86140" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t device_num </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of devices within this context. </p>
-
-</div>
-</div>
-<a class="anchor" id="acd464974135d4def89834832207da4b9"></a><!-- doxytag: member="viennacl::ocl::context::devices" ref="acd464974135d4def89834832207da4b9" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::vector<<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a>> const& devices </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a vector with all devices in this context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9258b6b0121e6f1bebe7b83b9e2a625a"></a><!-- doxytag: member="viennacl::ocl::context::get_program" ref="a9258b6b0121e6f1bebe7b83b9e2a625a" args="(std::string const &name)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>& get_program </td>
-          <td>(</td>
-          <td class="paramtype">std::string const & </td>
-          <td class="paramname"> <em>name</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the program with the provided name. </p>
-
-</div>
-</div>
-<a class="anchor" id="a69eae83a60cdc4b1365dca0e7bd93a44"></a><!-- doxytag: member="viennacl::ocl::context::get_program" ref="a69eae83a60cdc4b1365dca0e7bd93a44" args="(size_t id)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>& get_program </td>
-          <td>(</td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>id</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the program with the provided id. </p>
-
-</div>
-</div>
-<a class="anchor" id="a86cc988061d4ef54550a572141ebbee5"></a><!-- doxytag: member="viennacl::ocl::context::get_queue" ref="a86cc988061d4ef54550a572141ebbee5" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a>& get_queue </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a52653c861c4b28157632901b3b401a93"></a><!-- doxytag: member="viennacl::ocl::context::get_queue" ref="a52653c861c4b28157632901b3b401a93" args="(cl_device_id dev, size_t i=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a>& get_queue </td>
-          <td>(</td>
-          <td class="paramtype">cl_device_id </td>
-          <td class="paramname"> <em>dev</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>i</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the queue with the provided index for the given device. </p>
-
-</div>
-</div>
-<a class="anchor" id="a04a2acfc068529af42d1772382a20b90"></a><!-- doxytag: member="viennacl::ocl::context::handle" ref="a04a2acfc068529af42d1772382a20b90" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_context>& <a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the context handle. </p>
-
-</div>
-</div>
-<a class="anchor" id="a02fd73d861ef2e4aabb38c0c9ff82947"></a><!-- doxytag: member="viennacl::ocl::context::init" ref="a02fd73d861ef2e4aabb38c0c9ff82947" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Initializes a new context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a22330fee3e871b4f8467c8952a94597c"></a><!-- doxytag: member="viennacl::ocl::context::init" ref="a22330fee3e871b4f8467c8952a94597c" args="(cl_context c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void init </td>
-          <td>(</td>
-          <td class="paramtype">cl_context </td>
-          <td class="paramname"> <em>c</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Initializes the context from an existing, user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae03a1e8a810ded73e6a457729f02a6fe"></a><!-- doxytag: member="viennacl::ocl::context::operator<" ref="ae03a1e8a810ded73e6a457729f02a6fe" args="(context const &other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool operator< </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Less-than comparable for compatibility with std:map. </p>
-
-</div>
-</div>
-<a class="anchor" id="a05252a29e4e6aa036db1e8b784ed28ec"></a><!-- doxytag: member="viennacl::ocl::context::program_num" ref="a05252a29e4e6aa036db1e8b784ed28ec" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t program_num </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of programs within this context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3d316253d55eade417eee44bb38b127c"></a><!-- doxytag: member="viennacl::ocl::context::switch_device" ref="a3d316253d55eade417eee44bb38b127c" args="(viennacl::ocl::device const &d)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void switch_device </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & </td>
-          <td class="paramname"> <em>d</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>If the supplied device is used within the context, it becomes the current active device. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9f74ed0d416018dc2825ddc6f4d8101e"></a><!-- doxytag: member="viennacl::ocl::context::switch_device" ref="a9f74ed0d416018dc2825ddc6f4d8101e" args="(size_t i)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void switch_device </td>
-          <td>(</td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>i</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Switches the current device to the i-th device in this context. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="context_8hpp_source.html">context.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1device.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1device.html
deleted file mode 100644
index 6b6e172..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1device.html
+++ /dev/null
@@ -1,461 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: device Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>device Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::device" -->
-<p>A class representing a compute device (e.g. a GPU).  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="device_8hpp_source.html">device.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">device</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a17858dabba4d274000c38bc42de8487c">device</a> (cl_device_id dev)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a58ac501d01e9cb8eac21a831e8f0874c">device</a> (const <a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6">init</a> (cl_device_id dev)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes the class from a given device ID.  <a href="#ae2b7499bf82bcd0c28959118a8cd36b6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#ab61c1a1216e3f4a8537c6b7bd8a36634">double_support</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if the device supports double precision.  <a href="#ab61c1a1216e3f4a8537c6b7bd8a36634"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_device_id </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06">id</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL device id.  <a href="#ad710a9f9e2cff5a4fe874545102c4c06"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07">name</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the device name.  <a href="#a37627d5d5bba7f4a8690c71c2ab3cb07"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a662b75f96a75aad23ec28c7c55b64d88">driver_version</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the driver version.  <a href="#a662b75f96a75aad23ec28c7c55b64d88"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_uint </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#ab2a44bd7f2d691fa15460928af757d99">max_compute_units</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of compute units on the device.  <a href="#ab2a44bd7f2d691fa15460928af757d99"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a8c087fde68553db31903df7efd9c033f">max_workgroup_size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum work group size for the device.  <a href="#a8c087fde68553db31903df7efd9c033f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_ulong </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a3b0090b08cd59decfbc5d27a5865ec88">global_memory</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the global memory for the device.  <a href="#a3b0090b08cd59decfbc5d27a5865ec88"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_ulong </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#ae9bd44c2f4e9167a2b839af9f109712c">local_memory</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the local memory for the device.  <a href="#ae9bd44c2f4e9167a2b839af9f109712c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_ulong </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a8d0a43b183ce09a94af13b4d73250280">max_allocable_memory</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum allocable memory for the device.  <a href="#a8d0a43b183ce09a94af13b4d73250280"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a2e1e4e2742b910c44558f9cf8e4add62">info</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an info string with a few properties of the device.  <a href="#a2e1e4e2742b910c44558f9cf8e4add62"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a49dafae1d5a718f0825eefd245b14683">max_work_group_size</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_uint </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#ae641ec7369f4552b2d0bfcdd62ce9204">compute_units</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_device_type </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a30cb8b6361720dfb6c7ce63d1c347e41">type</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a42bb548ced469dc5714f1816603a4d35">operator==</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a06e1d466be32d6b0072a8a8e23b339f9">operator==</a> (cl_device_id other) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A class representing a compute device (e.g. a GPU). </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="aa6214b6ab6f2d943669af7dd76cef3a2"></a><!-- doxytag: member="viennacl::ocl::device::device" ref="aa6214b6ab6f2d943669af7dd76cef3a2" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, explicit]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a17858dabba4d274000c38bc42de8487c"></a><!-- doxytag: member="viennacl::ocl::device::device" ref="a17858dabba4d274000c38bc42de8487c" args="(cl_device_id dev)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> </td>
-          <td>(</td>
-          <td class="paramtype">cl_device_id </td>
-          <td class="paramname"> <em>dev</em></td>
-          <td> ) </td>
-          <td><code> [inline, explicit]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a58ac501d01e9cb8eac21a831e8f0874c"></a><!-- doxytag: member="viennacl::ocl::device::device" ref="a58ac501d01e9cb8eac21a831e8f0874c" args="(const device &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae641ec7369f4552b2d0bfcdd62ce9204"></a><!-- doxytag: member="viennacl::ocl::device::compute_units" ref="ae641ec7369f4552b2d0bfcdd62ce9204" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">cl_uint compute_units </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab61c1a1216e3f4a8537c6b7bd8a36634"></a><!-- doxytag: member="viennacl::ocl::device::double_support" ref="ab61c1a1216e3f4a8537c6b7bd8a36634" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool double_support </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns true if the device supports double precision. </p>
-
-</div>
-</div>
-<a class="anchor" id="a36eb84a793487af78b6a620b418efb6a"></a><!-- doxytag: member="viennacl::ocl::device::double_support_extension" ref="a36eb84a793487af78b6a620b418efb6a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string double_support_extension </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a662b75f96a75aad23ec28c7c55b64d88"></a><!-- doxytag: member="viennacl::ocl::device::driver_version" ref="a662b75f96a75aad23ec28c7c55b64d88" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string driver_version </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the driver version. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3b0090b08cd59decfbc5d27a5865ec88"></a><!-- doxytag: member="viennacl::ocl::device::global_memory" ref="a3b0090b08cd59decfbc5d27a5865ec88" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">cl_ulong global_memory </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the global memory for the device. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad710a9f9e2cff5a4fe874545102c4c06"></a><!-- doxytag: member="viennacl::ocl::device::id" ref="ad710a9f9e2cff5a4fe874545102c4c06" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">cl_device_id id </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL device id. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2e1e4e2742b910c44558f9cf8e4add62"></a><!-- doxytag: member="viennacl::ocl::device::info" ref="a2e1e4e2742b910c44558f9cf8e4add62" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string info </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns an info string with a few properties of the device. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae2b7499bf82bcd0c28959118a8cd36b6"></a><!-- doxytag: member="viennacl::ocl::device::init" ref="ae2b7499bf82bcd0c28959118a8cd36b6" args="(cl_device_id dev)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void init </td>
-          <td>(</td>
-          <td class="paramtype">cl_device_id </td>
-          <td class="paramname"> <em>dev</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Initializes the class from a given device ID. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae9bd44c2f4e9167a2b839af9f109712c"></a><!-- doxytag: member="viennacl::ocl::device::local_memory" ref="ae9bd44c2f4e9167a2b839af9f109712c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">cl_ulong local_memory </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the local memory for the device. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8d0a43b183ce09a94af13b4d73250280"></a><!-- doxytag: member="viennacl::ocl::device::max_allocable_memory" ref="a8d0a43b183ce09a94af13b4d73250280" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">cl_ulong max_allocable_memory </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum allocable memory for the device. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab2a44bd7f2d691fa15460928af757d99"></a><!-- doxytag: member="viennacl::ocl::device::max_compute_units" ref="ab2a44bd7f2d691fa15460928af757d99" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">cl_uint max_compute_units </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of compute units on the device. </p>
-
-</div>
-</div>
-<a class="anchor" id="a49dafae1d5a718f0825eefd245b14683"></a><!-- doxytag: member="viennacl::ocl::device::max_work_group_size" ref="a49dafae1d5a718f0825eefd245b14683" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t max_work_group_size </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8c087fde68553db31903df7efd9c033f"></a><!-- doxytag: member="viennacl::ocl::device::max_workgroup_size" ref="a8c087fde68553db31903df7efd9c033f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t max_workgroup_size </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum work group size for the device. </p>
-
-</div>
-</div>
-<a class="anchor" id="a37627d5d5bba7f4a8690c71c2ab3cb07"></a><!-- doxytag: member="viennacl::ocl::device::name" ref="a37627d5d5bba7f4a8690c71c2ab3cb07" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the device name. </p>
-
-</div>
-</div>
-<a class="anchor" id="a06e1d466be32d6b0072a8a8e23b339f9"></a><!-- doxytag: member="viennacl::ocl::device::operator==" ref="a06e1d466be32d6b0072a8a8e23b339f9" args="(cl_device_id other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool operator== </td>
-          <td>(</td>
-          <td class="paramtype">cl_device_id </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a42bb548ced469dc5714f1816603a4d35"></a><!-- doxytag: member="viennacl::ocl::device::operator==" ref="a42bb548ced469dc5714f1816603a4d35" args="(device const &other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool operator== </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a30cb8b6361720dfb6c7ce63d1c347e41"></a><!-- doxytag: member="viennacl::ocl::device::type" ref="a30cb8b6361720dfb6c7ce63d1c347e41" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">cl_device_type type </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="device_8hpp_source.html">device.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1device__not__available.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1device__not__available.html
deleted file mode 100644
index 682a8ed..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1device__not__available.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: device_not_available Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>device_not_available Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::device_not_available" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1device__not__found.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1device__not__found.html
deleted file mode 100644
index 0cba7bf..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1device__not__found.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: device_not_found Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>device_not_found Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::device_not_found" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1double__precision__not__provided__error.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1double__precision__not__provided__error.html
deleted file mode 100644
index bb29ca6..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1double__precision__not__provided__error.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: double_precision_not_provided_error Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>double_precision_not_provided_error Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::double_precision_not_provided_error" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1handle.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1handle.html
deleted file mode 100644
index 6c21cb8..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1handle.html
+++ /dev/null
@@ -1,260 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle< OCL_TYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle< OCL_TYPE ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>handle< OCL_TYPE > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle" -->
-<p>Handle class the effectively represents a smart pointer for OpenCL handles.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#af4d4001df29df561a0c46de3a8b87566">handle</a> (const OCL_TYPE &_something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#a0221469d9ed43a30b1663b0cd63ffc9d">handle</a> (const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> &h)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#acf40b88db4c738c2b2a7f791cf978414">~handle</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#ac8c16c2f06f9b8407963c8d5b627cd44">operator=</a> (const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> &h)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#afe71aac8199101eb7e5f83a8a08e196b">operator=</a> (const OCL_TYPE &_something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#a0617dee4fea8b9ca2a668b73b6814a52">operator OCL_TYPE</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#aca2a2fe50e9519f31c07e34d56a2a5eb">swap</a> (<a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the OpenCL handle of two handle objects.  <a href="#aca2a2fe50e9519f31c07e34d56a2a5eb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd">inc</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Manually increment the OpenCL reference count. Typically called automatically, but is necessary if user-supplied memory objects are wrapped.  <a href="#a40b09187c94d100512d5e49b1d2fd9bd"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a">dec</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Manually decrement the OpenCL reference count. Typically called automatically, but might be useful with user-supplied memory objects.  <a href="#a15ca0b744f48a3d5e7cf7151f81b587a"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class OCL_TYPE><br/>
- class viennacl::ocl::handle< OCL_TYPE ></h3>
-
-<p>Handle class the effectively represents a smart pointer for OpenCL handles. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a66eb7514ea7f7f8a5738a180b14e9b48"></a><!-- doxytag: member="viennacl::ocl::handle::handle" ref="a66eb7514ea7f7f8a5738a180b14e9b48" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af4d4001df29df561a0c46de3a8b87566"></a><!-- doxytag: member="viennacl::ocl::handle::handle" ref="af4d4001df29df561a0c46de3a8b87566" args="(const OCL_TYPE &_something)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> </td>
-          <td>(</td>
-          <td class="paramtype">const OCL_TYPE & </td>
-          <td class="paramname"> <em>_something</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0221469d9ed43a30b1663b0cd63ffc9d"></a><!-- doxytag: member="viennacl::ocl::handle::handle" ref="a0221469d9ed43a30b1663b0cd63ffc9d" args="(const handle &h)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a>< OCL_TYPE > & </td>
-          <td class="paramname"> <em>h</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="acf40b88db4c738c2b2a7f791cf978414"></a><!-- doxytag: member="viennacl::ocl::handle::~handle" ref="acf40b88db4c738c2b2a7f791cf978414" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">~<a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a15ca0b744f48a3d5e7cf7151f81b587a"></a><!-- doxytag: member="viennacl::ocl::handle::dec" ref="a15ca0b744f48a3d5e7cf7151f81b587a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void dec </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Manually decrement the OpenCL reference count. Typically called automatically, but might be useful with user-supplied memory objects. </p>
-
-</div>
-</div>
-<a class="anchor" id="a40b09187c94d100512d5e49b1d2fd9bd"></a><!-- doxytag: member="viennacl::ocl::handle::inc" ref="a40b09187c94d100512d5e49b1d2fd9bd" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void inc </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Manually increment the OpenCL reference count. Typically called automatically, but is necessary if user-supplied memory objects are wrapped. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0617dee4fea8b9ca2a668b73b6814a52"></a><!-- doxytag: member="viennacl::ocl::handle::operator OCL_TYPE" ref="a0617dee4fea8b9ca2a668b73b6814a52" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">operator OCL_TYPE </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afe71aac8199101eb7e5f83a8a08e196b"></a><!-- doxytag: member="viennacl::ocl::handle::operator=" ref="afe71aac8199101eb7e5f83a8a08e196b" args="(const OCL_TYPE &_something)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const OCL_TYPE & </td>
-          <td class="paramname"> <em>_something</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac8c16c2f06f9b8407963c8d5b627cd44"></a><!-- doxytag: member="viennacl::ocl::handle::operator=" ref="ac8c16c2f06f9b8407963c8d5b627cd44" args="(const handle &h)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a>< OCL_TYPE > & </td>
-          <td class="paramname"> <em>h</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aca2a2fe50e9519f31c07e34d56a2a5eb"></a><!-- doxytag: member="viennacl::ocl::handle::swap" ref="aca2a2fe50e9519f31c07e34d56a2a5eb" args="(handle &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a>& swap </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a>< OCL_TYPE > & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Swaps the OpenCL handle of two handle objects. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1handle__inc__dec__helper.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1handle__inc__dec__helper.html
deleted file mode 100644
index 6ed9046..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1handle__inc__dec__helper.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle_inc_dec_helper< OCL_TYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">handle_inc_dec_helper< OCL_TYPE ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>handle_inc_dec_helper< OCL_TYPE > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle_inc_dec_helper" -->
-<p>Helper for OpenCL reference counting used by class handle.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class OCL_TYPE><br/>
- class viennacl::ocl::handle_inc_dec_helper< OCL_TYPE ></h3>
-
-<p>Helper for OpenCL reference counting used by class handle. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>OCL_TYPE</em> </td><td>Must be one out of cl_mem, cl_program, cl_kernel, cl_command_queue and cl_context, otherwise a compile time error is thrown. </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1image__format__mismatch.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1image__format__mismatch.html
deleted file mode 100644
index 22f4152..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1image__format__mismatch.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: image_format_mismatch Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>image_format_mismatch Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::image_format_mismatch" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1image__format__not__supported.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1image__format__not__supported.html
deleted file mode 100644
index ad23fb1..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1image__format__not__supported.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: image_format_not_supported Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>image_format_not_supported Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::image_format_not_supported" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__index.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__index.html
deleted file mode 100644
index 9c0b8ef..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__index.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_arg_index Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_arg_index Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_arg_index" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__size.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__size.html
deleted file mode 100644
index fb35f6b..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__size.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_arg_size Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_arg_size Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_arg_size" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__value.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__value.html
deleted file mode 100644
index 30cbed0..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__value.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_arg_value Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_arg_value Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_arg_value" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__binary.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__binary.html
deleted file mode 100644
index 2b12505..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__binary.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_binary Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_binary Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_binary" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__buffer__size.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__buffer__size.html
deleted file mode 100644
index e4d9147..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__buffer__size.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_buffer_size Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_buffer_size Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_buffer_size" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__build__options.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__build__options.html
deleted file mode 100644
index 49f2704..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__build__options.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_build_options Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_build_options Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_build_options" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__command__queue.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__command__queue.html
deleted file mode 100644
index facdd78..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__command__queue.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_command_queue Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_command_queue Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_command_queue" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__context.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__context.html
deleted file mode 100644
index d0382ef..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__context.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_context Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_context Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_context" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__device.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__device.html
deleted file mode 100644
index 71b6a79..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__device.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_device Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_device Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_device" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__device__type.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__device__type.html
deleted file mode 100644
index a6b68d7..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__device__type.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_device_type Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_device_type Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_device_type" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__event.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__event.html
deleted file mode 100644
index 339c599..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__event.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_event Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_event Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_event" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__event__wait__list.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__event__wait__list.html
deleted file mode 100644
index eb1d2dd..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__event__wait__list.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_event_wait_list Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_event_wait_list Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_event_wait_list" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__gl__object.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__gl__object.html
deleted file mode 100644
index 003cd00..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__gl__object.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_gl_object Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_gl_object Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_gl_object" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__global__offset.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__global__offset.html
deleted file mode 100644
index 3962ea6..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__global__offset.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_global_offset Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_global_offset Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_global_offset" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__global__work__size.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__global__work__size.html
deleted file mode 100644
index 96784de..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__global__work__size.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_global_work_size Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_global_work_size Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_global_work_size" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__host__ptr.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__host__ptr.html
deleted file mode 100644
index a5e2f6b..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__host__ptr.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_host_ptr Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_host_ptr Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_host_ptr" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html
deleted file mode 100644
index 03cc808..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_image_format_descriptor Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_image_format_descriptor Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_image_format_descriptor" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__image__size.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__image__size.html
deleted file mode 100644
index 510f7b3..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__image__size.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_image_size Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_image_size Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_image_size" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel.html
deleted file mode 100644
index a36bc4c..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_kernel Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_kernel Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_kernel" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__args.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__args.html
deleted file mode 100644
index d9f6731..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__args.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_kernel_args Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_kernel_args Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_kernel_args" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__definition.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__definition.html
deleted file mode 100644
index 99f9e06..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__definition.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_kernel_definition Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_kernel_definition Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_kernel_definition" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__name.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__name.html
deleted file mode 100644
index f51866b..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__name.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_kernel_name Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_kernel_name Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_kernel_name" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__mem__object.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__mem__object.html
deleted file mode 100644
index 773b1de..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__mem__object.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_mem_object Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_mem_object Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_mem_object" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__mip__level.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__mip__level.html
deleted file mode 100644
index 15219d1..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__mip__level.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_mip_level Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_mip_level Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_mip_level" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__operation.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__operation.html
deleted file mode 100644
index d9af94c..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__operation.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_operation Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_operation Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_operation" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__platform.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__platform.html
deleted file mode 100644
index b0af047..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__platform.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_platform Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_platform Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_platform" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__program.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__program.html
deleted file mode 100644
index d3822c4..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__program.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_program Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_program Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_program" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__program__executable.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__program__executable.html
deleted file mode 100644
index ef18108..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__program__executable.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_program_executable Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_program_executable Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_program_executable" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__property.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__property.html
deleted file mode 100644
index 11067d6..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__property.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_property Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_property Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_property" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__queue__properties.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__queue__properties.html
deleted file mode 100644
index b9f81c1..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__queue__properties.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_queue_properties Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_queue_properties Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_queue_properties" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__sampler.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__sampler.html
deleted file mode 100644
index 4b0a2a9..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__sampler.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_sampler Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_sampler Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_sampler" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__value.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__value.html
deleted file mode 100644
index c17a9ed..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__value.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_value Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_value Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_value" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__dimension.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__dimension.html
deleted file mode 100644
index 07614f3..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__dimension.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_work_dimension Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_work_dimension Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_work_dimension" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__group__size.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__group__size.html
deleted file mode 100644
index 00246b7..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__group__size.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_work_group_size Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_work_group_size Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_work_group_size" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__item__size.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__item__size.html
deleted file mode 100644
index f61e574..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__item__size.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_work_item_size Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>invalid_work_item_size Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_work_item_size" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1kernel.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1kernel.html
deleted file mode 100644
index 4eefb25..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1kernel.html
+++ /dev/null
@@ -1,1776 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: kernel Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a>  </div>
-  <div class="headertitle">
-<h1>kernel Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::kernel" -->
-<p>Represents an OpenCL kernel within ViennaCL.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="kernel_8hpp_source.html">kernel.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">kernel</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aa94d7fe68805226e64d2b3b787f4a22c">kernel</a> (<a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_program > const &prog, std::string const &name)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a8f86f09c238ce42f8659fb979ff760d4">kernel</a> (<a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a83a54825c25a4ec0cbe40577a24beb6c">operator=</a> (const <a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4">arg</a> (unsigned int pos, cl_uint val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets an unsigned integer argument at the provided position.  <a href="#ae9941fe07b41500ced66b15c3b829ee4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ac351d86fb389dfefbeae8d04db8b0152">arg</a> (unsigned int pos, float val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a single precision floating point argument at the provided position.  <a href="#ac351d86fb389dfefbeae8d04db8b0152"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a1f56b7116c68148a7e86755b24313505">arg</a> (unsigned int pos, double val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a double precision floating point argument at the provided position.  <a href="#a1f56b7116c68148a7e86755b24313505"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class VCL_TYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a90696210593c8b051b5a6b37db5bd1a9">arg</a> (unsigned int pos, VCL_TYPE const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets an OpenCL memory object at the provided position.  <a href="#a90696210593c8b051b5a6b37db5bd1a9"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class CL_TYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a5aeba814c640a29582cb4ae3ee769292">arg</a> (unsigned int pos, <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< CL_TYPE > const &h)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets an OpenCL object at the provided position.  <a href="#a5aeba814c640a29582cb4ae3ee769292"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aa786f8f9956c7e96f51870757e223511">arg</a> (unsigned int pos, const <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a> &mem)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets an OpenCL local memory object at the provided position.  <a href="#aa786f8f9956c7e96f51870757e223511"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e">operator()</a> (T0 const &t0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting one kernel parameter.  <a href="#a113a2629c9614e64ce525143422de15e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ae34b738195a646694d04164a4197ab9a">operator()</a> (T0 const &t0, T1 const &t1)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting two kernel parameter.  <a href="#ae34b738195a646694d04164a4197ab9a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aaa45f3bb4fdbd76ed38194c5519db49c">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting three kernel parameter.  <a href="#aaa45f3bb4fdbd76ed38194c5519db49c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a60905cb2b6bc0d97fbab6f92cac9b018">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting four kernel parameter.  <a href="#a60905cb2b6bc0d97fbab6f92cac9b018"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a17608b63381196929a0b6a2cb5de5422">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting five kernel parameter.  <a href="#a17608b63381196929a0b6a2cb5de5422"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ad58fe9599d149db3ae8aba9237069438">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting six kernel parameter.  <a href="#ad58fe9599d149db3ae8aba9237069438"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a8be19d50cd6d9ed66bf2b89a4166ee67">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting seven kernel parameter.  <a href="#a8be19d50cd6d9ed66bf2b89a4166ee67"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a77fdda461fb386657622e1946b5dce51">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting eight kernel parameter.  <a href="#a77fdda461fb386657622e1946b5dce51"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a7fd3a21c0e6a24ed15cb7450be4282a3">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting nine kernel parameter.  <a href="#a7fd3a21c0e6a24ed15cb7450be4282a3"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a919003007befe589d506987dcd582f1b">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting ten kernel parameter.  <a href="#a919003007befe589d506987dcd582f1b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a9b68e0eccb978b1f7ced31b5da87d261">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting eleven kernel parameter.  <a href="#a9b68e0eccb978b1f7ced31b5da87d261"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#af0e290a2eba1f9bf7c0a6bed69915487">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting twelve kernel parameter.  <a href="#af0e290a2eba1f9bf7c0a6bed69915487"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a61fe96ea3962a5b653b653cd0fb40418">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting thirteen kernel parameter.  <a href="#a61fe96ea3962a5b653b653cd0fb40418"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ace68dfdccfd9c93c87346e160f74739c">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting fourteen kernel parameter.  <a href="#ace68dfdccfd9c93c87346e160f74739c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ac3b17a7168f092a0839a5d2cbb9210e6">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13, T14 const &t14)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting fifteen kernel parameter.  <a href="#ac3b17a7168f092a0839a5d2cbb9210e6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aec21f3c9f68d5d81dacd7ec8a19048ab">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13, T14 const &t14, T15 const &t15)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting sixteen kernel parameter.  <a href="#aec21f3c9f68d5d81dacd7ec8a19048ab"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a37e62106dc02656ef6602ddc6c28feb9">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13, T14 const &t14, T15 const &t15, T16 const &t16)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting seventeen kernel parameter.  <a href="#a37e62106dc02656ef6602ddc6c28feb9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9">local_work_size</a> (int index=0) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the local work size at the respective dimension.  <a href="#a42348d9e5c486ceb3001ddf6dcbe51b9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456">global_work_size</a> (int index=0) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the global work size at the respective dimension.  <a href="#a710fa875ddd200587a615a54e56ac456"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#af38f6ba2df03771a43aacc275b64fc1c">local_work_size</a> (int index, size_t s)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the local work size at the respective dimension.  <a href="#af38f6ba2df03771a43aacc275b64fc1c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#adcacd23410973277cfb37fc98c93ebec">global_work_size</a> (int index, size_t s)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the global work size at the respective dimension.  <a href="#adcacd23410973277cfb37fc98c93ebec"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a836b9d82daf374fab15aac8c87eb1133">name</a> () const </td></tr>
-<tr><td colspan="2"><h2><a name="friends"></a>
-Friends</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KernelType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a46527eb5023de820b1f1c16ec5a11084">enqueue</a> (KernelType &k, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> const &queue)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueues a kernel in the provided queue.  <a href="#a46527eb5023de820b1f1c16ec5a11084"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Represents an OpenCL kernel within ViennaCL. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="aba1fe4cfaebf9576484944be905ea7de"></a><!-- doxytag: member="viennacl::ocl::kernel::kernel" ref="aba1fe4cfaebf9576484944be905ea7de" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa94d7fe68805226e64d2b3b787f4a22c"></a><!-- doxytag: member="viennacl::ocl::kernel::kernel" ref="aa94d7fe68805226e64d2b3b787f4a22c" args="(viennacl::ocl::handle< cl_program > const &prog, std::string const &name)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_program > const & </td>
-          <td class="paramname"> <em>prog</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::string const & </td>
-          <td class="paramname"> <em>name</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8f86f09c238ce42f8659fb979ff760d4"></a><!-- doxytag: member="viennacl::ocl::kernel::kernel" ref="a8f86f09c238ce42f8659fb979ff760d4" args="(kernel const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae9941fe07b41500ced66b15c3b829ee4"></a><!-- doxytag: member="viennacl::ocl::kernel::arg" ref="ae9941fe07b41500ced66b15c3b829ee4" args="(unsigned int pos, cl_uint val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void arg </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>pos</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_uint </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets an unsigned integer argument at the provided position. </p>
-
-</div>
-</div>
-<a class="anchor" id="a1f56b7116c68148a7e86755b24313505"></a><!-- doxytag: member="viennacl::ocl::kernel::arg" ref="a1f56b7116c68148a7e86755b24313505" args="(unsigned int pos, double val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void arg </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>pos</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets a double precision floating point argument at the provided position. </p>
-
-</div>
-</div>
-<a class="anchor" id="a90696210593c8b051b5a6b37db5bd1a9"></a><!-- doxytag: member="viennacl::ocl::kernel::arg" ref="a90696210593c8b051b5a6b37db5bd1a9" args="(unsigned int pos, VCL_TYPE const &val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void arg </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>pos</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VCL_TYPE const & </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets an OpenCL memory object at the provided position. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac351d86fb389dfefbeae8d04db8b0152"></a><!-- doxytag: member="viennacl::ocl::kernel::arg" ref="ac351d86fb389dfefbeae8d04db8b0152" args="(unsigned int pos, float val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void arg </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>pos</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets a single precision floating point argument at the provided position. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5aeba814c640a29582cb4ae3ee769292"></a><!-- doxytag: member="viennacl::ocl::kernel::arg" ref="a5aeba814c640a29582cb4ae3ee769292" args="(unsigned int pos, viennacl::ocl::handle< CL_TYPE > const &h)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void arg </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>pos</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< CL_TYPE > const & </td>
-          <td class="paramname"> <em>h</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets an OpenCL object at the provided position. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa786f8f9956c7e96f51870757e223511"></a><!-- doxytag: member="viennacl::ocl::kernel::arg" ref="aa786f8f9956c7e96f51870757e223511" args="(unsigned int pos, const local_mem &mem)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void arg </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>pos</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a> & </td>
-          <td class="paramname"> <em>mem</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets an OpenCL local memory object at the provided position. </p>
-
-</div>
-</div>
-<a class="anchor" id="a710fa875ddd200587a615a54e56ac456"></a><!-- doxytag: member="viennacl::ocl::kernel::global_work_size" ref="a710fa875ddd200587a615a54e56ac456" args="(int index=0) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t global_work_size </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>index</em> = <code>0</code></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the global work size at the respective dimension. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>Dimension index (currently either 0 or 1) </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="adcacd23410973277cfb37fc98c93ebec"></a><!-- doxytag: member="viennacl::ocl::kernel::global_work_size" ref="adcacd23410973277cfb37fc98c93ebec" args="(int index, size_t s)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void global_work_size </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>index</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>s</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the global work size at the respective dimension. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>Dimension index (currently either 0 or 1) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>The new global work size </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a42348d9e5c486ceb3001ddf6dcbe51b9"></a><!-- doxytag: member="viennacl::ocl::kernel::local_work_size" ref="a42348d9e5c486ceb3001ddf6dcbe51b9" args="(int index=0) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t local_work_size </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>index</em> = <code>0</code></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the local work size at the respective dimension. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>Dimension index (currently either 0 or 1) </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="af38f6ba2df03771a43aacc275b64fc1c"></a><!-- doxytag: member="viennacl::ocl::kernel::local_work_size" ref="af38f6ba2df03771a43aacc275b64fc1c" args="(int index, size_t s)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void local_work_size </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>index</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>s</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the local work size at the respective dimension. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>Dimension index (currently either 0 or 1) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>The new local work size </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a836b9d82daf374fab15aac8c87eb1133"></a><!-- doxytag: member="viennacl::ocl::kernel::name" ref="a836b9d82daf374fab15aac8c87eb1133" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string const& name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af0e290a2eba1f9bf7c0a6bed69915487"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="af0e290a2eba1f9bf7c0a6bed69915487" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T5 const & </td>
-          <td class="paramname"> <em>t5</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T6 const & </td>
-          <td class="paramname"> <em>t6</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T7 const & </td>
-          <td class="paramname"> <em>t7</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T8 const & </td>
-          <td class="paramname"> <em>t8</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T9 const & </td>
-          <td class="paramname"> <em>t9</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T10 const & </td>
-          <td class="paramname"> <em>t10</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T11 const & </td>
-          <td class="paramname"> <em>t11</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting twelve kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9b68e0eccb978b1f7ced31b5da87d261"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a9b68e0eccb978b1f7ced31b5da87d261" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T5 const & </td>
-          <td class="paramname"> <em>t5</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T6 const & </td>
-          <td class="paramname"> <em>t6</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T7 const & </td>
-          <td class="paramname"> <em>t7</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T8 const & </td>
-          <td class="paramname"> <em>t8</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T9 const & </td>
-          <td class="paramname"> <em>t9</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T10 const & </td>
-          <td class="paramname"> <em>t10</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting eleven kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a919003007befe589d506987dcd582f1b"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a919003007befe589d506987dcd582f1b" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T5 const & </td>
-          <td class="paramname"> <em>t5</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T6 const & </td>
-          <td class="paramname"> <em>t6</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T7 const & </td>
-          <td class="paramname"> <em>t7</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T8 const & </td>
-          <td class="paramname"> <em>t8</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T9 const & </td>
-          <td class="paramname"> <em>t9</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting ten kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a61fe96ea3962a5b653b653cd0fb40418"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a61fe96ea3962a5b653b653cd0fb40418" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T5 const & </td>
-          <td class="paramname"> <em>t5</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T6 const & </td>
-          <td class="paramname"> <em>t6</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T7 const & </td>
-          <td class="paramname"> <em>t7</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T8 const & </td>
-          <td class="paramname"> <em>t8</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T9 const & </td>
-          <td class="paramname"> <em>t9</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T10 const & </td>
-          <td class="paramname"> <em>t10</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T11 const & </td>
-          <td class="paramname"> <em>t11</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T12 const & </td>
-          <td class="paramname"> <em>t12</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting thirteen kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a77fdda461fb386657622e1946b5dce51"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a77fdda461fb386657622e1946b5dce51" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T5 const & </td>
-          <td class="paramname"> <em>t5</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T6 const & </td>
-          <td class="paramname"> <em>t6</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T7 const & </td>
-          <td class="paramname"> <em>t7</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting eight kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad58fe9599d149db3ae8aba9237069438"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="ad58fe9599d149db3ae8aba9237069438" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T5 const & </td>
-          <td class="paramname"> <em>t5</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting six kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="aec21f3c9f68d5d81dacd7ec8a19048ab"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="aec21f3c9f68d5d81dacd7ec8a19048ab" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13, T14 const &t14, T15 const &t15)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T5 const & </td>
-          <td class="paramname"> <em>t5</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T6 const & </td>
-          <td class="paramname"> <em>t6</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T7 const & </td>
-          <td class="paramname"> <em>t7</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T8 const & </td>
-          <td class="paramname"> <em>t8</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T9 const & </td>
-          <td class="paramname"> <em>t9</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T10 const & </td>
-          <td class="paramname"> <em>t10</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T11 const & </td>
-          <td class="paramname"> <em>t11</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T12 const & </td>
-          <td class="paramname"> <em>t12</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T13 const & </td>
-          <td class="paramname"> <em>t13</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T14 const & </td>
-          <td class="paramname"> <em>t14</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T15 const & </td>
-          <td class="paramname"> <em>t15</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting sixteen kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a17608b63381196929a0b6a2cb5de5422"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a17608b63381196929a0b6a2cb5de5422" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting five kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a60905cb2b6bc0d97fbab6f92cac9b018"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a60905cb2b6bc0d97fbab6f92cac9b018" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting four kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="aaa45f3bb4fdbd76ed38194c5519db49c"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="aaa45f3bb4fdbd76ed38194c5519db49c" args="(T0 const &t0, T1 const &t1, T2 const &t2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting three kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae34b738195a646694d04164a4197ab9a"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="ae34b738195a646694d04164a4197ab9a" args="(T0 const &t0, T1 const &t1)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting two kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a113a2629c9614e64ce525143422de15e"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a113a2629c9614e64ce525143422de15e" args="(T0 const &t0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting one kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a37e62106dc02656ef6602ddc6c28feb9"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a37e62106dc02656ef6602ddc6c28feb9" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13, T14 const &t14, T15 const &t15, T16 const &t16)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T5 const & </td>
-          <td class="paramname"> <em>t5</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T6 const & </td>
-          <td class="paramname"> <em>t6</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T7 const & </td>
-          <td class="paramname"> <em>t7</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T8 const & </td>
-          <td class="paramname"> <em>t8</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T9 const & </td>
-          <td class="paramname"> <em>t9</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T10 const & </td>
-          <td class="paramname"> <em>t10</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T11 const & </td>
-          <td class="paramname"> <em>t11</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T12 const & </td>
-          <td class="paramname"> <em>t12</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T13 const & </td>
-          <td class="paramname"> <em>t13</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T14 const & </td>
-          <td class="paramname"> <em>t14</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T15 const & </td>
-          <td class="paramname"> <em>t15</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T16 const & </td>
-          <td class="paramname"> <em>t16</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting seventeen kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac3b17a7168f092a0839a5d2cbb9210e6"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="ac3b17a7168f092a0839a5d2cbb9210e6" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13, T14 const &t14)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T5 const & </td>
-          <td class="paramname"> <em>t5</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T6 const & </td>
-          <td class="paramname"> <em>t6</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T7 const & </td>
-          <td class="paramname"> <em>t7</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T8 const & </td>
-          <td class="paramname"> <em>t8</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T9 const & </td>
-          <td class="paramname"> <em>t9</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T10 const & </td>
-          <td class="paramname"> <em>t10</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T11 const & </td>
-          <td class="paramname"> <em>t11</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T12 const & </td>
-          <td class="paramname"> <em>t12</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T13 const & </td>
-          <td class="paramname"> <em>t13</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T14 const & </td>
-          <td class="paramname"> <em>t14</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting fifteen kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8be19d50cd6d9ed66bf2b89a4166ee67"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a8be19d50cd6d9ed66bf2b89a4166ee67" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T5 const & </td>
-          <td class="paramname"> <em>t5</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T6 const & </td>
-          <td class="paramname"> <em>t6</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting seven kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7fd3a21c0e6a24ed15cb7450be4282a3"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a7fd3a21c0e6a24ed15cb7450be4282a3" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T5 const & </td>
-          <td class="paramname"> <em>t5</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T6 const & </td>
-          <td class="paramname"> <em>t6</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T7 const & </td>
-          <td class="paramname"> <em>t7</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T8 const & </td>
-          <td class="paramname"> <em>t8</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting nine kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="ace68dfdccfd9c93c87346e160f74739c"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="ace68dfdccfd9c93c87346e160f74739c" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
-          <td>(</td>
-          <td class="paramtype">T0 const & </td>
-          <td class="paramname"> <em>t0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T1 const & </td>
-          <td class="paramname"> <em>t1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T2 const & </td>
-          <td class="paramname"> <em>t2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T3 const & </td>
-          <td class="paramname"> <em>t3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T4 const & </td>
-          <td class="paramname"> <em>t4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T5 const & </td>
-          <td class="paramname"> <em>t5</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T6 const & </td>
-          <td class="paramname"> <em>t6</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T7 const & </td>
-          <td class="paramname"> <em>t7</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T8 const & </td>
-          <td class="paramname"> <em>t8</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T9 const & </td>
-          <td class="paramname"> <em>t9</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T10 const & </td>
-          <td class="paramname"> <em>t10</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T11 const & </td>
-          <td class="paramname"> <em>t11</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T12 const & </td>
-          <td class="paramname"> <em>t12</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T13 const & </td>
-          <td class="paramname"> <em>t13</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting fourteen kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a83a54825c25a4ec0cbe40577a24beb6c"></a><!-- doxytag: member="viennacl::ocl::kernel::operator=" ref="a83a54825c25a4ec0cbe40577a24beb6c" args="(const kernel &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Friends And Related Function Documentation</h2>
-<a class="anchor" id="a46527eb5023de820b1f1c16ec5a11084"></a><!-- doxytag: member="viennacl::ocl::kernel::enqueue" ref="a46527eb5023de820b1f1c16ec5a11084" args="(KernelType &k, viennacl::ocl::command_queue const &queue)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void enqueue </td>
-          <td>(</td>
-          <td class="paramtype">KernelType & </td>
-          <td class="paramname"> <em>k</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> const & </td>
-          <td class="paramname"> <em>queue</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [friend]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Enqueues a kernel in the provided queue. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="kernel_8hpp_source.html">kernel.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1local__mem.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1local__mem.html
deleted file mode 100644
index 00f8a92..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1local__mem.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: local_mem Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>local_mem Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::local_mem" -->
-<p>A class representing local (shared) OpenCL memory. Typically used as kernel argument.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="local__mem_8hpp_source.html">local_mem.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a33c50a9e8dcc7fbeeda4b6cadc0e7d53">local_mem</a> (unsigned int s)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a90ca964ebcc1b02bbcde225edd49e812">size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns size in bytes.  <a href="#a90ca964ebcc1b02bbcde225edd49e812"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a262aef9302860b3cb5f8fc4bee1531da">size</a> (unsigned int s)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the size of the local memory in bytes.  <a href="#a262aef9302860b3cb5f8fc4bee1531da"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A class representing local (shared) OpenCL memory. Typically used as kernel argument. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a33c50a9e8dcc7fbeeda4b6cadc0e7d53"></a><!-- doxytag: member="viennacl::ocl::local_mem::local_mem" ref="a33c50a9e8dcc7fbeeda4b6cadc0e7d53" args="(unsigned int s)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a> </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>s</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a90ca964ebcc1b02bbcde225edd49e812"></a><!-- doxytag: member="viennacl::ocl::local_mem::size" ref="a90ca964ebcc1b02bbcde225edd49e812" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int size </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns size in bytes. </p>
-
-</div>
-</div>
-<a class="anchor" id="a262aef9302860b3cb5f8fc4bee1531da"></a><!-- doxytag: member="viennacl::ocl::local_mem::size" ref="a262aef9302860b3cb5f8fc4bee1531da" args="(unsigned int s)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void size </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>s</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the size of the local memory in bytes. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="local__mem_8hpp_source.html">local_mem.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1map__failure.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1map__failure.html
deleted file mode 100644
index 73d8667..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1map__failure.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: map_failure Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>map_failure Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::map_failure" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1mem__copy__overlap.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1mem__copy__overlap.html
deleted file mode 100644
index 9753e61..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1mem__copy__overlap.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: mem_copy_overlap Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>mem_copy_overlap Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::mem_copy_overlap" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1mem__object__allocation__failure.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1mem__object__allocation__failure.html
deleted file mode 100644
index a8f09ee..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1mem__object__allocation__failure.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: mem_object_allocation_failure Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>mem_object_allocation_failure Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::mem_object_allocation_failure" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1out__of__host__memory.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1out__of__host__memory.html
deleted file mode 100644
index 75abf9b..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1out__of__host__memory.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: out_of_host_memory Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>out_of_host_memory Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::out_of_host_memory" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1out__of__resources.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1out__of__resources.html
deleted file mode 100644
index 351ed5f..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1out__of__resources.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: out_of_resources Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>out_of_resources Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::out_of_resources" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1platform.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1platform.html
deleted file mode 100644
index 07b0826..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1platform.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: platform Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>platform Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::platform" -->
-<p><code>#include <<a class="el" href="platform_8hpp_source.html">platform.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1platform.html#ad69bddb2ba31b27415484b3da4213ba8">platform</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_platform_id </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1platform.html#ab35e9ce3172db05c073d481fce1e26c4">id</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1platform.html#a2e1e4e2742b910c44558f9cf8e4add62">info</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an information string.  <a href="#a2e1e4e2742b910c44558f9cf8e4add62"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::vector< <a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1platform.html#a257844d23a69f95c6a6572631ffa5995">devices</a> (cl_device_type dtype=CL_DEVICE_TYPE_DEFAULT)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the available devices of the supplied device type.  <a href="#a257844d23a69f95c6a6572631ffa5995"></a><br/></td></tr>
-</table>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ad69bddb2ba31b27415484b3da4213ba8"></a><!-- doxytag: member="viennacl::ocl::platform::platform" ref="ad69bddb2ba31b27415484b3da4213ba8" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a257844d23a69f95c6a6572631ffa5995"></a><!-- doxytag: member="viennacl::ocl::platform::devices" ref="a257844d23a69f95c6a6572631ffa5995" args="(cl_device_type dtype=CL_DEVICE_TYPE_DEFAULT)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::vector<<a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a>> devices </td>
-          <td>(</td>
-          <td class="paramtype">cl_device_type </td>
-          <td class="paramname"> <em>dtype</em> = <code>CL_DEVICE_TYPE_DEFAULT</code></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the available devices of the supplied device type. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab35e9ce3172db05c073d481fce1e26c4"></a><!-- doxytag: member="viennacl::ocl::platform::id" ref="ab35e9ce3172db05c073d481fce1e26c4" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">cl_platform_id id </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2e1e4e2742b910c44558f9cf8e4add62"></a><!-- doxytag: member="viennacl::ocl::platform::info" ref="a2e1e4e2742b910c44558f9cf8e4add62" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string info </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns an information string. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="platform_8hpp_source.html">platform.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1profiling__info__not__available.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1profiling__info__not__available.html
deleted file mode 100644
index 62c136c..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1profiling__info__not__available.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: profiling_info_not_available Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>profiling_info_not_available Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::profiling_info_not_available" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1program.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1program.html
deleted file mode 100644
index 36f4ebd..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1program.html
+++ /dev/null
@@ -1,222 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: program Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a>  </div>
-  <div class="headertitle">
-<h1>program Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::program" -->
-<p><code>#include <<a class="el" href="program_8hpp_source.html">program.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#ac22da204c9d1580d094bc37b41ee6a5a">program</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#a396823275fb41e9a64fff458b6b4415d">program</a> (<a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_program > const &h, std::string const &prog_name=std::string())</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#a454539d49698f09affc0a399289e2611">program</a> (<a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#ab38d1becd4cb60e89dd0b11f3f4e3fe4">operator=</a> (const <a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#a836b9d82daf374fab15aac8c87eb1133">name</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92">add_kernel</a> (std::string const &kernel_name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a kernel to the program.  <a href="#a17bee920a38ba6e5158f5c807f88fd92"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#a593fbca8c511a382654582513faf24fb">get_kernel</a> (std::string const &name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the kernel with the provided name.  <a href="#a593fbca8c511a382654582513faf24fb"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="friends"></a>
-Friends</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#aaae51189d6e1e8b24b5654e3704ff50b">kernel</a></td></tr>
-</table>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ac22da204c9d1580d094bc37b41ee6a5a"></a><!-- doxytag: member="viennacl::ocl::program::program" ref="ac22da204c9d1580d094bc37b41ee6a5a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a396823275fb41e9a64fff458b6b4415d"></a><!-- doxytag: member="viennacl::ocl::program::program" ref="a396823275fb41e9a64fff458b6b4415d" args="(viennacl::ocl::handle< cl_program > const &h, std::string const &prog_name=std::string())" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_program > const & </td>
-          <td class="paramname"> <em>h</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::string const & </td>
-          <td class="paramname"> <em>prog_name</em> = <code>std::string()</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a454539d49698f09affc0a399289e2611"></a><!-- doxytag: member="viennacl::ocl::program::program" ref="a454539d49698f09affc0a399289e2611" args="(program const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a17bee920a38ba6e5158f5c807f88fd92"></a><!-- doxytag: member="viennacl::ocl::program::add_kernel" ref="a17bee920a38ba6e5158f5c807f88fd92" args="(std::string const &kernel_name)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a>& add_kernel </td>
-          <td>(</td>
-          <td class="paramtype">std::string const & </td>
-          <td class="paramname"> <em>kernel_name</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a kernel to the program. </p>
-
-</div>
-</div>
-<a class="anchor" id="a593fbca8c511a382654582513faf24fb"></a><!-- doxytag: member="viennacl::ocl::program::get_kernel" ref="a593fbca8c511a382654582513faf24fb" args="(std::string const &name)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a>& get_kernel </td>
-          <td>(</td>
-          <td class="paramtype">std::string const & </td>
-          <td class="paramname"> <em>name</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the kernel with the provided name. </p>
-
-</div>
-</div>
-<a class="anchor" id="a836b9d82daf374fab15aac8c87eb1133"></a><!-- doxytag: member="viennacl::ocl::program::name" ref="a836b9d82daf374fab15aac8c87eb1133" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string const& name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab38d1becd4cb60e89dd0b11f3f4e3fe4"></a><!-- doxytag: member="viennacl::ocl::program::operator=" ref="ab38d1becd4cb60e89dd0b11f3f4e3fe4" args="(const program &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Friends And Related Function Documentation</h2>
-<a class="anchor" id="aaae51189d6e1e8b24b5654e3704ff50b"></a><!-- doxytag: member="viennacl::ocl::program::kernel" ref="aaae51189d6e1e8b24b5654e3704ff50b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">friend class <a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a><code> [friend]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="program_8hpp_source.html">program.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1unknown__error.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1unknown__error.html
deleted file mode 100644
index 72c0f40..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1unknown__error.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: unknown_error Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>unknown_error Class Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::unknown_error" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1scalar.html b/doc/doxygen/html/classviennacl_1_1scalar.html
deleted file mode 100644
index d218eff..0000000
--- a/doc/doxygen/html/classviennacl_1_1scalar.html
+++ /dev/null
@@ -1,958 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: scalar< TYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1scalar.html">scalar< TYPE ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>scalar< TYPE > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::scalar" -->
-<p>This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type like float or double.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="scalar_8hpp_source.html">scalar.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><br class="typebreak"/>
-< TYPE >::ResultType </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a46dcdd29c175f21b173b96ae4dd0a46e">value_type</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the underlying host scalar type.  <a href="#a46dcdd29c175f21b173b96ae4dd0a46e"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e">scalar</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocates the memory for the scalar, but does not set it to zero.  <a href="#a79453d11d5d0a0ab021762a68a73d97e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#ab491583d840a0f494f5b6cf505defa7f">scalar</a> (TYPE val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocates the memory for the scalar and sets it to the supplied value.  <a href="#ab491583d840a0f494f5b6cf505defa7f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a577ea3a750a7975b2a5c256f94081b1c">scalar</a> (cl_mem mem, size_t size)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Wraps an existing memory entry into a scalar.  <a href="#a577ea3a750a7975b2a5c256f94081b1c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a1c6a89a7d2a7e6744f1b92d8466e0c56">scalar</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocates memory for the scalar and sets it to the result of supplied expression.  <a href="#a1c6a89a7d2a7e6744f1b92d8466e0c56"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a5449b52ebb29a6a9005ae8dc082b3415">scalar</a> (const <a class="el" href="classviennacl_1_1scalar.html">scalar</a> &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. Allocates new memory for the scalar and copies the value of the supplied scalar.  <a href="#a5449b52ebb29a6a9005ae8dc082b3415"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#aeeb8591dc2b4252a62d89522f583c9b3">operator TYPE</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads the value of the scalar from the GPU and returns the float or double value.  <a href="#aeeb8591dc2b4252a62d89522f583c9b3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c">operator=</a> (<a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assigns a vector entry.  <a href="#a2aebda7254fb1c2471fdedb2aa6dd36c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#aaeeb1bb633ef72f60b37ee06b3fd07da">operator=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assigns the value from another scalar.  <a href="#aaeeb1bb633ef72f60b37ee06b3fd07da"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a7b7ff8ec9039215d41042fb6dff8b24e">operator=</a> (float cpu_other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a24e0667388106b9f4150ade71c219b29">operator=</a> (double cpu_other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a11b85e1905ff83211365912d4d5c3d48">operator=</a> (long cpu_other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a601bfbe9d4b4f0a5136649f6b6f2062e">operator=</a> (unsigned long cpu_other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a2d72be42c42830b4e6f5426dc385daca">operator=</a> (int cpu_other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a4de3e801606700dc657414c0634ad46e">operator=</a> (unsigned int cpu_other)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a8f7fe13c798d1186206cd1cebe76b41f">operator=</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_inner_prod > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the scalar to the result of supplied inner product expression.  <a href="#a8f7fe13c798d1186206cd1cebe76b41f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a2f070f408c1f475ffb38ee82f59276c2">operator=</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_norm_1 > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the scalar to the result of supplied norm_1 expression.  <a href="#a2f070f408c1f475ffb38ee82f59276c2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a896fd9035e7735fd9fb3ea18fbae225e">operator=</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_norm_2 > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the scalar to the result of supplied norm_2 expression.  <a href="#a896fd9035e7735fd9fb3ea18fbae225e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#acea2777143dac0b71bfa981adbdf0fc5">operator=</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_norm_inf > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the scalar to the result of supplied norm_inf expression.  <a href="#acea2777143dac0b71bfa981adbdf0fc5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a54ddb6fd129bd75c57e27007c37a6ed9">operator+=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a ViennaCL scalar.  <a href="#a54ddb6fd129bd75c57e27007c37a6ed9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a3ead36ea34f169d78e44c621834d92fa">operator+=</a> (TYPE other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a host scalar (float or double).  <a href="#a3ead36ea34f169d78e44c621834d92fa"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a67a75928643713bf283d1bdce350589c">operator-=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a ViennaCL scalar.  <a href="#a67a75928643713bf283d1bdce350589c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a73870d8ac2703677743701c8fa1d0ac0">operator-=</a> (TYPE other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a host scalar (float or double).  <a href="#a73870d8ac2703677743701c8fa1d0ac0"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a9b5f86e060ae258394d0333cff946b08">operator*=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace multiplication with a ViennaCL scalar.  <a href="#a9b5f86e060ae258394d0333cff946b08"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a70b79d882deca6e3cb7d86ac5b893c58">operator*=</a> (TYPE other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace multiplication with a host scalar (float or double).  <a href="#a70b79d882deca6e3cb7d86ac5b893c58"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a5bb32c06b69bc99ab13df93be2f262f4">operator/=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace division with a ViennaCL scalar.  <a href="#a5bb32c06b69bc99ab13df93be2f262f4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a0631b7d2624ee483233b85ead71b4a78">operator/=</a> (TYPE other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace division with a host scalar (float or double).  <a href="#a0631b7d2624ee483233b85ead71b4a78"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88">operator+</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Addition of two ViennaCL scalars.  <a href="#afa3e3a23770f8609d7a0c45eaa656e88"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a6459d7d73f3f0d94757b0b1461d59814">operator+</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Addition of a ViennaCL scalar with a scalar expression.  <a href="#a6459d7d73f3f0d94757b0b1461d59814"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a843d737fff3a5d68391099cbf26381f2">operator+</a> (TYPE other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Addition of a ViennaCL scalar with a host scalar (float, double).  <a href="#a843d737fff3a5d68391099cbf26381f2"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32">operator-</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction of two ViennaCL scalars.  <a href="#abdc9352f6678cbc1701d20b431901b32"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a46f766bad633277898cb5c4dcd033d68">operator-</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction of a ViennaCL scalar from a scalar expression.  <a href="#a46f766bad633277898cb5c4dcd033d68"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#aeb369f81094dc1dcae284916a820fa34">operator-</a> (TYPE other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction of a host scalar (float, double) from a ViennaCL scalar.  <a href="#aeb369f81094dc1dcae284916a820fa34"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16">operator*</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplication of two ViennaCL scalars.  <a href="#a4efbfcfdb603cbaa130b85fbb149eb16"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a8a8ee730a8f51c85440630a48d07429d">operator*</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplication of a ViennaCL scalar with a scalar expression.  <a href="#a8a8ee730a8f51c85440630a48d07429d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a232414930e04594eeb40a5a387f91337">operator*</a> (TYPE other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplication of a host scalar (float, double) with a ViennaCL scalar.  <a href="#a232414930e04594eeb40a5a387f91337"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb">operator/</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Division of two ViennaCL scalars.  <a href="#a1befc1cbf12e97f87caa1d2a18b560bb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a27b5a8f4b44fd9f9b83e3e9f274f01e7">operator/</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Division of a ViennaCL scalar by a scalar expression.  <a href="#a27b5a8f4b44fd9f9b83e3e9f274f01e7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#affd5ad0c4067234e832db130cea14288">operator/</a> (TYPE other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Division of a ViennaCL scalar by a host scalar (float, double).  <a href="#affd5ad0c4067234e832db130cea14288"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle.  <a href="#abe419a13116160fd12b66f47c5180e5c"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class TYPE><br/>
- class viennacl::scalar< TYPE ></h3>
-
-<p>This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type like float or double. </p>
-<p>Since every read and write operation requires a CPU->GPU or GPU->CPU transfer, this type should be used with care. The advantage of this type is that the GPU command queue can be filled without blocking read operations.</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>TYPE</em> </td><td>Either float or double. Checked at compile time. </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a46dcdd29c175f21b173b96ae4dd0a46e"></a><!-- doxytag: member="viennacl::scalar::value_type" ref="a46dcdd29c175f21b173b96ae4dd0a46e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><TYPE>::ResultType <a class="el" href="classviennacl_1_1scalar.html#a46dcdd29c175f21b173b96ae4dd0a46e">value_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the underlying host scalar type. </p>
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a79453d11d5d0a0ab021762a68a73d97e"></a><!-- doxytag: member="viennacl::scalar::scalar" ref="a79453d11d5d0a0ab021762a68a73d97e" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Allocates the memory for the scalar, but does not set it to zero. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab491583d840a0f494f5b6cf505defa7f"></a><!-- doxytag: member="viennacl::scalar::scalar" ref="ab491583d840a0f494f5b6cf505defa7f" args="(TYPE val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a> </td>
-          <td>(</td>
-          <td class="paramtype">TYPE </td>
-          <td class="paramname"> <em>val</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Allocates the memory for the scalar and sets it to the supplied value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a577ea3a750a7975b2a5c256f94081b1c"></a><!-- doxytag: member="viennacl::scalar::scalar" ref="a577ea3a750a7975b2a5c256f94081b1c" args="(cl_mem mem, size_t size)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a> </td>
-          <td>(</td>
-          <td class="paramtype">cl_mem </td>
-          <td class="paramname"> <em>mem</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>size</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, explicit]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Wraps an existing memory entry into a scalar. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mem</em> </td><td>The OpenCL memory handle </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>Ignored - Only necessary to avoid ambiguities. Users are advised to set this parameter to '1'. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1c6a89a7d2a7e6744f1b92d8466e0c56"></a><!-- doxytag: member="viennacl::scalar::scalar" ref="a1c6a89a7d2a7e6744f1b92d8466e0c56" args="(scalar_expression< T1, T2, OP > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Allocates memory for the scalar and sets it to the result of supplied expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5449b52ebb29a6a9005ae8dc082b3415"></a><!-- doxytag: member="viennacl::scalar::scalar" ref="a5449b52ebb29a6a9005ae8dc082b3415" args="(const scalar &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a> </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copy constructor. Allocates new memory for the scalar and copies the value of the supplied scalar. </p>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="abe419a13116160fd12b66f47c5180e5c"></a><!-- doxytag: member="viennacl::scalar::handle" ref="abe419a13116160fd12b66f47c5180e5c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle. </p>
-
-</div>
-</div>
-<a class="anchor" id="aeeb8591dc2b4252a62d89522f583c9b3"></a><!-- doxytag: member="viennacl::scalar::operator TYPE" ref="aeeb8591dc2b4252a62d89522f583c9b3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">operator TYPE </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Reads the value of the scalar from the GPU and returns the float or double value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4efbfcfdb603cbaa130b85fbb149eb16"></a><!-- doxytag: member="viennacl::scalar::operator*" ref="a4efbfcfdb603cbaa130b85fbb149eb16" args="(scalar< TYPE > const &other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator* </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Multiplication of two ViennaCL scalars. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8a8ee730a8f51c85440630a48d07429d"></a><!-- doxytag: member="viennacl::scalar::operator*" ref="a8a8ee730a8f51c85440630a48d07429d" args="(scalar_expression< T1, T2, OP > const &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator* </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Multiplication of a ViennaCL scalar with a scalar expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a232414930e04594eeb40a5a387f91337"></a><!-- doxytag: member="viennacl::scalar::operator*" ref="a232414930e04594eeb40a5a387f91337" args="(TYPE other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator* </td>
-          <td>(</td>
-          <td class="paramtype">TYPE </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Multiplication of a host scalar (float, double) with a ViennaCL scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9b5f86e060ae258394d0333cff946b08"></a><!-- doxytag: member="viennacl::scalar::operator*=" ref="a9b5f86e060ae258394d0333cff946b08" args="(scalar< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator*= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace multiplication with a ViennaCL scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a70b79d882deca6e3cb7d86ac5b893c58"></a><!-- doxytag: member="viennacl::scalar::operator*=" ref="a70b79d882deca6e3cb7d86ac5b893c58" args="(TYPE other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator*= </td>
-          <td>(</td>
-          <td class="paramtype">TYPE </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace multiplication with a host scalar (float or double). </p>
-
-</div>
-</div>
-<a class="anchor" id="afa3e3a23770f8609d7a0c45eaa656e88"></a><!-- doxytag: member="viennacl::scalar::operator+" ref="afa3e3a23770f8609d7a0c45eaa656e88" args="(scalar< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator+ </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Addition of two ViennaCL scalars. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6459d7d73f3f0d94757b0b1461d59814"></a><!-- doxytag: member="viennacl::scalar::operator+" ref="a6459d7d73f3f0d94757b0b1461d59814" args="(scalar_expression< T1, T2, OP > const &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator+ </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Addition of a ViennaCL scalar with a scalar expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a843d737fff3a5d68391099cbf26381f2"></a><!-- doxytag: member="viennacl::scalar::operator+" ref="a843d737fff3a5d68391099cbf26381f2" args="(TYPE other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator+ </td>
-          <td>(</td>
-          <td class="paramtype">TYPE </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Addition of a ViennaCL scalar with a host scalar (float, double). </p>
-
-</div>
-</div>
-<a class="anchor" id="a54ddb6fd129bd75c57e27007c37a6ed9"></a><!-- doxytag: member="viennacl::scalar::operator+=" ref="a54ddb6fd129bd75c57e27007c37a6ed9" args="(scalar< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator+= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a ViennaCL scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3ead36ea34f169d78e44c621834d92fa"></a><!-- doxytag: member="viennacl::scalar::operator+=" ref="a3ead36ea34f169d78e44c621834d92fa" args="(TYPE other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator+= </td>
-          <td>(</td>
-          <td class="paramtype">TYPE </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a host scalar (float or double). </p>
-
-</div>
-</div>
-<a class="anchor" id="aeb369f81094dc1dcae284916a820fa34"></a><!-- doxytag: member="viennacl::scalar::operator-" ref="aeb369f81094dc1dcae284916a820fa34" args="(TYPE other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator- </td>
-          <td>(</td>
-          <td class="paramtype">TYPE </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Subtraction of a host scalar (float, double) from a ViennaCL scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="abdc9352f6678cbc1701d20b431901b32"></a><!-- doxytag: member="viennacl::scalar::operator-" ref="abdc9352f6678cbc1701d20b431901b32" args="(scalar< TYPE > const &other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator- </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Subtraction of two ViennaCL scalars. </p>
-
-</div>
-</div>
-<a class="anchor" id="a46f766bad633277898cb5c4dcd033d68"></a><!-- doxytag: member="viennacl::scalar::operator-" ref="a46f766bad633277898cb5c4dcd033d68" args="(scalar_expression< T1, T2, OP > const &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator- </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Subtraction of a ViennaCL scalar from a scalar expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a67a75928643713bf283d1bdce350589c"></a><!-- doxytag: member="viennacl::scalar::operator-=" ref="a67a75928643713bf283d1bdce350589c" args="(scalar< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator-= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a ViennaCL scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a73870d8ac2703677743701c8fa1d0ac0"></a><!-- doxytag: member="viennacl::scalar::operator-=" ref="a73870d8ac2703677743701c8fa1d0ac0" args="(TYPE other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator-= </td>
-          <td>(</td>
-          <td class="paramtype">TYPE </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a host scalar (float or double). </p>
-
-</div>
-</div>
-<a class="anchor" id="affd5ad0c4067234e832db130cea14288"></a><!-- doxytag: member="viennacl::scalar::operator/" ref="affd5ad0c4067234e832db130cea14288" args="(TYPE other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator/ </td>
-          <td>(</td>
-          <td class="paramtype">TYPE </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Division of a ViennaCL scalar by a host scalar (float, double). </p>
-
-</div>
-</div>
-<a class="anchor" id="a27b5a8f4b44fd9f9b83e3e9f274f01e7"></a><!-- doxytag: member="viennacl::scalar::operator/" ref="a27b5a8f4b44fd9f9b83e3e9f274f01e7" args="(scalar_expression< T1, T2, OP > const &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator/ </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Division of a ViennaCL scalar by a scalar expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a1befc1cbf12e97f87caa1d2a18b560bb"></a><!-- doxytag: member="viennacl::scalar::operator/" ref="a1befc1cbf12e97f87caa1d2a18b560bb" args="(scalar< TYPE > const &other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator/ </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Division of two ViennaCL scalars. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0631b7d2624ee483233b85ead71b4a78"></a><!-- doxytag: member="viennacl::scalar::operator/=" ref="a0631b7d2624ee483233b85ead71b4a78" args="(TYPE other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator/= </td>
-          <td>(</td>
-          <td class="paramtype">TYPE </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace division with a host scalar (float or double). </p>
-
-</div>
-</div>
-<a class="anchor" id="a5bb32c06b69bc99ab13df93be2f262f4"></a><!-- doxytag: member="viennacl::scalar::operator/=" ref="a5bb32c06b69bc99ab13df93be2f262f4" args="(scalar< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator/= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace division with a ViennaCL scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a896fd9035e7735fd9fb3ea18fbae225e"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a896fd9035e7735fd9fb3ea18fbae225e" args="(scalar_expression< T1, T2, op_norm_2 > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_norm_2 > const & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the scalar to the result of supplied norm_2 expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="acea2777143dac0b71bfa981adbdf0fc5"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="acea2777143dac0b71bfa981adbdf0fc5" args="(scalar_expression< T1, T2, op_norm_inf > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_norm_inf > const & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the scalar to the result of supplied norm_inf expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8f7fe13c798d1186206cd1cebe76b41f"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a8f7fe13c798d1186206cd1cebe76b41f" args="(scalar_expression< T1, T2, op_inner_prod > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_inner_prod > const & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the scalar to the result of supplied inner product expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a601bfbe9d4b4f0a5136649f6b6f2062e"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a601bfbe9d4b4f0a5136649f6b6f2062e" args="(unsigned long cpu_other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">unsigned long </td>
-          <td class="paramname"> <em>cpu_other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2d72be42c42830b4e6f5426dc385daca"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a2d72be42c42830b4e6f5426dc385daca" args="(int cpu_other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>cpu_other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aaeeb1bb633ef72f60b37ee06b3fd07da"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="aaeeb1bb633ef72f60b37ee06b3fd07da" args="(scalar< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Assigns the value from another scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a24e0667388106b9f4150ade71c219b29"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a24e0667388106b9f4150ade71c219b29" args="(double cpu_other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>cpu_other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2f070f408c1f475ffb38ee82f59276c2"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a2f070f408c1f475ffb38ee82f59276c2" args="(scalar_expression< T1, T2, op_norm_1 > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_norm_1 > const & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the scalar to the result of supplied norm_1 expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a11b85e1905ff83211365912d4d5c3d48"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a11b85e1905ff83211365912d4d5c3d48" args="(long cpu_other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>cpu_other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4de3e801606700dc657414c0634ad46e"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a4de3e801606700dc657414c0634ad46e" args="(unsigned int cpu_other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>cpu_other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7b7ff8ec9039215d41042fb6dff8b24e"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a7b7ff8ec9039215d41042fb6dff8b24e" args="(float cpu_other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">float </td>
-          <td class="paramname"> <em>cpu_other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2aebda7254fb1c2471fdedb2aa6dd36c"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a2aebda7254fb1c2471fdedb2aa6dd36c" args="(entry_proxy< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>< TYPE > const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Assigns a vector entry. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="scalar_8hpp_source.html">scalar.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1scalar__expression.html b/doc/doxygen/html/classviennacl_1_1scalar__expression.html
deleted file mode 100644
index fd4538e..0000000
--- a/doc/doxygen/html/classviennacl_1_1scalar__expression.html
+++ /dev/null
@@ -1,183 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: scalar_expression< LHS, RHS, OP > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression< LHS, RHS, OP ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>scalar_expression< LHS, RHS, OP > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::scalar_expression" -->
-<p>A proxy for scalar expressions (e.g. from inner vector products).  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="scalar_8hpp_source.html">scalar.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef DummyType::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html#a009d628c069d36ec739ad659e1846413">ScalarType</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html#ae0f765f70db16af7c6d8763b8316c17c">scalar_expression</a> (LHS &lhs, RHS &rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">LHS & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276">get_lhs</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the left hand side operand.  <a href="#a3abbcc6247aba0116cf7b95e231f3276"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">RHS & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html#a039558d10a125ddba366e099b72c7b01">get_rhs</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the left hand side operand.  <a href="#a039558d10a125ddba366e099b72c7b01"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html#a0da7f7ae214746d5b37ea6c28855155c">operator ScalarType</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Conversion operator to a ViennaCL scalar.  <a href="#a0da7f7ae214746d5b37ea6c28855155c"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename LHS, typename RHS, typename OP><br/>
- class viennacl::scalar_expression< LHS, RHS, OP ></h3>
-
-<p>A proxy for scalar expressions (e.g. from inner vector products). </p>
-<p>assumption: dim(LHS) >= dim(RHS), where dim(scalar) = 0, dim(vector) = 1 and dim(matrix = 2) </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>LHS</em> </td><td>The left hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>RHS</em> </td><td>The right hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OP</em> </td><td>The operation tag </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a009d628c069d36ec739ad659e1846413"></a><!-- doxytag: member="viennacl::scalar_expression::ScalarType" ref="a009d628c069d36ec739ad659e1846413" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef DummyType::value_type <a class="el" href="classviennacl_1_1scalar__expression.html#a009d628c069d36ec739ad659e1846413">ScalarType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ae0f765f70db16af7c6d8763b8316c17c"></a><!-- doxytag: member="viennacl::scalar_expression::scalar_expression" ref="ae0f765f70db16af7c6d8763b8316c17c" args="(LHS &lhs, RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a> </td>
-          <td>(</td>
-          <td class="paramtype">LHS & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">RHS & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a3abbcc6247aba0116cf7b95e231f3276"></a><!-- doxytag: member="viennacl::scalar_expression::get_lhs" ref="a3abbcc6247aba0116cf7b95e231f3276" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">LHS& get_lhs </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the left hand side operand. </p>
-
-</div>
-</div>
-<a class="anchor" id="a039558d10a125ddba366e099b72c7b01"></a><!-- doxytag: member="viennacl::scalar_expression::get_rhs" ref="a039558d10a125ddba366e099b72c7b01" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">RHS& get_rhs </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the left hand side operand. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0da7f7ae214746d5b37ea6c28855155c"></a><!-- doxytag: member="viennacl::scalar_expression::operator ScalarType" ref="a0da7f7ae214746d5b37ea6c28855155c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">operator <a class="el" href="classviennacl_1_1scalar__expression.html#a009d628c069d36ec739ad659e1846413">ScalarType</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Conversion operator to a ViennaCL scalar. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="scalar_8hpp_source.html">scalar.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html b/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html
deleted file mode 100644
index 9ec7520..0000000
--- a/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html
+++ /dev/null
@@ -1,331 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::const_sparse_matrix_adapted_iterator" -->
-<p>A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">iterator1</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">iterator2</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a7e6adc520f4881192216bb7352aa3eb9">const_sparse_matrix_adapted_iterator</a> (std::vector< std::map< unsigned int, SCALARTYPE > > const &mat, int i, int j)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">SCALARTYPE </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a46c279075bb75ded776ba3f280e0e38a">operator*</a> (void) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">operator++</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a4419c6af964a7de542db8474f8ef1091">operator++</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">operator+=</a> (unsigned int offset)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">operator==</a> (<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">operator!=</a> (<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a722f0ccc3f96fb85034a8f00a3860470">index1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a64b95ec918c78480532aa4578eac805f">index2</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE,!is_iterator1, <br class="typebreak"/>
-true > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ab48a06d327e6296423955301ede64223">begin</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE,!is_iterator1, <br class="typebreak"/>
-true > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#afda31b300997d15900344226c403b540">end</a> () const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename SCALARTYPE, bool is_iterator1, bool is_forward><br/>
- class viennacl::tools::const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></h3>
-
-<p>A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> > </p>
-<p>The iterator behaves like ublas iterators. Attention: Iteration along first columns and then rows via .<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ab48a06d327e6296423955301ede64223">begin()</a> is untested!</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>either float or double </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>is_iterator1</em> </td><td>if true, this iterator iterates along increasing row indices, otherwise along increasing column indices </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>increment</em> </td><td>if +1, this is a forward iterator, if -1 we have a reverse iterator </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9d0cefa870abca0f769b21678543f261"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::iterator1" ref="a9d0cefa870abca0f769b21678543f261" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">iterator1</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8ecdc71bf9b89cd058304a3d484cbdea"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::iterator2" ref="a8ecdc71bf9b89cd058304a3d484cbdea" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">iterator2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a7e6adc520f4881192216bb7352aa3eb9"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::const_sparse_matrix_adapted_iterator" ref="a7e6adc520f4881192216bb7352aa3eb9" args="(std::vector< std::map< unsigned int, SCALARTYPE > > const &mat, int i, int j)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a> </td>
-          <td>(</td>
-          <td class="paramtype">std::vector< std::map< unsigned int, SCALARTYPE > > const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>j</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ab48a06d327e6296423955301ede64223"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::begin" ref="ab48a06d327e6296423955301ede64223" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><SCALARTYPE, !is_iterator1, true> begin </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afda31b300997d15900344226c403b540"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::end" ref="afda31b300997d15900344226c403b540" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><SCALARTYPE, !is_iterator1, true> end </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a722f0ccc3f96fb85034a8f00a3860470"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::index1" ref="a722f0ccc3f96fb85034a8f00a3860470" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int index1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a64b95ec918c78480532aa4578eac805f"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::index2" ref="a64b95ec918c78480532aa4578eac805f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int index2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0c704f6470bc4c7392b964dd83a1d97b"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::operator!=" ref="a0c704f6470bc4c7392b964dd83a1d97b" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool operator!= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a46c279075bb75ded776ba3f280e0e38a"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::operator*" ref="a46c279075bb75ded776ba3f280e0e38a" args="(void) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">SCALARTYPE operator* </td>
-          <td>(</td>
-          <td class="paramtype">void </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa5055e4100b53acad1be8697088ff1dc"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::operator++" ref="aa5055e4100b53acad1be8697088ff1dc" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a>& operator++ </td>
-          <td>(</td>
-          <td class="paramtype">void </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4419c6af964a7de542db8474f8ef1091"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::operator++" ref="a4419c6af964a7de542db8474f8ef1091" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a>& operator++ </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a85ccc1b236b4311e422f330ac778e2aa"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::operator+=" ref="a85ccc1b236b4311e422f330ac778e2aa" args="(unsigned int offset)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> operator+= </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>offset</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae01970b831b1c1dc3a9f22f7a4e19cf6"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::operator==" ref="ae01970b831b1c1dc3a9f22f7a4e19cf6" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool operator== </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html b/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html
deleted file mode 100644
index 724c31c..0000000
--- a/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html
+++ /dev/null
@@ -1,342 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: const_sparse_matrix_adapter< SCALARTYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter< SCALARTYPE ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>const_sparse_matrix_adapter< SCALARTYPE > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::const_sparse_matrix_adapter" -->
-<p>Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a>></code></p>
-<div class="dynheader">
-Inheritance diagram for const_sparse_matrix_adapter< SCALARTYPE >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.png" usemap="#const_sparse_matrix_adapter< SCALARTYPE >_map" alt=""/>
-  <map id="const_sparse_matrix_adapter< SCALARTYPE >_map" name="const_sparse_matrix_adapter< SCALARTYPE >_map">
-<area href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" alt="sparse_matrix_adapter< SCALARTYPE >" shape="rect" coords="0,56,283,80"/>
-</map>
-</div>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE, true, true > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa5359de96982fcefb8902889e90cd009">const_iterator1</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE, false, true > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adf83e37907ef2d594f62e4b05b9425bd">const_iterator2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE, true, false > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#abb7af69bf0142c0d643bc87bb93c458c">const_reverse_iterator1</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef SCALARTYPE </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#ab2ccf246e378a3df6f7a4d9da121f832">value_type</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adc6d39eae2e1a492baf46df00aefbbd4">const_sparse_matrix_adapter</a> (std::vector< std::map< unsigned int, SCALARTYPE > > const &mat)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">size1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator1</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a5b9dc1969b4f2a110d0cec988eb4b1ea">begin1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator1</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa29369f210d72e323561ef2f45c82e85">end1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_reverse_iterator1</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8883d4e54ffd15ae74873f3ada1ad43b">rbegin1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_reverse_iterator1</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a88d31c317316b533e580da19c1a625e0">rend1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator2</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8799eeb54a7eccddce5661c438d535f3">begin2</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator2</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#afe8212a7238c7a15a2731c5f47f775ec">end2</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">SCALARTYPE </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aebaa6cb9a0b72e0792005b58205f2073">operator()</a> (unsigned int i, unsigned int j) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename SCALARTYPE><br/>
- class viennacl::tools::const_sparse_matrix_adapter< SCALARTYPE ></h3>
-
-<p>Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>either float or double </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="aa5359de96982fcefb8902889e90cd009"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::const_iterator1" ref="aa5359de96982fcefb8902889e90cd009" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><SCALARTYPE, true, true> <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator1</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adf83e37907ef2d594f62e4b05b9425bd"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::const_iterator2" ref="adf83e37907ef2d594f62e4b05b9425bd" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><SCALARTYPE, false, true> <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abb7af69bf0142c0d643bc87bb93c458c"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::const_reverse_iterator1" ref="abb7af69bf0142c0d643bc87bb93c458c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><SCALARTYPE, true, false> <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_reverse_iterator1</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab2ccf246e378a3df6f7a4d9da121f832"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::value_type" ref="ab2ccf246e378a3df6f7a4d9da121f832" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef SCALARTYPE <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#ab2ccf246e378a3df6f7a4d9da121f832">value_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="adc6d39eae2e1a492baf46df00aefbbd4"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::const_sparse_matrix_adapter" ref="adc6d39eae2e1a492baf46df00aefbbd4" args="(std::vector< std::map< unsigned int, SCALARTYPE > > const &mat)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter</a> </td>
-          <td>(</td>
-          <td class="paramtype">std::vector< std::map< unsigned int, SCALARTYPE > > const & </td>
-          <td class="paramname"> <em>mat</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a5b9dc1969b4f2a110d0cec988eb4b1ea"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::begin1" ref="a5b9dc1969b4f2a110d0cec988eb4b1ea" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator1</a> begin1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8799eeb54a7eccddce5661c438d535f3"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::begin2" ref="a8799eeb54a7eccddce5661c438d535f3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator2</a> begin2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa29369f210d72e323561ef2f45c82e85"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::end1" ref="aa29369f210d72e323561ef2f45c82e85" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator1</a> end1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afe8212a7238c7a15a2731c5f47f775ec"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::end2" ref="afe8212a7238c7a15a2731c5f47f775ec" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator2</a> end2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aebaa6cb9a0b72e0792005b58205f2073"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::operator()" ref="aebaa6cb9a0b72e0792005b58205f2073" args="(unsigned int i, unsigned int j) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">SCALARTYPE operator() </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>j</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8883d4e54ffd15ae74873f3ada1ad43b"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::rbegin1" ref="a8883d4e54ffd15ae74873f3ada1ad43b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_reverse_iterator1</a> rbegin1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a88d31c317316b533e580da19c1a625e0"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::rend1" ref="a88d31c317316b533e580da19c1a625e0" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_reverse_iterator1</a> rend1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a890ed2f6c982169c737bd4f68b2a5db7"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::size1" ref="a890ed2f6c982169c737bd4f68b2a5db7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int size1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Reimplemented in <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a5dc0d7ea09d7bebc57839beeae58a3f7">sparse_matrix_adapter< SCALARTYPE ></a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aacffdea3e049b0080b6fa4ac4c2fd881"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::size2" ref="aacffdea3e049b0080b6fa4ac4c2fd881" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int size2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Reimplemented in <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad5be0755605e62a9b2ca912ba0c6032e">sparse_matrix_adapter< SCALARTYPE ></a>.</p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapter.png b/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapter.png
deleted file mode 100644
index bf6b20d..0000000
Binary files a/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapter.png and /dev/null differ
diff --git a/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html b/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html
deleted file mode 100644
index 049b071..0000000
--- a/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::sparse_matrix_adapted_iterator" -->
-<p>A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">iterator1</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">iterator2</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a28ab748b9c7783bdf3aa8fa02203a85c">sparse_matrix_adapted_iterator</a> (std::vector< std::map< unsigned int, SCALARTYPE > > &mat, int i, int j)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">SCALARTYPE & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#af2633ec1341d109e979b949d533ff1a2">operator*</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">operator++</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a4419c6af964a7de542db8474f8ef1091">operator++</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">operator+=</a> (unsigned int offset)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">operator==</a> (<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">operator!=</a> (<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a48c62d5afba1616ab8081dc78b276075">index1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a5193f8c88b303f9ebf91c0368be0139b">index2</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE,!is_iterator1 > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aca3adf2f1528779c11d9abde704c2e69">begin</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE,!is_iterator1 > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a94a6ed7c67c72c74986b98e1b1343cd1">end</a> () const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename SCALARTYPE, bool is_iterator1><br/>
- class viennacl::tools::sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></h3>
-
-<p>A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> > </p>
-<p>The iterator behaves like ublas iterators. Attention: Iteration along first columns and then rows via .<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aca3adf2f1528779c11d9abde704c2e69">begin()</a> is untested! Reverse iterators are missing!</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>either float or double </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>is_iterator1</em> </td><td>if true, this iterator iterates along increasing row indices, otherwise along increasiong column indices </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9d0cefa870abca0f769b21678543f261"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::iterator1" ref="a9d0cefa870abca0f769b21678543f261" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator1</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8ecdc71bf9b89cd058304a3d484cbdea"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::iterator2" ref="a8ecdc71bf9b89cd058304a3d484cbdea" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a28ab748b9c7783bdf3aa8fa02203a85c"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::sparse_matrix_adapted_iterator" ref="a28ab748b9c7783bdf3aa8fa02203a85c" args="(std::vector< std::map< unsigned int, SCALARTYPE > > &mat, int i, int j)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a> </td>
-          <td>(</td>
-          <td class="paramtype">std::vector< std::map< unsigned int, SCALARTYPE > > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>j</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aca3adf2f1528779c11d9abde704c2e69"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::begin" ref="aca3adf2f1528779c11d9abde704c2e69" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><SCALARTYPE, !is_iterator1> begin </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a94a6ed7c67c72c74986b98e1b1343cd1"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::end" ref="a94a6ed7c67c72c74986b98e1b1343cd1" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><SCALARTYPE, !is_iterator1> end </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a48c62d5afba1616ab8081dc78b276075"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::index1" ref="a48c62d5afba1616ab8081dc78b276075" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int index1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5193f8c88b303f9ebf91c0368be0139b"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::index2" ref="a5193f8c88b303f9ebf91c0368be0139b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int index2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0c704f6470bc4c7392b964dd83a1d97b"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::operator!=" ref="a0c704f6470bc4c7392b964dd83a1d97b" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool operator!= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af2633ec1341d109e979b949d533ff1a2"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::operator*" ref="af2633ec1341d109e979b949d533ff1a2" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">SCALARTYPE& operator* </td>
-          <td>(</td>
-          <td class="paramtype">void </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa5055e4100b53acad1be8697088ff1dc"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::operator++" ref="aa5055e4100b53acad1be8697088ff1dc" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a>& operator++ </td>
-          <td>(</td>
-          <td class="paramtype">void </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4419c6af964a7de542db8474f8ef1091"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::operator++" ref="a4419c6af964a7de542db8474f8ef1091" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a>& operator++ </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a85ccc1b236b4311e422f330ac778e2aa"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::operator+=" ref="a85ccc1b236b4311e422f330ac778e2aa" args="(unsigned int offset)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> operator+= </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>offset</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae01970b831b1c1dc3a9f22f7a4e19cf6"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::operator==" ref="ae01970b831b1c1dc3a9f22f7a4e19cf6" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool operator== </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapter.html b/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapter.html
deleted file mode 100644
index ad426c3..0000000
--- a/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapter.html
+++ /dev/null
@@ -1,364 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: sparse_matrix_adapter< SCALARTYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter< SCALARTYPE ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>sparse_matrix_adapter< SCALARTYPE > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::sparse_matrix_adapter" --><!-- doxytag: inherits="viennacl::tools::const_sparse_matrix_adapter" -->
-<p>Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a>></code></p>
-<div class="dynheader">
-Inheritance diagram for sparse_matrix_adapter< SCALARTYPE >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="classviennacl_1_1tools_1_1sparse__matrix__adapter.png" usemap="#sparse_matrix_adapter< SCALARTYPE >_map" alt=""/>
-  <map id="sparse_matrix_adapter< SCALARTYPE >_map" name="sparse_matrix_adapter< SCALARTYPE >_map">
-<area href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" alt="const_sparse_matrix_adapter< SCALARTYPE >" shape="rect" coords="0,0,283,24"/>
-</map>
-</div>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE, true > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a9aa7f7547cc95c129d669a1e1bc552d9">iterator1</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE, false > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#af9d07e03f84bf020e29667219e4c2ad8">iterator2</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa97338a4e54ded964e4d45a623adbf30">sparse_matrix_adapter</a> (std::vector< std::map< unsigned int, SCALARTYPE > > &mat)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator1</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a61247f52ba999959dea8c58d3e8bc9a6">begin1</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator1</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad76ba25f213ed92724da42386c401417">end1</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator2</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a0fc615f1d97d2b19550357e227f85485">begin2</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator2</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac9c68d7fd4173418872d2233f894630c">end2</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">SCALARTYPE & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aafa6b6148eaffc7fb4518f473a5432ec">operator()</a> (unsigned int i, unsigned int j)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ab49c1922c02e19737b2330be0b76e455">resize</a> (unsigned int i, unsigned int j, bool preserve=true)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad851ae3af7f4c7b7441b653963dc434a">size1</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a5dc0d7ea09d7bebc57839beeae58a3f7">size1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa1ab613bf0ce7b0cc370306d7425ffa2">size2</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad5be0755605e62a9b2ca912ba0c6032e">size2</a> () const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename SCALARTYPE><br/>
- class viennacl::tools::sparse_matrix_adapter< SCALARTYPE ></h3>
-
-<p>Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>either float or double </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9aa7f7547cc95c129d669a1e1bc552d9"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::iterator1" ref="a9aa7f7547cc95c129d669a1e1bc552d9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><SCALARTYPE, true> <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator1</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af9d07e03f84bf020e29667219e4c2ad8"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::iterator2" ref="af9d07e03f84bf020e29667219e4c2ad8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><SCALARTYPE, false> <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="aa97338a4e54ded964e4d45a623adbf30"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::sparse_matrix_adapter" ref="aa97338a4e54ded964e4d45a623adbf30" args="(std::vector< std::map< unsigned int, SCALARTYPE > > &mat)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter</a> </td>
-          <td>(</td>
-          <td class="paramtype">std::vector< std::map< unsigned int, SCALARTYPE > > & </td>
-          <td class="paramname"> <em>mat</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a61247f52ba999959dea8c58d3e8bc9a6"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::begin1" ref="a61247f52ba999959dea8c58d3e8bc9a6" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator1</a> begin1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0fc615f1d97d2b19550357e227f85485"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::begin2" ref="a0fc615f1d97d2b19550357e227f85485" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator2</a> begin2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::clear" ref="ac8bb3912a3ce86b15842e79d0b421204" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void clear </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad76ba25f213ed92724da42386c401417"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::end1" ref="ad76ba25f213ed92724da42386c401417" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator1</a> end1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac9c68d7fd4173418872d2233f894630c"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::end2" ref="ac9c68d7fd4173418872d2233f894630c" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator2</a> end2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aafa6b6148eaffc7fb4518f473a5432ec"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::operator()" ref="aafa6b6148eaffc7fb4518f473a5432ec" args="(unsigned int i, unsigned int j)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">SCALARTYPE& operator() </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>j</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab49c1922c02e19737b2330be0b76e455"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::resize" ref="ab49c1922c02e19737b2330be0b76e455" args="(unsigned int i, unsigned int j, bool preserve=true)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void resize </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>j</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">bool </td>
-          <td class="paramname"> <em>preserve</em> = <code>true</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad851ae3af7f4c7b7441b653963dc434a"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::size1" ref="ad851ae3af7f4c7b7441b653963dc434a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t size1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5dc0d7ea09d7bebc57839beeae58a3f7"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::size1" ref="a5dc0d7ea09d7bebc57839beeae58a3f7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t size1 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Reimplemented from <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">const_sparse_matrix_adapter< SCALARTYPE ></a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa1ab613bf0ce7b0cc370306d7425ffa2"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::size2" ref="aa1ab613bf0ce7b0cc370306d7425ffa2" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t size2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad5be0755605e62a9b2ca912ba0c6032e"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::size2" ref="ad5be0755605e62a9b2ca912ba0c6032e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t size2 </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Reimplemented from <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">const_sparse_matrix_adapter< SCALARTYPE ></a>.</p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapter.png b/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapter.png
deleted file mode 100644
index b1fe8dd..0000000
Binary files a/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapter.png and /dev/null differ
diff --git a/doc/doxygen/html/classviennacl_1_1vector.html b/doc/doxygen/html/classviennacl_1_1vector.html
deleted file mode 100644
index 2b2befa..0000000
--- a/doc/doxygen/html/classviennacl_1_1vector.html
+++ /dev/null
@@ -1,2262 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< SCALARTYPE, ALIGNMENT > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1vector.html">vector< SCALARTYPE, ALIGNMENT ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>vector< SCALARTYPE, ALIGNMENT > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::vector" -->
-<p>A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::vector.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="vector_8hpp_source.html">vector.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< typename <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><br class="typebreak"/>
-< SCALARTYPE >::ResultType > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aed985c700866b1bae61cb8bcd5d322fe">value_type</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">vcl_size_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">vcl_ptrdiff_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a1d7ed47a15fea60d02986112826f40bc">difference_type</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a5b0cecdbbf962357b5dc5f79dcae2d66">const_iterator</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a589223a5e682b4a61d57bb8742b1cec9">iterator</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383">vector</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Default constructor in order to be compatible with various containers.  <a href="#ad81d0c53b73688726d9e7da6fafe0383"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a37af05b711e0806bd57ae6e4adfeb46e">vector</a> (<a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> vec_size)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An explicit constructor for the vector, allocating the given amount of memory (plus a padding specified by 'ALIGNMENT').  <a href="#a37af05b711e0806bd57ae6e4adfeb46e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ae8ca03c5bcafbb1520e7382e8ac0050d">vector</a> (cl_mem existing_mem, <a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> vec_size)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a vector from existing OpenCL memory.  <a href="#ae8ca03c5bcafbb1520e7382e8ac0050d"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a90f2d2832c55e1631a0cf00bc61c9a3d">vector</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#abcd7469cb88bdf2e0f146b73ef567887">vector</a> (const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The copy constructor.  <a href="#abcd7469cb88bdf2e0f146b73ef567887"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c">operator=</a> (const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment operator. This vector is resized if 'vec' is of a different size.  <a href="#a1442541c47d33407abda6838a344c49c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ac4770655192f11ccca15bbd39219d725">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = alpha * v2, where alpha is a GPU scalar.  <a href="#ac4770655192f11ccca15bbd39219d725"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ae91c07bfd48f22c8ea54d42583c3611f">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = alpha * v2, where alpha is a CPU scalar.  <a href="#ae91c07bfd48f22c8ea54d42583c3611f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a2cb54ea322ec4f89df8b798350c84f1b">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_div > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = v2 / alpha, where alpha is a GPU scalar.  <a href="#a2cb54ea322ec4f89df8b798350c84f1b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a4a926e47e610c69c69d0f37a858cc69b">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const SCALARTYPE, op_div > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = v2 / alpha, where alpha is a CPU scalar.  <a href="#a4a926e47e610c69c69d0f37a858cc69b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a77b68e4bfde82a92f70728c40b652f03">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_add > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = v2 + v3.  <a href="#a77b68e4bfde82a92f70728c40b652f03"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a5bcfcbcb1d03f00ee8942a39e881207f">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_sub > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = v2 - v3.  <a href="#a5bcfcbcb1d03f00ee8942a39e881207f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a276192f199fd2252c7296bd57dbb1a39">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a dense matrix.  <a href="#a276192f199fd2252c7296bd57dbb1a39"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.  <a href="#a8a3356317aca3d60689911cc206b35d3"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.  <a href="#afdab89a0944ccdbe2ada1691060d7a68"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.  <a href="#adb89283433101dc99dc1050471499973"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.  <a href="#a5363d6592a73924f46f913b12f039ba1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a600a2a87ea67dfaaacfe63252c558a70">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 = trans(A) * v2, where v1, v2 are vectors and A is a dense matrix.  <a href="#a600a2a87ea67dfaaacfe63252c558a70"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a7170c99b16798d529af0325845639839">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 += trans(A) * v2, where v1, v2 are vectors and A is a dense matrix.  <a href="#a7170c99b16798d529af0325845639839"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a42a2bea8b973e703dc74e7ad0a21ad75">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 -= trans(A) * v2, where v1, v2 are vectors and A is a dense matrix.  <a href="#a42a2bea8b973e703dc74e7ad0a21ad75"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#afa36924cb9eece8efec2a62996e0f97a">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 + trans(A) * v2, where v1, v2 are vectors and A is a dense matrix.  <a href="#afa36924cb9eece8efec2a62996e0f97a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a4ac366eca51e40271f505b2996173613">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 - trans(A) * v2, where v1, v2 are vectors and A is a dense matrix.  <a href="#a4ac366eca51e40271f505b2996173613"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a2a7d2a919692ddc123ebd1452d374d5b">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#a2a7d2a919692ddc123ebd1452d374d5b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a6a36ddeab9a741c125c9d9d4d49f0e77">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#a6a36ddeab9a741c125c9d9d4d49f0e77"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a26f886c3b1df2ffa849ad9ab2e9e4fe2">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#a26f886c3b1df2ffa849ad9ab2e9e4fe2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a34b711b607f3675c773b2c4db62b2c67">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#a34b711b607f3675c773b2c4db62b2c67"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aaa7f595ff02bf1124f5c5e45fad08896">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#aaa7f595ff02bf1124f5c5e45fad08896"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a0acfd903198ff1e36ff67f62d67d7189">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>.  <a href="#a0acfd903198ff1e36ff67f62d67d7189"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a558d5da8e439a7fac22354b25b84a458">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>.  <a href="#a558d5da8e439a7fac22354b25b84a458"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a828077e1b1da533e174a7194f8a9210b">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>.  <a href="#a828077e1b1da533e174a7194f8a9210b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a625df272798e5484b2b99645c164f618">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>.  <a href="#a625df272798e5484b2b99645c164f618"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a38a33c6969ccc333a994d55cce743af9">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>.  <a href="#a38a33c6969ccc333a994d55cce743af9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c">resize</a> (<a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> new_size, bool preserve=true)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'.  <a href="#ac3afd1fbe76f7fed3e2b36b1297fa42c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03">operator()</a> (<a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Read-write access to a single element of the vector.  <a href="#ad39a7d06af546a8df947a8a36722eb03"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#af8f3f9c5c359c354201a0e4386b4cfcc">operator[]</a> (<a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Read-write access to a single element of the vector.  <a href="#af8f3f9c5c359c354201a0e4386b4cfcc"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a2de1bb775af4a87ce0b792154700c414">operator()</a> (<a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Read access to a single element of the vector.  <a href="#a2de1bb775af4a87ce0b792154700c414"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#acd1666d8bd98191443b3b62f0944a822">operator[]</a> (<a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Read access to a single element of the vector.  <a href="#acd1666d8bd98191443b3b62f0944a822"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a87bf465ad5a49ddd749505935d931db3">operator+=</a> (const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a vector.  <a href="#a87bf465ad5a49ddd749505935d931db3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#abe21f33c50e397aeefd7d075ce85d259">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a GPU scalar.  <a href="#abe21f33c50e397aeefd7d075ce85d259"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a7aeced050a63cc0314a993d12330d2ab">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a GPU scalar.  <a href="#a7aeced050a63cc0314a993d12330d2ab"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aeddc9d15b96937b89a6122abfbb4a4b0">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a CPU scalar.  <a href="#aeddc9d15b96937b89a6122abfbb4a4b0"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a2f8d78b1c904f274f2c50ec90f9a944e">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a CPU scalar.  <a href="#a2f8d78b1c904f274f2c50ec90f9a944e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a478742d85955289d0fef99d591d92771">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_div > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a GPU scalar.  <a href="#a478742d85955289d0fef99d591d92771"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aae3c76bbb1a3e6023b1af706ce981b49">operator-=</a> (const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a vector.  <a href="#aae3c76bbb1a3e6023b1af706ce981b49"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aea40ee2f758aa6fc99ce786efc8ef02c">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a GPU scalar.  <a href="#aea40ee2f758aa6fc99ce786efc8ef02c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#afb6860261a249d443031fcaa6940806a">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a GPU scalar.  <a href="#afb6860261a249d443031fcaa6940806a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a067bc8f3532c3d398671ede297159c18">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a CPU scalar.  <a href="#a067bc8f3532c3d398671ede297159c18"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a32ebaa055c897b1a6f3ea49e3b7022dd">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a CPU scalar.  <a href="#a32ebaa055c897b1a6f3ea49e3b7022dd"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a983376d820f950a2bc06d987a604c9b3">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_div > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a CPU scalar.  <a href="#a983376d820f950a2bc06d987a604c9b3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#adad7d33d0bb340be923ded4b7050867b">operator*=</a> (SCALARTYPE val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales this vector by a CPU scalar value.  <a href="#adad7d33d0bb340be923ded4b7050867b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a32d20bcbd10c909d2041c30cc942f080">operator*=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &gpu_val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales this vector by a GPU scalar value.  <a href="#a32d20bcbd10c909d2041c30cc942f080"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#af6ba5ebda72ab395ad1a1e5504088976">operator/=</a> (SCALARTYPE val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales this vector by a CPU scalar value.  <a href="#af6ba5ebda72ab395ad1a1e5504088976"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a3ffe49fc9f161ce2ea1fb130cd0195ca">operator/=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &gpu_val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales this vector by a CPU scalar value.  <a href="#a3ffe49fc9f161ce2ea1fb130cd0195ca"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a87db4b1001dea6bfc9b47d1e07028552">operator+</a> (const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors.  <a href="#a87db4b1001dea6bfc9b47d1e07028552"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#abf44eeb0d6aebf7fac80026eb2aaff11">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a GPU scalar.  <a href="#abf44eeb0d6aebf7fac80026eb2aaff11"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ae642a9b7a6e50936342bced1c2cc2aa9">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a GPU scalar.  <a href="#ae642a9b7a6e50936342bced1c2cc2aa9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a8c0fb94a7256a1afe4c16c4d54db7316">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a CPU scalar.  <a href="#a8c0fb94a7256a1afe4c16c4d54db7316"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a735ecd24c5432dbf339e9bf6a4bfefb6">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a CPU scalar.  <a href="#a735ecd24c5432dbf339e9bf6a4bfefb6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ab4b953de766b713cf2016e69b75233de">operator-</a> (const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of result = v1 - v2.  <a href="#ab4b953de766b713cf2016e69b75233de"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a1f057bb893f457b22ddd46aecc973469">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a GPU scalar.  <a href="#a1f057bb893f457b22ddd46aecc973469"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ab6a6205580e81d2e2e477f55b75f8645">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a GPU scalar.  <a href="#ab6a6205580e81d2e2e477f55b75f8645"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a7b6c480cbd1da3812d587a729983fc4f">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a CPU scalar.  <a href="#a7b6c480cbd1da3812d587a729983fc4f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a92159381dc559d8caac28099589b85cf">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a CPU scalar.  <a href="#a92159381dc559d8caac28099589b85cf"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const SCALARTYPE, op_prod > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a0273e98b77b6a89e60116358fe27cc9d">operator*</a> (SCALARTYPE value) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales the vector by a CPU scalar 'alpha' and returns an expression template.  <a href="#a0273e98b77b6a89e60116358fe27cc9d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE ><br class="typebreak"/>
-, op_prod > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a3ff0ebfa2e17bab4dbad38c0cd50d948">operator*</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &value) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales the vector by a GPU scalar 'alpha' and returns an expression template.  <a href="#a3ff0ebfa2e17bab4dbad38c0cd50d948"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const SCALARTYPE, op_div > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ad87b95d3c182effc15136d7c610200af">operator/</a> (SCALARTYPE value) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales the vector by a CPU scalar 'alpha' and returns an expression template.  <a href="#ad87b95d3c182effc15136d7c610200af"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE ><br class="typebreak"/>
-, op_div > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ad309219e4080cb6a6427f3321d159b2c">operator/</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &value) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales the vector by a GPU scalar 'alpha' and returns an expression template.  <a href="#ad309219e4080cb6a6427f3321d159b2c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__iterator.html">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8">begin</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an iterator pointing to the beginning of the vector (STL like).  <a href="#ad69bd11391be1a1dba5c8202259664f8"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__iterator.html">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f">end</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an iterator pointing to the end of the vector (STL like).  <a href="#acad38d52497a975bfb6f2f6acd76631f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aa4b02d4f1a8500fb07a551069060709f">begin</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a const-iterator pointing to the beginning of the vector (STL like).  <a href="#aa4b02d4f1a8500fb07a551069060709f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a350132543d80a1c1e5be844e6d2878ea">end</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a const-iterator pointing to the end of the vector (STL like).  <a href="#a350132543d80a1c1e5be844e6d2878ea"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#af5a080ddc0576cfba4c7494ff8eccb09">swap</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the entries of the two vectors.  <a href="#af5a080ddc0576cfba4c7494ff8eccb09"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a3f3c31234d9a1c823383bd6e8c2c9222">fast_swap</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the handles of two vectors by swapping the OpenCL handles only, no data copy.  <a href="#a3f3c31234d9a1c823383bd6e8c2c9222"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7">size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the length of the vector (cf. std::vector).  <a href="#a503ab01f6c0142145d3434f6924714e7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a0ab5ce862c0331d9e45a6e1774fca131">max_size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum possible size of the vector, which is given by 128 MByte due to limitations by OpenCL.  <a href="#a0ab5ce862c0331d9e45a6e1774fca131"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c">internal_size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the internal length of the vector, which is given by <a class="el" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size()</a> plus the extra memory due to padding the memory with zeros up to a multiple of 'ALIGNMENT'.  <a href="#aa50eb28af8d336f420b4de7b67ce738c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a3f37b042a1e7cd4bd38fc564de81f0da">empty</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true is the size is zero.  <a href="#a3f37b042a1e7cd4bd38fc564de81f0da"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL memory <a class="el" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">viennacl::ocl::handle</a>. Typically used for launching compute viennacl::ocl::kernels.  <a href="#abe419a13116160fd12b66f47c5180e5c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Resets all entries to zero. Does not change the size of the vector.  <a href="#ac8bb3912a3ce86b15842e79d0b421204"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a4989aaec23a5611beaa87e1653824aa6">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = A * v2, where A is a matrix.  <a href="#a4989aaec23a5611beaa87e1653824aa6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a9591491bc69f66f82202a86f054ef7ac">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = A * v2, where A is a matrix.  <a href="#a9591491bc69f66f82202a86f054ef7ac"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F, unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#abf65c6fc9600970e4ac00b693e0d04fb">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = A * v2, where A is a matrix.  <a href="#abf65c6fc9600970e4ac00b693e0d04fb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F, unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aa34adb8d02e43797f23d78bd0fcb7ce9">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = A * v2, where A is a matrix.  <a href="#aa34adb8d02e43797f23d78bd0fcb7ce9"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, unsigned int ALIGNMENT><br/>
- class viennacl::vector< SCALARTYPE, ALIGNMENT ></h3>
-
-<p>A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::vector. </p>
-<p>This is the basic vector type of ViennaCL. It is similar to std::vector and boost::numeric::ublas::vector and supports various linear algebra operations. By default, the internal length of the vector is padded to a multiple of 'ALIGNMENT' in order to speed up several GPU viennacl::ocl::kernels.</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>The floating point type, either 'float' or 'double' </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>ALIGNMENT</em> </td><td>The internal memory size is given by (<a class="el" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size()</a>/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory. </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a5b0cecdbbf962357b5dc5f79dcae2d66"></a><!-- doxytag: member="viennacl::vector::const_iterator" ref="a5b0cecdbbf962357b5dc5f79dcae2d66" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a><SCALARTYPE, ALIGNMENT> <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_iterator</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1d7ed47a15fea60d02986112826f40bc"></a><!-- doxytag: member="viennacl::vector::difference_type" ref="a1d7ed47a15fea60d02986112826f40bc" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">vcl_ptrdiff_t</a> <a class="el" href="classviennacl_1_1vector.html#a1d7ed47a15fea60d02986112826f40bc">difference_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a589223a5e682b4a61d57bb8742b1cec9"></a><!-- doxytag: member="viennacl::vector::iterator" ref="a589223a5e682b4a61d57bb8742b1cec9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a><SCALARTYPE, ALIGNMENT> <a class="el" href="classviennacl_1_1vector__iterator.html">iterator</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8e2cc70e5cd203262fe8270613f303ec"></a><!-- doxytag: member="viennacl::vector::size_type" ref="a8e2cc70e5cd203262fe8270613f303ec" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">vcl_size_t</a> <a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aed985c700866b1bae61cb8bcd5d322fe"></a><!-- doxytag: member="viennacl::vector::value_type" ref="aed985c700866b1bae61cb8bcd5d322fe" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a><typename <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><SCALARTYPE>::ResultType> <a class="el" href="classviennacl_1_1scalar.html">value_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ad81d0c53b73688726d9e7da6fafe0383"></a><!-- doxytag: member="viennacl::vector::vector" ref="ad81d0c53b73688726d9e7da6fafe0383" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Default constructor in order to be compatible with various containers. </p>
-
-</div>
-</div>
-<a class="anchor" id="a37af05b711e0806bd57ae6e4adfeb46e"></a><!-- doxytag: member="viennacl::vector::vector" ref="a37af05b711e0806bd57ae6e4adfeb46e" args="(size_type vec_size)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
-          <td class="paramname"> <em>vec_size</em></td>
-          <td> ) </td>
-          <td><code> [inline, explicit]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>An explicit constructor for the vector, allocating the given amount of memory (plus a padding specified by 'ALIGNMENT'). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec_size</em> </td><td>The length (i.e. size) of the vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae8ca03c5bcafbb1520e7382e8ac0050d"></a><!-- doxytag: member="viennacl::vector::vector" ref="ae8ca03c5bcafbb1520e7382e8ac0050d" args="(cl_mem existing_mem, size_type vec_size)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a> </td>
-          <td>(</td>
-          <td class="paramtype">cl_mem </td>
-          <td class="paramname"> <em>existing_mem</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
-          <td class="paramname"> <em>vec_size</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, explicit]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Create a vector from existing OpenCL memory. </p>
-<p>Note: The provided memory must take an eventual ALIGNMENT into account, i.e. existing_mem must be at least of size <a class="el" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size()</a>! This is trivially the case with the default alignment, but should be considered when using vector<> with an alignment parameter not equal to 1.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>existing_mem</em> </td><td>An OpenCL handle representing the memory </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec_size</em> </td><td>The size of the vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a90f2d2832c55e1631a0cf00bc61c9a3d"></a><!-- doxytag: member="viennacl::vector::vector" ref="a90f2d2832c55e1631a0cf00bc61c9a3d" args="(vector_expression< LHS, RHS, OP > const &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abcd7469cb88bdf2e0f146b73ef567887"></a><!-- doxytag: member="viennacl::vector::vector" ref="abcd7469cb88bdf2e0f146b73ef567887" args="(const vector< SCALARTYPE, ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a> </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>The copy constructor. </p>
-<p>Entries of 'vec' are directly copied to this vector. </p>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ad69bd11391be1a1dba5c8202259664f8"></a><!-- doxytag: member="viennacl::vector::begin" ref="ad69bd11391be1a1dba5c8202259664f8" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__iterator.html">iterator</a> begin </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns an iterator pointing to the beginning of the vector (STL like). </p>
-
-</div>
-</div>
-<a class="anchor" id="aa4b02d4f1a8500fb07a551069060709f"></a><!-- doxytag: member="viennacl::vector::begin" ref="aa4b02d4f1a8500fb07a551069060709f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_iterator</a> begin </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a const-iterator pointing to the beginning of the vector (STL like). </p>
-
-</div>
-</div>
-<a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a><!-- doxytag: member="viennacl::vector::clear" ref="ac8bb3912a3ce86b15842e79d0b421204" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void clear </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Resets all entries to zero. Does not change the size of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3f37b042a1e7cd4bd38fc564de81f0da"></a><!-- doxytag: member="viennacl::vector::empty" ref="a3f37b042a1e7cd4bd38fc564de81f0da" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool empty </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns true is the size is zero. </p>
-
-</div>
-</div>
-<a class="anchor" id="a350132543d80a1c1e5be844e6d2878ea"></a><!-- doxytag: member="viennacl::vector::end" ref="a350132543d80a1c1e5be844e6d2878ea" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_iterator</a> end </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a const-iterator pointing to the end of the vector (STL like). </p>
-
-</div>
-</div>
-<a class="anchor" id="acad38d52497a975bfb6f2f6acd76631f"></a><!-- doxytag: member="viennacl::vector::end" ref="acad38d52497a975bfb6f2f6acd76631f" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__iterator.html">iterator</a> end </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns an iterator pointing to the end of the vector (STL like). </p>
-
-</div>
-</div>
-<a class="anchor" id="a3f3c31234d9a1c823383bd6e8c2c9222"></a><!-- doxytag: member="viennacl::vector::fast_swap" ref="a3f3c31234d9a1c823383bd6e8c2c9222" args="(vector< SCALARTYPE, ALIGNMENT > &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& fast_swap </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Swaps the handles of two vectors by swapping the OpenCL handles only, no data copy. </p>
-
-</div>
-</div>
-<a class="anchor" id="abe419a13116160fd12b66f47c5180e5c"></a><!-- doxytag: member="viennacl::vector::handle" ref="abe419a13116160fd12b66f47c5180e5c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL memory <a class="el" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">viennacl::ocl::handle</a>. Typically used for launching compute viennacl::ocl::kernels. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa50eb28af8d336f420b4de7b67ce738c"></a><!-- doxytag: member="viennacl::vector::internal_size" ref="aa50eb28af8d336f420b4de7b67ce738c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> internal_size </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the internal length of the vector, which is given by <a class="el" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size()</a> plus the extra memory due to padding the memory with zeros up to a multiple of 'ALIGNMENT'. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0ab5ce862c0331d9e45a6e1774fca131"></a><!-- doxytag: member="viennacl::vector::max_size" ref="a0ab5ce862c0331d9e45a6e1774fca131" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> max_size </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum possible size of the vector, which is given by 128 MByte due to limitations by OpenCL. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad39a7d06af546a8df947a8a36722eb03"></a><!-- doxytag: member="viennacl::vector::operator()" ref="ad39a7d06af546a8df947a8a36722eb03" args="(size_type index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a><SCALARTYPE> operator() </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
-          <td class="paramname"> <em>index</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Read-write access to a single element of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2de1bb775af4a87ce0b792154700c414"></a><!-- doxytag: member="viennacl::vector::operator()" ref="a2de1bb775af4a87ce0b792154700c414" args="(size_type index) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE> operator() </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
-          <td class="paramname"> <em>index</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Read access to a single element of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0273e98b77b6a89e60116358fe27cc9d"></a><!-- doxytag: member="viennacl::vector::operator*" ref="a0273e98b77b6a89e60116358fe27cc9d" args="(SCALARTYPE value) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>, const SCALARTYPE, op_prod> operator* </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>value</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales the vector by a CPU scalar 'alpha' and returns an expression template. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3ff0ebfa2e17bab4dbad38c0cd50d948"></a><!-- doxytag: member="viennacl::vector::operator*" ref="a3ff0ebfa2e17bab4dbad38c0cd50d948" args="(scalar< SCALARTYPE > const &value) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE>, op_prod> operator* </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>value</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales the vector by a GPU scalar 'alpha' and returns an expression template. </p>
-
-</div>
-</div>
-<a class="anchor" id="adad7d33d0bb340be923ded4b7050867b"></a><!-- doxytag: member="viennacl::vector::operator*=" ref="adad7d33d0bb340be923ded4b7050867b" args="(SCALARTYPE val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator*= </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>val</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales this vector by a CPU scalar value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a32d20bcbd10c909d2041c30cc942f080"></a><!-- doxytag: member="viennacl::vector::operator*=" ref="a32d20bcbd10c909d2041c30cc942f080" args="(scalar< SCALARTYPE > const &gpu_val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator*= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>gpu_val</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales this vector by a GPU scalar value. </p>
-
-</div>
-</div>
-<a class="anchor" id="afa36924cb9eece8efec2a62996e0f97a"></a><!-- doxytag: member="viennacl::vector::operator+" ref="afa36924cb9eece8efec2a62996e0f97a" args="(const vector_expression< const matrix_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator+ </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 + trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation 'result = v1 + A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a34b711b607f3675c773b2c4db62b2c67"></a><!-- doxytag: member="viennacl::vector::operator+" ref="a34b711b607f3675c773b2c4db62b2c67" args="(const vector_expression< const compressed_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator+ </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>Implementation of the operation 'result = v1 + A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a87db4b1001dea6bfc9b47d1e07028552"></a><!-- doxytag: member="viennacl::vector::operator+" ref="a87db4b1001dea6bfc9b47d1e07028552" args="(const vector< SCALARTYPE, ALIGNMENT > &vec) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator+ </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors. </p>
-
-</div>
-</div>
-<a class="anchor" id="abf44eeb0d6aebf7fac80026eb2aaff11"></a><!-- doxytag: member="viennacl::vector::operator+" ref="abf44eeb0d6aebf7fac80026eb2aaff11" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator+ </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae642a9b7a6e50936342bced1c2cc2aa9"></a><!-- doxytag: member="viennacl::vector::operator+" ref="ae642a9b7a6e50936342bced1c2cc2aa9" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator+ </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8c0fb94a7256a1afe4c16c4d54db7316"></a><!-- doxytag: member="viennacl::vector::operator+" ref="a8c0fb94a7256a1afe4c16c4d54db7316" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator+ </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a735ecd24c5432dbf339e9bf6a4bfefb6"></a><!-- doxytag: member="viennacl::vector::operator+" ref="a735ecd24c5432dbf339e9bf6a4bfefb6" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator+ </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="adb89283433101dc99dc1050471499973"></a><!-- doxytag: member="viennacl::vector::operator+" ref="adb89283433101dc99dc1050471499973" args="(const vector_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator+ </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation 'result = v1 + A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a625df272798e5484b2b99645c164f618"></a><!-- doxytag: member="viennacl::vector::operator+" ref="a625df272798e5484b2b99645c164f618" args="(const vector_expression< const coordinate_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator+ </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<p>Implementation of the operation 'result = v1 + A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a87bf465ad5a49ddd749505935d931db3"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a87bf465ad5a49ddd749505935d931db3" args="(const vector< SCALARTYPE, ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8a3356317aca3d60689911cc206b35d3"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a8a3356317aca3d60689911cc206b35d3" args="(const vector_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation v1 += A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="abe21f33c50e397aeefd7d075ce85d259"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="abe21f33c50e397aeefd7d075ce85d259" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7aeced050a63cc0314a993d12330d2ab"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a7aeced050a63cc0314a993d12330d2ab" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6a36ddeab9a741c125c9d9d4d49f0e77"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a6a36ddeab9a741c125c9d9d4d49f0e77" args="(const vector_expression< const compressed_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>Implementation of the operation v1 += A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aeddc9d15b96937b89a6122abfbb4a4b0"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="aeddc9d15b96937b89a6122abfbb4a4b0" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2f8d78b1c904f274f2c50ec90f9a944e"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a2f8d78b1c904f274f2c50ec90f9a944e" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a478742d85955289d0fef99d591d92771"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a478742d85955289d0fef99d591d92771" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_div > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_div > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7170c99b16798d529af0325845639839"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a7170c99b16798d529af0325845639839" args="(const vector_expression< const matrix_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 += trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation v1 += A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a558d5da8e439a7fac22354b25b84a458"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a558d5da8e439a7fac22354b25b84a458" args="(const vector_expression< const coordinate_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator+= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<p>Implementation of the operation v1 += A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4ac366eca51e40271f505b2996173613"></a><!-- doxytag: member="viennacl::vector::operator-" ref="a4ac366eca51e40271f505b2996173613" args="(const vector_expression< const matrix_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator- </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 - trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation 'result = v1 - A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab4b953de766b713cf2016e69b75233de"></a><!-- doxytag: member="viennacl::vector::operator-" ref="ab4b953de766b713cf2016e69b75233de" args="(const vector< SCALARTYPE, ALIGNMENT > &vec) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator- </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of result = v1 - v2. </p>
-
-</div>
-</div>
-<a class="anchor" id="aaa7f595ff02bf1124f5c5e45fad08896"></a><!-- doxytag: member="viennacl::vector::operator-" ref="aaa7f595ff02bf1124f5c5e45fad08896" args="(const vector_expression< const compressed_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator- </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>Implementation of the operation 'result = v1 - A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1f057bb893f457b22ddd46aecc973469"></a><!-- doxytag: member="viennacl::vector::operator-" ref="a1f057bb893f457b22ddd46aecc973469" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator- </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a92159381dc559d8caac28099589b85cf"></a><!-- doxytag: member="viennacl::vector::operator-" ref="a92159381dc559d8caac28099589b85cf" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator- </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a38a33c6969ccc333a994d55cce743af9"></a><!-- doxytag: member="viennacl::vector::operator-" ref="a38a33c6969ccc333a994d55cce743af9" args="(const vector_expression< const coordinate_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator- </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<p>Implementation of the operation 'result = v1 - A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab6a6205580e81d2e2e477f55b75f8645"></a><!-- doxytag: member="viennacl::vector::operator-" ref="ab6a6205580e81d2e2e477f55b75f8645" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator- </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7b6c480cbd1da3812d587a729983fc4f"></a><!-- doxytag: member="viennacl::vector::operator-" ref="a7b6c480cbd1da3812d587a729983fc4f" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator- </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5363d6592a73924f46f913b12f039ba1"></a><!-- doxytag: member="viennacl::vector::operator-" ref="a5363d6592a73924f46f913b12f039ba1" args="(const vector_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator- </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation 'result = v1 - A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a067bc8f3532c3d398671ede297159c18"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="a067bc8f3532c3d398671ede297159c18" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="aae3c76bbb1a3e6023b1af706ce981b49"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="aae3c76bbb1a3e6023b1af706ce981b49" args="(const vector< SCALARTYPE, ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="a32ebaa055c897b1a6f3ea49e3b7022dd"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="a32ebaa055c897b1a6f3ea49e3b7022dd" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="afdab89a0944ccdbe2ada1691060d7a68"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="afdab89a0944ccdbe2ada1691060d7a68" args="(const vector_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation v1 -= A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aea40ee2f758aa6fc99ce786efc8ef02c"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="aea40ee2f758aa6fc99ce786efc8ef02c" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a26f886c3b1df2ffa849ad9ab2e9e4fe2"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="a26f886c3b1df2ffa849ad9ab2e9e4fe2" args="(const vector_expression< const compressed_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>Implementation of the operation v1 -= A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a983376d820f950a2bc06d987a604c9b3"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="a983376d820f950a2bc06d987a604c9b3" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_div > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_div > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a828077e1b1da533e174a7194f8a9210b"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="a828077e1b1da533e174a7194f8a9210b" args="(const vector_expression< const coordinate_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<p>Implementation of the operation v1 -= A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afb6860261a249d443031fcaa6940806a"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="afb6860261a249d443031fcaa6940806a" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a42a2bea8b973e703dc74e7ad0a21ad75"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="a42a2bea8b973e703dc74e7ad0a21ad75" args="(const vector_expression< const matrix_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator-= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 -= trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation v1 -= A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad309219e4080cb6a6427f3321d159b2c"></a><!-- doxytag: member="viennacl::vector::operator/" ref="ad309219e4080cb6a6427f3321d159b2c" args="(scalar< SCALARTYPE > const &value) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE>, op_div> operator/ </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>value</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales the vector by a GPU scalar 'alpha' and returns an expression template. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad87b95d3c182effc15136d7c610200af"></a><!-- doxytag: member="viennacl::vector::operator/" ref="ad87b95d3c182effc15136d7c610200af" args="(SCALARTYPE value) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>, const SCALARTYPE, op_div> operator/ </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>value</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales the vector by a CPU scalar 'alpha' and returns an expression template. </p>
-
-</div>
-</div>
-<a class="anchor" id="af6ba5ebda72ab395ad1a1e5504088976"></a><!-- doxytag: member="viennacl::vector::operator/=" ref="af6ba5ebda72ab395ad1a1e5504088976" args="(SCALARTYPE val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator/= </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>val</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales this vector by a CPU scalar value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3ffe49fc9f161ce2ea1fb130cd0195ca"></a><!-- doxytag: member="viennacl::vector::operator/=" ref="a3ffe49fc9f161ce2ea1fb130cd0195ca" args="(scalar< SCALARTYPE > const &gpu_val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator/= </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>gpu_val</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales this vector by a CPU scalar value. </p>
-
-</div>
-</div>
-<a class="anchor" id="abf65c6fc9600970e4ac00b693e0d04fb"></a><!-- doxytag: member="viennacl::vector::operator=" ref="abf65c6fc9600970e4ac00b693e0d04fb" args="(const viennacl::vector_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const viennacl::vector< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = A * v2, where A is a matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae91c07bfd48f22c8ea54d42583c3611f"></a><!-- doxytag: member="viennacl::vector::operator=" ref="ae91c07bfd48f22c8ea54d42583c3611f" args="(const vector_expression< VectorType, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const SCALARTYPE, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = alpha * v2, where alpha is a CPU scalar. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a5bcfcbcb1d03f00ee8942a39e881207f"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a5bcfcbcb1d03f00ee8942a39e881207f" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, vector< SCALARTYPE, ALIGNMENT >, op_sub > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_sub > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = v2 - v3. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aa34adb8d02e43797f23d78bd0fcb7ce9"></a><!-- doxytag: member="viennacl::vector::operator=" ref="aa34adb8d02e43797f23d78bd0fcb7ce9" args="(const viennacl::vector_expression< const matrix_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const viennacl::vector< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = A * v2, where A is a matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a77b68e4bfde82a92f70728c40b652f03"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a77b68e4bfde82a92f70728c40b652f03" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, vector< SCALARTYPE, ALIGNMENT >, op_add > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_add > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = v2 + v3. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4989aaec23a5611beaa87e1653824aa6"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a4989aaec23a5611beaa87e1653824aa6" args="(const viennacl::vector_expression< const compressed_matrix< SCALARTYPE, MAT_ALIGNMENT >, const viennacl::vector< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = A * v2, where A is a matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2a7d2a919692ddc123ebd1452d374d5b"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a2a7d2a919692ddc123ebd1452d374d5b" args="(const vector_expression< const compressed_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a276192f199fd2252c7296bd57dbb1a39"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a276192f199fd2252c7296bd57dbb1a39" args="(const vector_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0acfd903198ff1e36ff67f62d67d7189"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a0acfd903198ff1e36ff67f62d67d7189" args="(const vector_expression< const coordinate_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ac4770655192f11ccca15bbd39219d725"></a><!-- doxytag: member="viennacl::vector::operator=" ref="ac4770655192f11ccca15bbd39219d725" args="(const vector_expression< VectorType, const scalar< SCALARTYPE >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = alpha * v2, where alpha is a GPU scalar. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9591491bc69f66f82202a86f054ef7ac"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a9591491bc69f66f82202a86f054ef7ac" args="(const viennacl::vector_expression< const coordinate_matrix< SCALARTYPE, MAT_ALIGNMENT >, const viennacl::vector< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = A * v2, where A is a matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a600a2a87ea67dfaaacfe63252c558a70"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a600a2a87ea67dfaaacfe63252c558a70" args="(const vector_expression< const matrix_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 = trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1442541c47d33407abda6838a344c49c"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a1442541c47d33407abda6838a344c49c" args="(const vector< SCALARTYPE, ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Assignment operator. This vector is resized if 'vec' is of a different size. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4a926e47e610c69c69d0f37a858cc69b"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a4a926e47e610c69c69d0f37a858cc69b" args="(const vector_expression< VectorType, const SCALARTYPE, op_div > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const SCALARTYPE, op_div > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = v2 / alpha, where alpha is a CPU scalar. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2cb54ea322ec4f89df8b798350c84f1b"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a2cb54ea322ec4f89df8b798350c84f1b" args="(const vector_expression< VectorType, const scalar< SCALARTYPE >, op_div > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_div > & </td>
-          <td class="paramname"> <em>proxy</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = v2 / alpha, where alpha is a GPU scalar. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="acd1666d8bd98191443b3b62f0944a822"></a><!-- doxytag: member="viennacl::vector::operator[]" ref="acd1666d8bd98191443b3b62f0944a822" args="(size_type index) const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE> operator[] </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
-          <td class="paramname"> <em>index</em></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Read access to a single element of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="af8f3f9c5c359c354201a0e4386b4cfcc"></a><!-- doxytag: member="viennacl::vector::operator[]" ref="af8f3f9c5c359c354201a0e4386b4cfcc" args="(size_type index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a><SCALARTYPE> operator[] </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
-          <td class="paramname"> <em>index</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Read-write access to a single element of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac3afd1fbe76f7fed3e2b36b1297fa42c"></a><!-- doxytag: member="viennacl::vector::resize" ref="ac3afd1fbe76f7fed3e2b36b1297fa42c" args="(size_type new_size, bool preserve=true)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void resize </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
-          <td class="paramname"> <em>new_size</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">bool </td>
-          <td class="paramname"> <em>preserve</em> = <code>true</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>new_size</em> </td><td>The new size of the vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>preserve</em> </td><td>If true, old entries of the vector are preserved, otherwise eventually discarded. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a503ab01f6c0142145d3434f6924714e7"></a><!-- doxytag: member="viennacl::vector::size" ref="a503ab01f6c0142145d3434f6924714e7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> size </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the length of the vector (cf. std::vector). </p>
-
-</div>
-</div>
-<a class="anchor" id="af5a080ddc0576cfba4c7494ff8eccb09"></a><!-- doxytag: member="viennacl::vector::swap" ref="af5a080ddc0576cfba4c7494ff8eccb09" args="(vector< SCALARTYPE, ALIGNMENT > &other)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& swap </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>other</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Swaps the entries of the two vectors. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following files:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="vector_8hpp_source.html">vector.hpp</a></li>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="compressed__matrix__operations_8hpp_source.html">compressed_matrix_operations.hpp</a></li>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="coordinate__matrix__operations_8hpp_source.html">coordinate_matrix_operations.hpp</a></li>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="matrix__operations_8hpp_source.html">matrix_operations.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1vector__expression.html b/doc/doxygen/html/classviennacl_1_1vector__expression.html
deleted file mode 100644
index 9aa0bc4..0000000
--- a/doc/doxygen/html/classviennacl_1_1vector__expression.html
+++ /dev/null
@@ -1,189 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector_expression< LHS, RHS, OP > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression< LHS, RHS, OP ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>vector_expression< LHS, RHS, OP > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::vector_expression" -->
-<p>An expression template class that represents a binary operation that yields a vector.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="vector_8hpp_source.html">vector.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">viennacl::tools::VECTOR_EXTRACTOR</a><br class="typebreak"/>
-< LHS, RHS >::ResultType </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067">VectorType</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Extracts the vector type from the two operands.  <a href="#a5db65f00c1e206d9129dcd7721e46067"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html#a47b51aeee8120fa441f37d71f56b12c7">vector_expression</a> (LHS &lhs, RHS &rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">LHS & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html#abb680866089de4e937ddc6ce6f1f1830">lhs</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get left hand side operand.  <a href="#abb680866089de4e937ddc6ce6f1f1830"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">RHS & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html#a563f5aecaa0755006225235e44a11a82">rhs</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get right hand side operand.  <a href="#a563f5aecaa0755006225235e44a11a82"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812">size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the size of the result vector.  <a href="#a90ca964ebcc1b02bbcde225edd49e812"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename LHS, typename RHS, typename OP><br/>
- class viennacl::vector_expression< LHS, RHS, OP ></h3>
-
-<p>An expression template class that represents a binary operation that yields a vector. </p>
-<p>In contrast to full expression templates as introduced by Veldhuizen, ViennaCL does not allow nested expressions. The reason is that this requires automated GPU <a class="el" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> generation, which then has to be compiles just-in-time. For performance-critical applications, one better writes the appropriate viennacl::ocl::kernels by hand.</p>
-<p>Assumption: dim(LHS) >= dim(RHS), where dim(scalar) = 0, dim(vector) = 1 and dim(matrix = 2)</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>LHS</em> </td><td>left hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>RHS</em> </td><td>right hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OP</em> </td><td>the operator </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a5db65f00c1e206d9129dcd7721e46067"></a><!-- doxytag: member="viennacl::vector_expression::VectorType" ref="a5db65f00c1e206d9129dcd7721e46067" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">viennacl::tools::VECTOR_EXTRACTOR</a><LHS, RHS>::ResultType <a class="el" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067">VectorType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Extracts the vector type from the two operands. </p>
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a47b51aeee8120fa441f37d71f56b12c7"></a><!-- doxytag: member="viennacl::vector_expression::vector_expression" ref="a47b51aeee8120fa441f37d71f56b12c7" args="(LHS &lhs, RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a> </td>
-          <td>(</td>
-          <td class="paramtype">LHS & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">RHS & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="abb680866089de4e937ddc6ce6f1f1830"></a><!-- doxytag: member="viennacl::vector_expression::lhs" ref="abb680866089de4e937ddc6ce6f1f1830" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">LHS& lhs </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Get left hand side operand. </p>
-
-</div>
-</div>
-<a class="anchor" id="a563f5aecaa0755006225235e44a11a82"></a><!-- doxytag: member="viennacl::vector_expression::rhs" ref="a563f5aecaa0755006225235e44a11a82" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">RHS& rhs </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Get right hand side operand. </p>
-
-</div>
-</div>
-<a class="anchor" id="a90ca964ebcc1b02bbcde225edd49e812"></a><!-- doxytag: member="viennacl::vector_expression::size" ref="a90ca964ebcc1b02bbcde225edd49e812" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int size </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the size of the result vector. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="vector_8hpp_source.html">vector.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1vector__iterator.html b/doc/doxygen/html/classviennacl_1_1vector__iterator.html
deleted file mode 100644
index 1c2ad48..0000000
--- a/doc/doxygen/html/classviennacl_1_1vector__iterator.html
+++ /dev/null
@@ -1,241 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector_iterator< SCALARTYPE, ALIGNMENT > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator< SCALARTYPE, ALIGNMENT ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>vector_iterator< SCALARTYPE, ALIGNMENT > Class Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::vector_iterator" --><!-- doxytag: inherits="viennacl::const_vector_iterator" -->
-<p>A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="vector_8hpp_source.html">vector.hpp</a>></code></p>
-<div class="dynheader">
-Inheritance diagram for vector_iterator< SCALARTYPE, ALIGNMENT >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="classviennacl_1_1vector__iterator.png" usemap="#vector_iterator< SCALARTYPE, ALIGNMENT >_map" alt=""/>
-  <map id="vector_iterator< SCALARTYPE, ALIGNMENT >_map" name="vector_iterator< SCALARTYPE, ALIGNMENT >_map">
-<area href="classviennacl_1_1const__vector__iterator.html" alt="const_vector_iterator< SCALARTYPE, ALIGNMENT >" shape="rect" coords="0,0,319,24"/>
-</map>
-</div>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#a870d4c95600057004f7f4022a87bcf2a">vector_iterator</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#a85d26854f63fc4da7b9f64f1dc1885b6">vector_iterator</a> (<a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > const &elements, unsigned int index)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#ab2e550b8717745228f53d20fa8cd4a88">vector_iterator</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec, cl_uint index)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor.  <a href="#ab2e550b8717745228f53d20fa8cd4a88"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#ad856d30aabbab284be47dcf0a38c0693">vector_iterator</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html">base_type</a> const &b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">base_type::value_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#aca896a4673a17317ad7068e8b769a6c8">operator*</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">handle</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#a327ab3f759dae4072bfabbef27d7a981">operator base_type</a> () const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, unsigned int ALIGNMENT><br/>
- class viennacl::vector_iterator< SCALARTYPE, ALIGNMENT ></h3>
-
-<p>A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!! </p>
-<p>Every dereference operation initiates a transfer from the GPU to the CPU. The overhead of such a transfer is around 50us, so 20.000 dereferences take one second. This is four orders of magnitude slower than similar dereferences on the CPU. However, increments and comparisons of iterators is as fast as for CPU types. If you need a fast iterator, copy the whole vector to the CPU first and iterate over the CPU object, e.g. std::vector<float> temp; copy(gpu_vector, temp); for (std::vector<float>::const_iterator iter = temp.begin(); iter != temp.end(); ++iter) { //do something } copy(temp, gpu_vector); Note that you may obtain inconsistent data if you manipulate entries of gpu_vector in the meanwhile.</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>The underlying floating point type (either float or double) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>ALIGNMENT</em> </td><td>Alignment of the underlying vector, </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a> </dd></dl>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a870d4c95600057004f7f4022a87bcf2a"></a><!-- doxytag: member="viennacl::vector_iterator::vector_iterator" ref="a870d4c95600057004f7f4022a87bcf2a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a85d26854f63fc4da7b9f64f1dc1885b6"></a><!-- doxytag: member="viennacl::vector_iterator::vector_iterator" ref="a85d26854f63fc4da7b9f64f1dc1885b6" args="(viennacl::ocl::handle< cl_mem > const &elements, unsigned int index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > const & </td>
-          <td class="paramname"> <em>elements</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>index</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab2e550b8717745228f53d20fa8cd4a88"></a><!-- doxytag: member="viennacl::vector_iterator::vector_iterator" ref="ab2e550b8717745228f53d20fa8cd4a88" args="(vector< SCALARTYPE, ALIGNMENT > &vec, cl_uint index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_uint </td>
-          <td class="paramname"> <em>index</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector over which to iterate </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>The starting index of the iterator </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad856d30aabbab284be47dcf0a38c0693"></a><!-- doxytag: member="viennacl::vector_iterator::vector_iterator" ref="ad856d30aabbab284be47dcf0a38c0693" args="(base_type const &b)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1const__vector__iterator.html">base_type</a> const & </td>
-          <td class="paramname"> <em>b</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a7e12b10e3e03ef763a5aa8a70eb21aa7"></a><!-- doxytag: member="viennacl::vector_iterator::handle" ref="a7e12b10e3e03ef763a5aa8a70eb21aa7" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem> handle </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a327ab3f759dae4072bfabbef27d7a981"></a><!-- doxytag: member="viennacl::vector_iterator::operator base_type" ref="a327ab3f759dae4072bfabbef27d7a981" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">operator <a class="el" href="classviennacl_1_1const__vector__iterator.html">base_type</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td> const<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aca896a4673a17317ad7068e8b769a6c8"></a><!-- doxytag: member="viennacl::vector_iterator::operator*" ref="aca896a4673a17317ad7068e8b769a6c8" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">base_type::value_type</a> operator* </td>
-          <td>(</td>
-          <td class="paramtype">void </td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="vector_8hpp_source.html">vector.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1vector__iterator.png b/doc/doxygen/html/classviennacl_1_1vector__iterator.png
deleted file mode 100644
index bbd1a30..0000000
Binary files a/doc/doxygen/html/classviennacl_1_1vector__iterator.png and /dev/null differ
diff --git a/doc/doxygen/html/closed.png b/doc/doxygen/html/closed.png
deleted file mode 100644
index b7d4bd9..0000000
Binary files a/doc/doxygen/html/closed.png and /dev/null differ
diff --git a/doc/doxygen/html/command__queue_8hpp.html b/doc/doxygen/html/command__queue_8hpp.html
deleted file mode 100644
index 33c82fa..0000000
--- a/doc/doxygen/html/command__queue_8hpp.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/command_queue.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/command_queue.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementations of command queue representations.  
-<a href="#_details">More...</a></p>
-<code>#include <CL/cl.h></code><br/>
-<code>#include <vector></code><br/>
-<code>#include <string></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include "<a class="el" href="context_8hpp_source.html">viennacl/ocl/context.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-
-<p><a href="command__queue_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A class representing a command queue.  <a href="classviennacl_1_1ocl_1_1command__queue.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of command queue representations. </p>
-<p>Represents an OpenCL context within ViennaCL.</p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/command__queue_8hpp_source.html b/doc/doxygen/html/command__queue_8hpp_source.html
deleted file mode 100644
index eb3c8c5..0000000
--- a/doc/doxygen/html/command__queue_8hpp_source.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/command_queue.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/command_queue.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="command__queue_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_COMMAND_QUEUE_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COMMAND_QUEUE_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#else</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include <vector></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <string></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include <sstream></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="context_8hpp.html">viennacl/ocl/context.hpp</a>"</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>viennacl
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037   <span class="keyword">namespace </span>ocl
-<a name="l00038"></a>00038   {
-<a name="l00039"></a>00039     
-<a name="l00043"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html">00043</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">command_queue</a>
-<a name="l00044"></a>00044     {
-<a name="l00045"></a>00045       <span class="keyword">public</span>:
-<a name="l00046"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#aba31105fa2a4846b873a623250654765">00046</a>         <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#aba31105fa2a4846b873a623250654765">command_queue</a>() {};
-<a name="l00047"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#ab6b585ec6f27ddcefe7fee6ffcb226d3">00047</a>         <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#ab6b585ec6f27ddcefe7fee6ffcb226d3">command_queue</a>(<a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_command_queue></a> h, cl_device_id dev) : handle_(h) {}
-<a name="l00048"></a>00048         
-<a name="l00049"></a>00049         <span class="comment">//Copy constructor:</span>
-<a name="l00050"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8d0b958ef5c2d71eceeccafc994ef5d6">00050</a>         <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#aba31105fa2a4846b873a623250654765">command_queue</a>(<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">command_queue</a> <span class="keyword">const</span> & other)
-<a name="l00051"></a>00051         {
-<a name="l00052"></a>00052           handle_ = other.handle_;
-<a name="l00053"></a>00053         }
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055         <span class="comment">//assignment operator:</span>
-<a name="l00056"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a0cbf9009ed0ae2f832646cc41a843a72">00056</a>         <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">command_queue</a> & <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a0cbf9009ed0ae2f832646cc41a843a72">operator=</a>(<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">command_queue</a> <span class="keyword">const</span> & other)
-<a name="l00057"></a>00057         {
-<a name="l00058"></a>00058           handle_ = other.handle_;
-<a name="l00059"></a>00059           <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00060"></a>00060         }
-<a name="l00061"></a>00061         
-<a name="l00063"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b">00063</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>()<span class="keyword"> const</span>
-<a name="l00064"></a>00064 <span class="keyword">        </span>{
-<a name="l00065"></a>00065           clFinish(handle_);
-<a name="l00066"></a>00066         }
-<a name="l00067"></a>00067         
-<a name="l00069"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#ab7e40dfa63aeb29fa6078d04795dffed">00069</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#ab7e40dfa63aeb29fa6078d04795dffed" title="Waits until all kernels in the queue have started their execution.">flush</a>()<span class="keyword"> const</span>
-<a name="l00070"></a>00070 <span class="keyword">        </span>{
-<a name="l00071"></a>00071           clFlush(handle_);
-<a name="l00072"></a>00072         }
-<a name="l00073"></a>00073 
-<a name="l00074"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">00074</a>         <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_command_queue></a> <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> handle_; }
-<a name="l00075"></a>00075 
-<a name="l00076"></a>00076       <span class="keyword">private</span>:
-<a name="l00077"></a>00077         
-<a name="l00078"></a>00078         <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_command_queue></a> handle_;
-<a name="l00079"></a>00079     };
-<a name="l00080"></a>00080 
-<a name="l00081"></a>00081  
-<a name="l00082"></a>00082     
-<a name="l00083"></a>00083   } <span class="comment">//namespace ocl</span>
-<a name="l00084"></a>00084 } <span class="comment">//namespace viennacl</span>
-<a name="l00085"></a>00085 
-<a name="l00086"></a>00086 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix_8hpp.html b/doc/doxygen/html/compressed__matrix_8hpp.html
deleted file mode 100644
index 40b0e11..0000000
--- a/doc/doxygen/html/compressed__matrix_8hpp.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/compressed_matrix.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/compressed_matrix.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementation of the compressed_matrix class.  
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <list></code><br/>
-<code>#include <map></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="compressed__matrix__operations_8hpp_source.html">viennacl/linalg/compressed_matrix_operations.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-
-<p><a href="compressed__matrix_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix< SCALARTYPE, ALIGNMENT ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A sparse square matrix in compressed sparse rows format.  <a href="classviennacl_1_1compressed__matrix.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0">copy</a> (const CPU_MATRIX &cpu_matrix, compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU).  <a href="#a5684964ce1519c88a443aa14be9428f0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a25d1118aadbe1e6cb69b70df35f94763">copy</a> (const std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix, compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix in the std::vector< std::map < > > format to an OpenCL device.  <a href="#a25d1118aadbe1e6cb69b70df35f94763"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a6b202ebcc6108940a59881c42f3d86da">copy</a> (const compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the OpenCL device (either GPU or multi-core CPU) to the host.  <a href="#a6b202ebcc6108940a59881c42f3d86da"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a8a0feeb7a31a31f45e1d014512758fe6">copy</a> (const compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from an OpenCL device to the host. The host type is the std::vector< std::map < > > format .  <a href="#a8a0feeb7a31a31f45e1d014512758fe6"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of the compressed_matrix class. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix_8hpp_source.html b/doc/doxygen/html/compressed__matrix_8hpp_source.html
deleted file mode 100644
index 27435cb..0000000
--- a/doc/doxygen/html/compressed__matrix_8hpp_source.html
+++ /dev/null
@@ -1,490 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/compressed_matrix.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/compressed_matrix.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="compressed__matrix_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_COMPRESSED_MATRIX_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COMPRESSED_MATRIX_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <list></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <map></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="compressed__matrix__operations_8hpp.html" title="Implementations of operations using compressed_matrix.">viennacl/linalg/compressed_matrix_operations.hpp</a>"</span>
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00032"></a>00032 
-<a name="l00033"></a><a class="code" href="namespaceviennacl.html">00033</a> <span class="keyword">namespace </span>viennacl
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035     
-<a name="l00036"></a>00036 
-<a name="l00037"></a>00037     <span class="comment">//provide copy-operation:</span>
-<a name="l00052"></a>00052 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00053"></a><a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0">00053</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix,
-<a name="l00054"></a>00054                      <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix )
-<a name="l00055"></a>00055     {
-<a name="l00056"></a>00056       <span class="comment">//std::cout << "copy for (" << cpu_matrix.size1() << ", " << cpu_matrix.size2() << ", " << cpu_matrix.nnz() << ")" << std::endl;</span>
-<a name="l00057"></a>00057       
-<a name="l00058"></a>00058       <span class="keywordflow">if</span> ( cpu_matrix.size1() > 0 && cpu_matrix.size2() > 0 )
-<a name="l00059"></a>00059       {
-<a name="l00060"></a>00060         <span class="comment">//determine nonzeros:</span>
-<a name="l00061"></a>00061         <span class="keywordtype">long</span> num_entries = 0;
-<a name="l00062"></a>00062         <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
-<a name="l00063"></a>00063               row_it != cpu_matrix.end1();
-<a name="l00064"></a>00064               ++row_it)
-<a name="l00065"></a>00065         {
-<a name="l00066"></a>00066           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> entries_per_row = 0;
-<a name="l00067"></a>00067           <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator2 col_it = row_it.begin();
-<a name="l00068"></a>00068                 col_it != row_it.end();
-<a name="l00069"></a>00069                 ++col_it)
-<a name="l00070"></a>00070           {
-<a name="l00071"></a>00071             ++entries_per_row;
-<a name="l00072"></a>00072           }
-<a name="l00073"></a>00073           num_entries += viennacl::tools::roundUpToNextMultiple<unsigned int>(entries_per_row, ALIGNMENT);
-<a name="l00074"></a>00074         }
-<a name="l00075"></a>00075         
-<a name="l00076"></a>00076         <span class="keywordflow">if</span> (num_entries == 0) <span class="comment">//we copy an empty matrix</span>
-<a name="l00077"></a>00077         {
-<a name="l00078"></a>00078           num_entries = 1;
-<a name="l00079"></a>00079         }
-<a name="l00080"></a>00080         
-<a name="l00081"></a>00081         <span class="comment">//set up matrix entries:</span>
-<a name="l00082"></a>00082         std::vector<unsigned int> row_buffer(cpu_matrix.size1() + 1);
-<a name="l00083"></a>00083         std::vector<unsigned int> col_buffer(num_entries);
-<a name="l00084"></a>00084         std::vector<SCALARTYPE> elements(num_entries);
-<a name="l00085"></a>00085         
-<a name="l00086"></a>00086         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row_index = 0;
-<a name="l00087"></a>00087         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> data_index = 0;
-<a name="l00088"></a>00088         
-<a name="l00089"></a>00089         <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
-<a name="l00090"></a>00090               row_it != cpu_matrix.end1();
-<a name="l00091"></a>00091               ++row_it)
-<a name="l00092"></a>00092         {
-<a name="l00093"></a>00093           row_buffer[row_index] = data_index;
-<a name="l00094"></a>00094           ++row_index;
-<a name="l00095"></a>00095           
-<a name="l00096"></a>00096           <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator2 col_it = row_it.begin();
-<a name="l00097"></a>00097                 col_it != row_it.end();
-<a name="l00098"></a>00098                 ++col_it)
-<a name="l00099"></a>00099           {
-<a name="l00100"></a>00100             col_buffer[data_index] = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(col_it.index2());
-<a name="l00101"></a>00101             elements[data_index] = *col_it;
-<a name="l00102"></a>00102             ++data_index;
-<a name="l00103"></a>00103           }
-<a name="l00104"></a>00104           data_index = viennacl::tools::roundUpToNextMultiple<unsigned int>(data_index, ALIGNMENT); <span class="comment">//take care of alignment</span>
-<a name="l00105"></a>00105         }
-<a name="l00106"></a>00106         row_buffer[row_index] = data_index;
-<a name="l00107"></a>00107         
-<a name="l00108"></a>00108         gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a30594c885d58e3372b44a4e358715483" title="Sets the row, column and value arrays of the compressed matrix.">set</a>(&row_buffer[0], &col_buffer[0], &elements[0], static_cast<unsigned int>(cpu_matrix.size1()), num_entries);
-<a name="l00109"></a>00109       }
-<a name="l00110"></a>00110     }
-<a name="l00111"></a>00111     
-<a name="l00112"></a>00112     
-<a name="l00113"></a>00113     <span class="comment">//adapted for std::vector< std::map < > > argument:</span>
-<a name="l00119"></a>00119 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00120"></a><a class="code" href="namespaceviennacl.html#a25d1118aadbe1e6cb69b70df35f94763">00120</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> std::vector< std::map<unsigned int, SCALARTYPE> > & cpu_matrix,
-<a name="l00121"></a>00121                      <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix )
-<a name="l00122"></a>00122     {
-<a name="l00123"></a>00123       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">tools::const_sparse_matrix_adapter<SCALARTYPE></a>(cpu_matrix), gpu_matrix);
-<a name="l00124"></a>00124     }
-<a name="l00125"></a>00125     
-<a name="l00126"></a>00126 <span class="preprocessor">    #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00127"></a>00127 <span class="preprocessor"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">int</span> flags, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00128"></a>00128     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> Eigen::SparseMatrix<SCALARTYPE, flags> & eigen_matrix,
-<a name="l00129"></a>00129               compressed_matrix<SCALARTYPE, ALIGNMENT> & gpu_matrix)
-<a name="l00130"></a>00130     {
-<a name="l00131"></a>00131       std::vector< std::map<unsigned int, SCALARTYPE> >  stl_matrix(eigen_matrix.rows());
-<a name="l00132"></a>00132       
-<a name="l00133"></a>00133       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k=0; k < eigen_matrix.outerSize(); ++k)
-<a name="l00134"></a>00134         <span class="keywordflow">for</span> (<span class="keyword">typename</span> Eigen::SparseMatrix<SCALARTYPE, flags>::InnerIterator it(eigen_matrix, k); it; ++it)
-<a name="l00135"></a>00135           stl_matrix[it.row()][it.col()] = it.value();
-<a name="l00136"></a>00136         
-<a name="l00137"></a>00137       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(tools::const_sparse_matrix_adapter<SCALARTYPE>(stl_matrix), gpu_matrix);
-<a name="l00138"></a>00138     }
-<a name="l00139"></a>00139 <span class="preprocessor">    #endif</span>
-<a name="l00140"></a>00140 <span class="preprocessor"></span>    
-<a name="l00141"></a>00141     
-<a name="l00142"></a>00142 <span class="preprocessor">    #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00143"></a>00143 <span class="preprocessor"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00144"></a>00144     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> mtl::compressed2D<SCALARTYPE> & cpu_matrix,
-<a name="l00145"></a>00145               compressed_matrix<SCALARTYPE, ALIGNMENT> & gpu_matrix)
-<a name="l00146"></a>00146     {
-<a name="l00147"></a>00147       <span class="keyword">typedef</span> mtl::compressed2D<SCALARTYPE>  MatrixType;
-<a name="l00148"></a>00148       
-<a name="l00149"></a>00149       std::vector< std::map<unsigned int, SCALARTYPE> >  stl_matrix(cpu_matrix.num_rows());
-<a name="l00150"></a>00150       
-<a name="l00151"></a>00151       <span class="keyword">using</span> mtl::traits::range_generator;
-<a name="l00152"></a>00152       <span class="keyword">using</span> mtl::traits::range::min;
-<a name="l00153"></a>00153 
-<a name="l00154"></a>00154       <span class="comment">// Choose between row and column traversal</span>
-<a name="l00155"></a>00155       <span class="keyword">typedef</span> <span class="keyword">typename</span> min<range_generator<mtl::tag::row, MatrixType>,
-<a name="l00156"></a>00156                            range_generator<mtl::tag::col, MatrixType> >::type   range_type;
-<a name="l00157"></a>00157       range_type                                                      my_range;
-<a name="l00158"></a>00158 
-<a name="l00159"></a>00159       <span class="comment">// Type of outer cursor</span>
-<a name="l00160"></a>00160       <span class="keyword">typedef</span> <span class="keyword">typename</span> range_type::type                               c_type;
-<a name="l00161"></a>00161       <span class="comment">// Type of inner cursor</span>
-<a name="l00162"></a>00162       <span class="keyword">typedef</span> <span class="keyword">typename</span> mtl::traits::range_generator<mtl::tag::nz, c_type>::type ic_type;
-<a name="l00163"></a>00163 
-<a name="l00164"></a>00164       <span class="comment">// Define the property maps</span>
-<a name="l00165"></a>00165       <span class="keyword">typename</span> mtl::traits::row<MatrixType>::type                              row(cpu_matrix); 
-<a name="l00166"></a>00166       <span class="keyword">typename</span> mtl::traits::col<MatrixType>::type                              col(cpu_matrix);
-<a name="l00167"></a>00167       <span class="keyword">typename</span> mtl::traits::const_value<MatrixType>::type                      <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>(cpu_matrix); 
-<a name="l00168"></a>00168 
-<a name="l00169"></a>00169       <span class="comment">// Now iterate over the matrix    </span>
-<a name="l00170"></a>00170       <span class="keywordflow">for</span> (c_type cursor(my_range.begin(cpu_matrix)), cend(my_range.end(cpu_matrix)); cursor != cend; ++cursor)
-<a name="l00171"></a>00171         <span class="keywordflow">for</span> (ic_type icursor(mtl::begin<mtl::tag::nz>(cursor)), icend(mtl::end<mtl::tag::nz>(cursor)); icursor != icend; ++icursor)
-<a name="l00172"></a>00172           stl_matrix[row(*icursor)][col(*icursor)] = <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>(*icursor);
-<a name="l00173"></a>00173       
-<a name="l00174"></a>00174       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(tools::const_sparse_matrix_adapter<SCALARTYPE>(stl_matrix), gpu_matrix);
-<a name="l00175"></a>00175     }
-<a name="l00176"></a>00176 <span class="preprocessor">    #endif</span>
-<a name="l00177"></a>00177 <span class="preprocessor"></span>    
-<a name="l00178"></a>00178     
-<a name="l00179"></a>00179     
-<a name="l00180"></a>00180     
-<a name="l00181"></a>00181     
-<a name="l00182"></a>00182     
-<a name="l00183"></a>00183     
-<a name="l00184"></a>00184     <span class="comment">//</span>
-<a name="l00185"></a>00185     <span class="comment">// gpu to cpu:</span>
-<a name="l00186"></a>00186     <span class="comment">//</span>
-<a name="l00196"></a>00196 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00197"></a><a class="code" href="namespaceviennacl.html#a6b202ebcc6108940a59881c42f3d86da">00197</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix,
-<a name="l00198"></a>00198                      CPU_MATRIX & cpu_matrix )
-<a name="l00199"></a>00199     {
-<a name="l00200"></a>00200       <span class="keywordflow">if</span> ( gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() > 0 && gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() > 0 )
-<a name="l00201"></a>00201       {
-<a name="l00202"></a>00202         cpu_matrix.resize(gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), <span class="keyword">false</span>);
-<a name="l00203"></a>00203         
-<a name="l00204"></a>00204         <span class="comment">//get raw data from memory:</span>
-<a name="l00205"></a>00205         std::vector<unsigned int> row_buffer(gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() + 1);
-<a name="l00206"></a>00206         std::vector<unsigned int> col_buffer(gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6" title="Returns the number of nonzero entries.">nnz</a>());
-<a name="l00207"></a>00207         std::vector<SCALARTYPE> elements(gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6" title="Returns the number of nonzero entries.">nnz</a>());
-<a name="l00208"></a>00208         
-<a name="l00209"></a>00209         <span class="comment">//std::cout << "GPU->CPU, nonzeros: " << gpu_matrix.nnz() << std::endl;</span>
-<a name="l00210"></a>00210         
-<a name="l00211"></a>00211         cl_int err;
-<a name="l00212"></a>00212         err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)*(gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() + 1), &(row_buffer[0]), 0, NULL, NULL);
-<a name="l00213"></a>00213         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00214"></a>00214         err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)*gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6" title="Returns the number of nonzero entries.">nnz</a>(), &(col_buffer[0]), 0, NULL, NULL);
-<a name="l00215"></a>00215         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00216"></a>00216         err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6" title="Returns the number of nonzero entries.">nnz</a>(), &(elements[0]), 0, NULL, NULL);
-<a name="l00217"></a>00217         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00218"></a>00218         <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00219"></a>00219         
-<a name="l00220"></a>00220         <span class="comment">//fill the cpu_matrix:</span>
-<a name="l00221"></a>00221         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> data_index = 0;
-<a name="l00222"></a>00222         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row = 1; row <= gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); ++row)
-<a name="l00223"></a>00223         {
-<a name="l00224"></a>00224           <span class="keywordflow">while</span> (data_index < row_buffer[row])
-<a name="l00225"></a>00225           {
-<a name="l00226"></a>00226             <span class="keywordflow">if</span> (col_buffer[data_index] >= gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>())
-<a name="l00227"></a>00227             {
-<a name="l00228"></a>00228               std::cerr << <span class="stringliteral">"ViennaCL encountered invalid data at colbuffer["</span> << data_index << <span class="stringliteral">"]: "</span> << col_buffer[data_index] << std::endl;
-<a name="l00229"></a>00229               <span class="keywordflow">return</span>;
-<a name="l00230"></a>00230             }
-<a name="l00231"></a>00231             
-<a name="l00232"></a>00232             <span class="keywordflow">if</span> (elements[data_index] != static_cast<SCALARTYPE>(0.0))
-<a name="l00233"></a>00233               cpu_matrix(row-1, col_buffer[data_index]) = elements[data_index];
-<a name="l00234"></a>00234             ++data_index;
-<a name="l00235"></a>00235           }
-<a name="l00236"></a>00236         }
-<a name="l00237"></a>00237       }
-<a name="l00238"></a>00238     }
-<a name="l00239"></a>00239     
-<a name="l00240"></a>00240     
-<a name="l00246"></a>00246     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00247"></a><a class="code" href="namespaceviennacl.html#a8a0feeb7a31a31f45e1d014512758fe6">00247</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix,
-<a name="l00248"></a>00248               std::vector< std::map<unsigned int, SCALARTYPE> > & cpu_matrix)
-<a name="l00249"></a>00249     {
-<a name="l00250"></a>00250       <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">tools::sparse_matrix_adapter<SCALARTYPE></a> temp(cpu_matrix);
-<a name="l00251"></a>00251       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(gpu_matrix, temp);
-<a name="l00252"></a>00252     }
-<a name="l00253"></a>00253     
-<a name="l00254"></a>00254     
-<a name="l00255"></a>00255 <span class="preprocessor">    #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00256"></a>00256 <span class="preprocessor"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">int</span> flags, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00257"></a>00257     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(compressed_matrix<SCALARTYPE, ALIGNMENT> & gpu_matrix,
-<a name="l00258"></a>00258               Eigen::SparseMatrix<SCALARTYPE, flags> & eigen_matrix)
-<a name="l00259"></a>00259     {
-<a name="l00260"></a>00260       <span class="keywordflow">if</span> ( gpu_matrix.size1() > 0 && gpu_matrix.size2() > 0 )
-<a name="l00261"></a>00261       {
-<a name="l00262"></a>00262         assert(static_cast<unsigned int>(eigen_matrix.rows()) >= gpu_matrix.size1()
-<a name="l00263"></a>00263                && <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(eigen_matrix.cols()) >= gpu_matrix.size2()
-<a name="l00264"></a>00264                && <span class="stringliteral">"Provided Eigen compressed matrix is too small!"</span>);
-<a name="l00265"></a>00265         
-<a name="l00266"></a>00266         <span class="comment">//get raw data from memory:</span>
-<a name="l00267"></a>00267         std::vector<unsigned int> row_buffer(gpu_matrix.size1() + 1);
-<a name="l00268"></a>00268         std::vector<unsigned int> col_buffer(gpu_matrix.nnz());
-<a name="l00269"></a>00269         std::vector<SCALARTYPE> elements(gpu_matrix.nnz());
-<a name="l00270"></a>00270         
-<a name="l00271"></a>00271         cl_int err;
-<a name="l00272"></a>00272         err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.handle1(),
-<a name="l00273"></a>00273                                   CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
-<a name="l00274"></a>00274         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00275"></a>00275         err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.handle2(),
-<a name="l00276"></a>00276                                   CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
-<a name="l00277"></a>00277         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00278"></a>00278         err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(),
-<a name="l00279"></a>00279                                   CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.nnz(), &(elements[0]), 0, NULL, NULL);
-<a name="l00280"></a>00280         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00281"></a>00281         <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00282"></a>00282         
-<a name="l00283"></a>00283         eigen_matrix.setZero();
-<a name="l00284"></a>00284         eigen_matrix.startFill();
-<a name="l00285"></a>00285         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> data_index = 0;
-<a name="l00286"></a>00286         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row = 1; row <= gpu_matrix.size1(); ++row)
-<a name="l00287"></a>00287         {
-<a name="l00288"></a>00288           <span class="keywordflow">while</span> (data_index < row_buffer[row])
-<a name="l00289"></a>00289           {
-<a name="l00290"></a>00290             assert(col_buffer[data_index] < gpu_matrix.size2() && <span class="stringliteral">"ViennaCL encountered invalid data at col_buffer"</span>);
-<a name="l00291"></a>00291             <span class="keywordflow">if</span> (elements[data_index] != static_cast<SCALARTYPE>(0.0))
-<a name="l00292"></a>00292               eigen_matrix.fill(row-1, col_buffer[data_index]) = elements[data_index];
-<a name="l00293"></a>00293             ++data_index;
-<a name="l00294"></a>00294           }
-<a name="l00295"></a>00295         }
-<a name="l00296"></a>00296         eigen_matrix.endFill();
-<a name="l00297"></a>00297       }
-<a name="l00298"></a>00298     }
-<a name="l00299"></a>00299 <span class="preprocessor">    #endif</span>
-<a name="l00300"></a>00300 <span class="preprocessor"></span>    
-<a name="l00301"></a>00301     
-<a name="l00302"></a>00302     
-<a name="l00303"></a>00303 <span class="preprocessor">    #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00304"></a>00304 <span class="preprocessor"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00305"></a>00305     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(compressed_matrix<SCALARTYPE, ALIGNMENT> & gpu_matrix,
-<a name="l00306"></a>00306               mtl::compressed2D<SCALARTYPE> & mtl4_matrix)
-<a name="l00307"></a>00307     {
-<a name="l00308"></a>00308       <span class="keywordflow">if</span> ( gpu_matrix.size1() > 0 && gpu_matrix.size2() > 0 )
-<a name="l00309"></a>00309       {
-<a name="l00310"></a>00310         assert(mtl4_matrix.num_rows() >= gpu_matrix.size1()
-<a name="l00311"></a>00311                && mtl4_matrix.num_cols() >= gpu_matrix.size2()
-<a name="l00312"></a>00312                && <span class="stringliteral">"Provided MTL4 compressed matrix is too small!"</span>);
-<a name="l00313"></a>00313         
-<a name="l00314"></a>00314         <span class="comment">//get raw data from memory:</span>
-<a name="l00315"></a>00315         std::vector<unsigned int> row_buffer(gpu_matrix.size1() + 1);
-<a name="l00316"></a>00316         std::vector<unsigned int> col_buffer(gpu_matrix.nnz());
-<a name="l00317"></a>00317         std::vector<SCALARTYPE> elements(gpu_matrix.nnz());
-<a name="l00318"></a>00318         
-<a name="l00319"></a>00319         cl_int err;
-<a name="l00320"></a>00320         err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.handle1(),
-<a name="l00321"></a>00321                                   CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
-<a name="l00322"></a>00322         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00323"></a>00323         err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.handle2(),
-<a name="l00324"></a>00324                                   CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
-<a name="l00325"></a>00325         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00326"></a>00326         err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(),
-<a name="l00327"></a>00327                                   CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.nnz(), &(elements[0]), 0, NULL, NULL);
-<a name="l00328"></a>00328         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00329"></a>00329         <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00330"></a>00330         
-<a name="l00331"></a>00331         <span class="comment">//set_to_zero(mtl4_matrix);  </span>
-<a name="l00332"></a>00332         <span class="comment">//mtl4_matrix.change_dim(gpu_matrix.size1(), gpu_matrix.size2());</span>
-<a name="l00333"></a>00333         
-<a name="l00334"></a>00334         mtl::matrix::inserter< mtl::compressed2D<SCALARTYPE> >  ins(mtl4_matrix);
-<a name="l00335"></a>00335         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> data_index = 0;
-<a name="l00336"></a>00336         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row = 1; row <= gpu_matrix.size1(); ++row)
-<a name="l00337"></a>00337         {
-<a name="l00338"></a>00338           <span class="keywordflow">while</span> (data_index < row_buffer[row])
-<a name="l00339"></a>00339           {
-<a name="l00340"></a>00340             assert(col_buffer[data_index] < gpu_matrix.size2() && <span class="stringliteral">"ViennaCL encountered invalid data at col_buffer"</span>);
-<a name="l00341"></a>00341             <span class="keywordflow">if</span> (elements[data_index] != static_cast<SCALARTYPE>(0.0))
-<a name="l00342"></a>00342               ins(row-1, col_buffer[data_index]) << <span class="keyword">typename</span> mtl::Collection< mtl::compressed2D<SCALARTYPE> >::value_type(elements[data_index]);
-<a name="l00343"></a>00343             ++data_index;
-<a name="l00344"></a>00344           }
-<a name="l00345"></a>00345         }
-<a name="l00346"></a>00346       }
-<a name="l00347"></a>00347     }
-<a name="l00348"></a>00348 <span class="preprocessor">    #endif</span>
-<a name="l00349"></a>00349 <span class="preprocessor"></span>    
-<a name="l00350"></a>00350     
-<a name="l00351"></a>00351     
-<a name="l00352"></a>00352     
-<a name="l00353"></a>00353     
-<a name="l00355"></a>00355 
-<a name="l00360"></a>00360     <span class="keyword">template</span><<span class="keyword">class </span>SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT <span class="comment">/* see VCLForwards.h */</span>>
-<a name="l00361"></a><a class="code" href="classviennacl_1_1compressed__matrix.html">00361</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>
-<a name="l00362"></a>00362     {
-<a name="l00363"></a>00363     <span class="keyword">public</span>:
-<a name="l00364"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">00364</a>       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<typename viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT<SCALARTYPE>::ResultType</a>>   <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a>;
-<a name="l00365"></a>00365       
-<a name="l00367"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00">00367</a>       <a class="code" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00" title="Default construction of a compressed matrix. No memory is allocated.">compressed_matrix</a>() : _rows(0), _cols(0), _nonzeros(0) { viennacl::linalg::kernels::compressed_matrix<SCALARTYPE, ALIGNMENT>::init(); }
-<a name="l00368"></a>00368       
-<a name="l00375"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a3ba96c743010a59262c8a0d8a18bc87f">00375</a>       <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00" title="Default construction of a compressed matrix. No memory is allocated.">compressed_matrix</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nonzeros = 0) : 
-<a name="l00376"></a>00376         _rows(rows), _cols(cols), _nonzeros(nonzeros)
-<a name="l00377"></a>00377       {
-<a name="l00378"></a>00378         viennacl::linalg::kernels::compressed_matrix<SCALARTYPE, ALIGNMENT>::init();
-<a name="l00379"></a>00379         
-<a name="l00380"></a>00380         <span class="keywordflow">if</span> (rows > 0)
-<a name="l00381"></a>00381           _row_buffer = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) * rows);
-<a name="l00382"></a>00382         <span class="keywordflow">if</span> (nonzeros > 0)
-<a name="l00383"></a>00383         {
-<a name="l00384"></a>00384           _col_buffer = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) * nonzeros);
-<a name="l00385"></a>00385           _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE) * nonzeros);
-<a name="l00386"></a>00386         }
-<a name="l00387"></a>00387       }
-<a name="l00388"></a>00388       
-<a name="l00389"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a9d9605472ab231ce31949eb09938d72d">00389</a>       <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00" title="Default construction of a compressed matrix. No memory is allocated.">compressed_matrix</a>(cl_mem mem_row_buffer, cl_mem mem_col_buffer, cl_mem mem_elements, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nonzeros) : 
-<a name="l00390"></a>00390         _rows(rows), _cols(cols), _nonzeros(nonzeros)
-<a name="l00391"></a>00391       {
-<a name="l00392"></a>00392           _row_buffer = mem_row_buffer;
-<a name="l00393"></a>00393           _row_buffer.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>();             <span class="comment">//prevents that the user-provided memory is deleted once the matrix object is destroyed.</span>
-<a name="l00394"></a>00394           _col_buffer = mem_col_buffer;
-<a name="l00395"></a>00395           _col_buffer.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>();             <span class="comment">//prevents that the user-provided memory is deleted once the matrix object is destroyed.</span>
-<a name="l00396"></a>00396           _elements = mem_elements;
-<a name="l00397"></a>00397           _elements.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>();               <span class="comment">//prevents that the user-provided memory is deleted once the matrix object is destroyed.</span>
-<a name="l00398"></a>00398       }
-<a name="l00399"></a>00399       
-<a name="l00400"></a>00400       
-<a name="l00409"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a30594c885d58e3372b44a4e358715483">00409</a>       <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> * row_jumper, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> * col_buffer, SCALARTYPE * elements, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nonzeros)
-<a name="l00410"></a>00410       {
-<a name="l00411"></a>00411         assert(cols > 0);
-<a name="l00412"></a>00412         assert(nonzeros > 0);
-<a name="l00413"></a>00413         <span class="comment">//std::cout << "Setting memory: " << cols + 1 << ", " << nonzeros << std::endl;</span>
-<a name="l00414"></a>00414         _row_buffer = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) * (cols + 1), row_jumper);
-<a name="l00415"></a>00415         _col_buffer = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) * nonzeros, col_buffer);
-<a name="l00416"></a>00416         _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE) * nonzeros, elements);
-<a name="l00417"></a>00417         _nonzeros = nonzeros;
-<a name="l00418"></a>00418         _rows = cols;
-<a name="l00419"></a>00419         _cols = cols;
-<a name="l00420"></a>00420       }
-<a name="l00421"></a>00421         
-<a name="l00423"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">00423</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1compressed__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1" title="Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved...">reserve</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_nonzeros)
-<a name="l00424"></a>00424       {
-<a name="l00425"></a>00425         <span class="keywordflow">if</span> (new_nonzeros > _nonzeros)
-<a name="l00426"></a>00426         {
-<a name="l00427"></a>00427           <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> _col_buffer_old = _col_buffer;
-<a name="l00428"></a>00428           <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> _elements_old = _elements;
-<a name="l00429"></a>00429           _col_buffer = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) * new_nonzeros);
-<a name="l00430"></a>00430           _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE) * new_nonzeros);
-<a name="l00431"></a>00431           
-<a name="l00432"></a>00432           cl_int err;
-<a name="l00433"></a>00433           err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), _col_buffer_old, _col_buffer, 0, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)*_nonzeros, 0, NULL, NULL);
-<a name="l00434"></a>00434           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00435"></a>00435           err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), _elements_old, _elements, 0, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*_nonzeros, 0, NULL, NULL);
-<a name="l00436"></a>00436           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00437"></a>00437 
-<a name="l00438"></a>00438           _nonzeros = new_nonzeros;
-<a name="l00439"></a>00439         }
-<a name="l00440"></a>00440       }
-<a name="l00441"></a>00441 
-<a name="l00448"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a72c98b8dba1f78661da5d71f20550d25">00448</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1compressed__matrix.html#a72c98b8dba1f78661da5d71f20550d25" title="Resize the matrix.">resize</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_size1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_size2, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>)
-<a name="l00449"></a>00449       {
-<a name="l00450"></a>00450         assert(new_size1 > 0 && new_size2 > 0);
-<a name="l00451"></a>00451         <span class="comment">//std::cout << "Resizing from (" << _rows << ", " << _cols << ") to (" << new_size1 << ", " << new_size2 << ")" << std::endl;</span>
-<a name="l00452"></a>00452         
-<a name="l00453"></a>00453         <span class="keywordflow">if</span> (new_size1 != _rows || new_size2 != _cols)
-<a name="l00454"></a>00454         {
-<a name="l00455"></a>00455           std::vector<std::map<unsigned int, SCALARTYPE> > stl_sparse_matrix;
-<a name="l00456"></a>00456           <span class="keywordflow">if</span> (_rows > 0)
-<a name="l00457"></a>00457             stl_sparse_matrix.resize(_rows);
-<a name="l00458"></a>00458           
-<a name="l00459"></a>00459           <span class="keywordflow">if</span> (preserve && _rows > 0)
-<a name="l00460"></a>00460             <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">viennacl::copy</a>(*<span class="keyword">this</span>, stl_sparse_matrix);
-<a name="l00461"></a>00461             
-<a name="l00462"></a>00462           stl_sparse_matrix.resize(new_size1);
-<a name="l00463"></a>00463           
-<a name="l00464"></a>00464           <span class="comment">//discard entries with column index larger than new_size2</span>
-<a name="l00465"></a>00465           <span class="keywordflow">if</span> (new_size2 < _cols && _rows > 0)
-<a name="l00466"></a>00466           {
-<a name="l00467"></a>00467             <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<stl_sparse_matrix.size(); ++i)
-<a name="l00468"></a>00468             {
-<a name="l00469"></a>00469               std::list<unsigned int> to_delete;
-<a name="l00470"></a>00470               <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::map<unsigned int, SCALARTYPE>::iterator it = stl_sparse_matrix[i].begin();
-<a name="l00471"></a>00471                    it != stl_sparse_matrix[i].end();
-<a name="l00472"></a>00472                   ++it)
-<a name="l00473"></a>00473               {
-<a name="l00474"></a>00474                 <span class="keywordflow">if</span> (it->first >= new_size2)
-<a name="l00475"></a>00475                   to_delete.push_back(it->first);
-<a name="l00476"></a>00476               }
-<a name="l00477"></a>00477               
-<a name="l00478"></a>00478               <span class="keywordflow">for</span> (std::list<unsigned int>::iterator it = to_delete.begin(); it != to_delete.end(); ++it)
-<a name="l00479"></a>00479                 stl_sparse_matrix[i].erase(*it);
-<a name="l00480"></a>00480             }
-<a name="l00481"></a>00481           }
-<a name="l00482"></a>00482           
-<a name="l00483"></a>00483           <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(stl_sparse_matrix, *<span class="keyword">this</span>);
-<a name="l00484"></a>00484           
-<a name="l00485"></a>00485           _rows = new_size1;
-<a name="l00486"></a>00486           _cols = new_size2;
-<a name="l00487"></a>00487         }
-<a name="l00488"></a>00488       }
-<a name="l00489"></a>00489 
-<a name="l00491"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4">00491</a>       <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & <a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _rows; }
-<a name="l00493"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">00493</a>       <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & <a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _cols; }
-<a name="l00495"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6">00495</a>       <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & <a class="code" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6" title="Returns the number of nonzero entries.">nnz</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _nonzeros; }
-<a name="l00496"></a>00496       
-<a name="l00498"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3">00498</a>       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _row_buffer; }
-<a name="l00500"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898">00500</a>       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _col_buffer; }
-<a name="l00502"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c">00502</a>       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _elements; }
-<a name="l00503"></a>00503       
-<a name="l00504"></a>00504     <span class="keyword">private</span>:
-<a name="l00506"></a>00506       <a class="code" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00" title="Default construction of a compressed matrix. No memory is allocated.">compressed_matrix</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> <span class="keyword">const</span> &);
-<a name="l00507"></a>00507       
-<a name="l00509"></a>00509       <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> & operator=(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> <span class="keyword">const</span> &);
-<a name="l00510"></a>00510       
-<a name="l00511"></a>00511       
-<a name="l00512"></a>00512       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _rows;
-<a name="l00513"></a>00513       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _cols;
-<a name="l00514"></a>00514       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _nonzeros;
-<a name="l00515"></a>00515       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> _row_buffer;
-<a name="l00516"></a>00516       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> _col_buffer;
-<a name="l00517"></a>00517       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> _elements;
-<a name="l00518"></a>00518     };
-<a name="l00519"></a>00519 
-<a name="l00520"></a>00520     
-<a name="l00521"></a>00521     
-<a name="l00522"></a>00522 
-<a name="l00523"></a>00523 }
-<a name="l00524"></a>00524 
-<a name="l00525"></a>00525 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix__kernels_8h.html b/doc/doxygen/html/compressed__matrix__kernels_8h.html
deleted file mode 100644
index 29b6b6e..0000000
--- a/doc/doxygen/html/compressed__matrix__kernels_8h.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="compressed__matrix__source_8h_source.html">viennacl/linalg/kernels/compressed_matrix_source.h</a>"</code><br/>
-
-<p><a href="compressed__matrix__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">compressed_matrix< float, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">compressed_matrix< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">compressed_matrix< float, 8 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">compressed_matrix< double, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">compressed_matrix< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">compressed_matrix< double, 8 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix__kernels_8h_source.html b/doc/doxygen/html/compressed__matrix__kernels_8h_source.html
deleted file mode 100644
index 2575aa5..0000000
--- a/doc/doxygen/html/compressed__matrix__kernels_8h_source.html
+++ /dev/null
@@ -1,318 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="compressed__matrix__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_COMPRESSED_MATRIX_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COMPRESSED_MATRIX_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="compressed__matrix__source_8h.html">viennacl/linalg/kernels/compressed_matrix_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html">00014</a>   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">00022</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><float, 4>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_compressed_matrix_4"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">compressed_matrix_align4_vec_mul</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a>);
-<a name="l00040"></a>00040         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a>);
-<a name="l00041"></a>00041         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a>);
-<a name="l00042"></a>00042         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a>);
-<a name="l00043"></a>00043         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a>);
-<a name="l00044"></a>00044         std::string prog_name = program_name();
-<a name="l00045"></a>00045 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00046"></a>00046 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00047"></a>00047 <span class="preprocessor">        #endif</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00049"></a>00049         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00050"></a>00050         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00051"></a>00051         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00052"></a>00052         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00053"></a>00053         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00054"></a>00054         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_forward"</span>);
-<a name="l00055"></a>00055         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel2"</span>);
-<a name="l00056"></a>00056         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_backward"</span>);
-<a name="l00057"></a>00057         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel1"</span>);
-<a name="l00058"></a>00058         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00059"></a>00059        } <span class="comment">//if</span>
-<a name="l00060"></a>00060      } <span class="comment">//init</span>
-<a name="l00061"></a>00061     }; <span class="comment">// struct</span>
-<a name="l00062"></a>00062 
-<a name="l00063"></a>00063    <span class="keyword">template</span> <>
-<a name="l00064"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">00064</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><float, 1>
-<a name="l00065"></a>00065    {
-<a name="l00066"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00066</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00067"></a>00067     {
-<a name="l00068"></a>00068       <span class="keywordflow">return</span> <span class="stringliteral">"f_compressed_matrix_1"</span>;
-<a name="l00069"></a>00069     }
-<a name="l00070"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00070</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00071"></a>00071     {
-<a name="l00072"></a>00072       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00073"></a>00073       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00074"></a>00074       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00075"></a>00075       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00076"></a>00076       {
-<a name="l00077"></a>00077         std::string source;
-<a name="l00078"></a>00078         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">compressed_matrix_align1_vec_mul</a>);
-<a name="l00079"></a>00079         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a>);
-<a name="l00080"></a>00080         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a>);
-<a name="l00081"></a>00081         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a>);
-<a name="l00082"></a>00082         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a>);
-<a name="l00083"></a>00083         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a>);
-<a name="l00084"></a>00084         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a>);
-<a name="l00085"></a>00085         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a>);
-<a name="l00086"></a>00086         std::string prog_name = program_name();
-<a name="l00087"></a>00087 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00088"></a>00088 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00089"></a>00089 <span class="preprocessor">        #endif</span>
-<a name="l00090"></a>00090 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00091"></a>00091         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00092"></a>00092         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00093"></a>00093         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00094"></a>00094         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00095"></a>00095         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00096"></a>00096         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_forward"</span>);
-<a name="l00097"></a>00097         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel2"</span>);
-<a name="l00098"></a>00098         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_backward"</span>);
-<a name="l00099"></a>00099         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel1"</span>);
-<a name="l00100"></a>00100         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00101"></a>00101        } <span class="comment">//if</span>
-<a name="l00102"></a>00102      } <span class="comment">//init</span>
-<a name="l00103"></a>00103     }; <span class="comment">// struct</span>
-<a name="l00104"></a>00104 
-<a name="l00105"></a>00105    <span class="keyword">template</span> <>
-<a name="l00106"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">00106</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><float, 8>
-<a name="l00107"></a>00107    {
-<a name="l00108"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">00108</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00109"></a>00109     {
-<a name="l00110"></a>00110       <span class="keywordflow">return</span> <span class="stringliteral">"f_compressed_matrix_8"</span>;
-<a name="l00111"></a>00111     }
-<a name="l00112"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">00112</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00113"></a>00113     {
-<a name="l00114"></a>00114       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00115"></a>00115       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00116"></a>00116       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00117"></a>00117       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00118"></a>00118       {
-<a name="l00119"></a>00119         std::string source;
-<a name="l00120"></a>00120         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">compressed_matrix_align8_vec_mul</a>);
-<a name="l00121"></a>00121         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a>);
-<a name="l00122"></a>00122         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a>);
-<a name="l00123"></a>00123         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a>);
-<a name="l00124"></a>00124         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a>);
-<a name="l00125"></a>00125         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a>);
-<a name="l00126"></a>00126         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a>);
-<a name="l00127"></a>00127         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a>);
-<a name="l00128"></a>00128         std::string prog_name = program_name();
-<a name="l00129"></a>00129 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00130"></a>00130 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00131"></a>00131 <span class="preprocessor">        #endif</span>
-<a name="l00132"></a>00132 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00133"></a>00133         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00134"></a>00134         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00135"></a>00135         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00136"></a>00136         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00137"></a>00137         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00138"></a>00138         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_forward"</span>);
-<a name="l00139"></a>00139         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel2"</span>);
-<a name="l00140"></a>00140         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_backward"</span>);
-<a name="l00141"></a>00141         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel1"</span>);
-<a name="l00142"></a>00142         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00143"></a>00143        } <span class="comment">//if</span>
-<a name="l00144"></a>00144      } <span class="comment">//init</span>
-<a name="l00145"></a>00145     }; <span class="comment">// struct</span>
-<a name="l00146"></a>00146 
-<a name="l00147"></a>00147 
-<a name="l00148"></a>00148 
-<a name="l00150"></a>00150    <span class="keyword">template</span> <>
-<a name="l00151"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">00151</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><double, 4>
-<a name="l00152"></a>00152    {
-<a name="l00153"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">00153</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00154"></a>00154     {
-<a name="l00155"></a>00155       <span class="keywordflow">return</span> <span class="stringliteral">"d_compressed_matrix_4"</span>;
-<a name="l00156"></a>00156     }
-<a name="l00157"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">00157</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00158"></a>00158     {
-<a name="l00159"></a>00159       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00160"></a>00160       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00161"></a>00161       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00162"></a>00162       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00163"></a>00163       {
-<a name="l00164"></a>00164         std::string source;
-<a name="l00165"></a>00165         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00166"></a>00166         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">compressed_matrix_align4_vec_mul</a>, fp64_ext));
-<a name="l00167"></a>00167         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a>, fp64_ext));
-<a name="l00168"></a>00168         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a>, fp64_ext));
-<a name="l00169"></a>00169         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a>, fp64_ext));
-<a name="l00170"></a>00170         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a>, fp64_ext));
-<a name="l00171"></a>00171         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a>, fp64_ext));
-<a name="l00172"></a>00172         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a>, fp64_ext));
-<a name="l00173"></a>00173         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a>, fp64_ext));
-<a name="l00174"></a>00174         std::string prog_name = program_name();
-<a name="l00175"></a>00175 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00176"></a>00176 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00177"></a>00177 <span class="preprocessor">        #endif</span>
-<a name="l00178"></a>00178 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00179"></a>00179         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00180"></a>00180         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00181"></a>00181         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00182"></a>00182         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00183"></a>00183         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00184"></a>00184         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_forward"</span>);
-<a name="l00185"></a>00185         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel2"</span>);
-<a name="l00186"></a>00186         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_backward"</span>);
-<a name="l00187"></a>00187         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel1"</span>);
-<a name="l00188"></a>00188         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00189"></a>00189        } <span class="comment">//if</span>
-<a name="l00190"></a>00190      } <span class="comment">//init</span>
-<a name="l00191"></a>00191     }; <span class="comment">// struct</span>
-<a name="l00192"></a>00192 
-<a name="l00193"></a>00193    <span class="keyword">template</span> <>
-<a name="l00194"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">00194</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><double, 1>
-<a name="l00195"></a>00195    {
-<a name="l00196"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00196</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00197"></a>00197     {
-<a name="l00198"></a>00198       <span class="keywordflow">return</span> <span class="stringliteral">"d_compressed_matrix_1"</span>;
-<a name="l00199"></a>00199     }
-<a name="l00200"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00200</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00201"></a>00201     {
-<a name="l00202"></a>00202       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00203"></a>00203       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00204"></a>00204       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00205"></a>00205       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00206"></a>00206       {
-<a name="l00207"></a>00207         std::string source;
-<a name="l00208"></a>00208         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00209"></a>00209         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">compressed_matrix_align1_vec_mul</a>, fp64_ext));
-<a name="l00210"></a>00210         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a>, fp64_ext));
-<a name="l00211"></a>00211         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a>, fp64_ext));
-<a name="l00212"></a>00212         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a>, fp64_ext));
-<a name="l00213"></a>00213         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a>, fp64_ext));
-<a name="l00214"></a>00214         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a>, fp64_ext));
-<a name="l00215"></a>00215         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a>, fp64_ext));
-<a name="l00216"></a>00216         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a>, fp64_ext));
-<a name="l00217"></a>00217         std::string prog_name = program_name();
-<a name="l00218"></a>00218 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00219"></a>00219 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00220"></a>00220 <span class="preprocessor">        #endif</span>
-<a name="l00221"></a>00221 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00222"></a>00222         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00223"></a>00223         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00224"></a>00224         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00225"></a>00225         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00226"></a>00226         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00227"></a>00227         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_forward"</span>);
-<a name="l00228"></a>00228         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel2"</span>);
-<a name="l00229"></a>00229         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_backward"</span>);
-<a name="l00230"></a>00230         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel1"</span>);
-<a name="l00231"></a>00231         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00232"></a>00232        } <span class="comment">//if</span>
-<a name="l00233"></a>00233      } <span class="comment">//init</span>
-<a name="l00234"></a>00234     }; <span class="comment">// struct</span>
-<a name="l00235"></a>00235 
-<a name="l00236"></a>00236    <span class="keyword">template</span> <>
-<a name="l00237"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">00237</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><double, 8>
-<a name="l00238"></a>00238    {
-<a name="l00239"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">00239</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00240"></a>00240     {
-<a name="l00241"></a>00241       <span class="keywordflow">return</span> <span class="stringliteral">"d_compressed_matrix_8"</span>;
-<a name="l00242"></a>00242     }
-<a name="l00243"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">00243</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00244"></a>00244     {
-<a name="l00245"></a>00245       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00246"></a>00246       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00247"></a>00247       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00248"></a>00248       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00249"></a>00249       {
-<a name="l00250"></a>00250         std::string source;
-<a name="l00251"></a>00251         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00252"></a>00252         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">compressed_matrix_align8_vec_mul</a>, fp64_ext));
-<a name="l00253"></a>00253         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a>, fp64_ext));
-<a name="l00254"></a>00254         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a>, fp64_ext));
-<a name="l00255"></a>00255         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a>, fp64_ext));
-<a name="l00256"></a>00256         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a>, fp64_ext));
-<a name="l00257"></a>00257         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a>, fp64_ext));
-<a name="l00258"></a>00258         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a>, fp64_ext));
-<a name="l00259"></a>00259         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a>, fp64_ext));
-<a name="l00260"></a>00260         std::string prog_name = program_name();
-<a name="l00261"></a>00261 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00262"></a>00262 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00263"></a>00263 <span class="preprocessor">        #endif</span>
-<a name="l00264"></a>00264 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00265"></a>00265         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00266"></a>00266         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00267"></a>00267         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00268"></a>00268         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00269"></a>00269         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00270"></a>00270         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_forward"</span>);
-<a name="l00271"></a>00271         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel2"</span>);
-<a name="l00272"></a>00272         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_backward"</span>);
-<a name="l00273"></a>00273         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel1"</span>);
-<a name="l00274"></a>00274         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00275"></a>00275        } <span class="comment">//if</span>
-<a name="l00276"></a>00276      } <span class="comment">//init</span>
-<a name="l00277"></a>00277     }; <span class="comment">// struct</span>
-<a name="l00278"></a>00278 
-<a name="l00279"></a>00279 
-<a name="l00280"></a>00280   }  <span class="comment">//namespace kernels</span>
-<a name="l00281"></a>00281  }  <span class="comment">//namespace linalg</span>
-<a name="l00282"></a>00282 }  <span class="comment">//namespace viennacl</span>
-<a name="l00283"></a>00283 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix__operations_8hpp.html b/doc/doxygen/html/compressed__matrix__operations_8hpp.html
deleted file mode 100644
index b3b548d..0000000
--- a/doc/doxygen/html/compressed__matrix__operations_8hpp.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/compressed_matrix_operations.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/compressed_matrix_operations.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementations of operations using compressed_matrix.  
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="compressed__matrix__kernels_8h_source.html">viennacl/linalg/kernels/compressed_matrix_kernels.h</a>"</code><br/>
-
-<p><a href="compressed__matrix__operations_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa965a1bc156b037f57b6a449dde4c7d1">prod_impl</a> (const compressed_matrix< SCALARTYPE, ALIGNMENT > &mat, const vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#aa965a1bc156b037f57b6a449dde4c7d1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a469b22e14078bba1451afb09bbd2f7cc">prod_impl</a> (const <a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a>< TYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &result, size_t NUM_THREADS=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#a469b22e14078bba1451afb09bbd2f7cc"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210">inplace_solve</a> (compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &L, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace solution of a lower triangular <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> with unit diagonal. Typically used for LU substitutions.  <a href="#ae927d6abe755d74744ec5ee9bd191210"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6d7d0a974cd68a51c4d5c4b7a16c1d28">solve</a> (compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &L, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, const <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a> &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, unit_lower_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#a6d7d0a974cd68a51c4d5c4b7a16c1d28"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aaa3a114636b1b542dfb42f48d2a0200a">inplace_solve</a> (compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &U, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace solution of a upper triangular <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. Typically used for LU substitutions.  <a href="#aaa3a114636b1b542dfb42f48d2a0200a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aaa338acd99f7bfac8c0210ab05ecaa09">solve</a> (compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &L, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, unit_lower_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#aaa338acd99f7bfac8c0210ab05ecaa09"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of operations using compressed_matrix. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix__operations_8hpp_source.html b/doc/doxygen/html/compressed__matrix__operations_8hpp_source.html
deleted file mode 100644
index 87a4eb0..0000000
--- a/doc/doxygen/html/compressed__matrix__operations_8hpp_source.html
+++ /dev/null
@@ -1,238 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/compressed_matrix_operations.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/compressed_matrix_operations.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="compressed__matrix__operations_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_COMPRESSED_MATRIX_OPERATIONS_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COMPRESSED_MATRIX_OPERATIONS_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="compressed__matrix__kernels_8h.html">viennacl/linalg/kernels/compressed_matrix_kernels.h</a>"</span>
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033   <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034   {
-<a name="l00035"></a>00035     <span class="comment">// A * x</span>
-<a name="l00043"></a>00043 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00044"></a>00044     vector_expression<const compressed_matrix<SCALARTYPE, ALIGNMENT>,
-<a name="l00045"></a>00045                       <span class="keyword">const</span> vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
-<a name="l00046"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aa965a1bc156b037f57b6a449dde4c7d1">00046</a>                       op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, ALIGNMENT></a> & mat, 
-<a name="l00047"></a>00047                                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00048"></a>00048     {
-<a name="l00049"></a>00049       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression<const compressed_matrix<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00050"></a>00050                                <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VECTOR_ALIGNMENT></a>, 
-<a name="l00051"></a>00051                                op_prod >(mat, vec);
-<a name="l00052"></a>00052     }
-<a name="l00053"></a>00053     
-<a name="l00063"></a>00063     <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00064"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a469b22e14078bba1451afb09bbd2f7cc">00064</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">viennacl::compressed_matrix<TYPE, ALIGNMENT></a> & mat, 
-<a name="l00065"></a>00065                    <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<TYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00066"></a>00066                          <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<TYPE, VECTOR_ALIGNMENT></a> & result, 
-<a name="l00067"></a>00067                    <span class="keywordtype">size_t</span> NUM_THREADS = 0)
-<a name="l00068"></a>00068     {
-<a name="l00069"></a>00069       assert(mat.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00070"></a>00070       assert(mat.<a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00071"></a>00071 
-<a name="l00072"></a>00072       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::compressed_matrix<TYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"vec_mul"</span>);
-<a name="l00073"></a>00073       
-<a name="l00074"></a>00074       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), mat.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), mat.<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), vec, result, mat.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()));        
-<a name="l00075"></a>00075     }
-<a name="l00076"></a>00076 
-<a name="l00082"></a>00082     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT>
-<a name="l00083"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210">00083</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a> <span class="keyword">const</span> & L, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">viennacl::linalg::unit_lower_tag</a>)
-<a name="l00084"></a>00084     {
-<a name="l00085"></a>00085       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::compressed_matrix<SCALARTYPE, MAT_ALIGNMENT>::program_name(), <span class="stringliteral">"lu_forward"</span>);
-<a name="l00086"></a>00086       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> threads = k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>();
-<a name="l00087"></a>00087 
-<a name="l00088"></a>00088       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00089"></a>00089       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(L.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), L.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), L,
-<a name="l00090"></a>00090                                                               <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(<span class="keywordtype">int</span>) * (threads+1)),
-<a name="l00091"></a>00091                                                               <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * threads),
-<a name="l00092"></a>00092                                                               vec, L.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()));        
-<a name="l00093"></a>00093     }
-<a name="l00094"></a>00094     
-<a name="l00101"></a>00101     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT, <span class="keyword">typename</span> TAG>
-<a name="l00102"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a6d7d0a974cd68a51c4d5c4b7a16c1d28">00102</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a> <span class="keyword">const</span> & L,
-<a name="l00103"></a>00103                                         <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00104"></a>00104                                         <span class="keyword">const</span> <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">viennacl::linalg::unit_lower_tag</a> & tag)
-<a name="l00105"></a>00105     {
-<a name="l00106"></a>00106       <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00107"></a>00107       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> result(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00108"></a>00108       result = vec;
-<a name="l00109"></a>00109 
-<a name="l00110"></a>00110       <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(L, result, tag);
-<a name="l00111"></a>00111     
-<a name="l00112"></a>00112       <span class="keywordflow">return</span> result;
-<a name="l00113"></a>00113     }
-<a name="l00114"></a>00114     
-<a name="l00115"></a>00115     
-<a name="l00121"></a>00121     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT>
-<a name="l00122"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aaa3a114636b1b542dfb42f48d2a0200a">00122</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a> <span class="keyword">const</span> & U, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">viennacl::linalg::upper_tag</a>)
-<a name="l00123"></a>00123     {
-<a name="l00124"></a>00124       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::compressed_matrix<SCALARTYPE, MAT_ALIGNMENT>::program_name(), <span class="stringliteral">"lu_backward"</span>);
-<a name="l00125"></a>00125       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> threads = k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>();
-<a name="l00126"></a>00126       
-<a name="l00127"></a>00127       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00128"></a>00128       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(U.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), U.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), U.<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(),
-<a name="l00129"></a>00129                                                               <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(<span class="keywordtype">int</span>) * (threads+2)),
-<a name="l00130"></a>00130                                                               <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * (threads+2)),
-<a name="l00131"></a>00131                                                               vec, U.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()));        
-<a name="l00132"></a>00132     }
-<a name="l00133"></a>00133 
-<a name="l00140"></a>00140     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT, <span class="keyword">typename</span> TAG>
-<a name="l00141"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aaa338acd99f7bfac8c0210ab05ecaa09">00141</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a> <span class="keyword">const</span> & L,
-<a name="l00142"></a>00142                                         <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00143"></a>00143                                         <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">viennacl::linalg::upper_tag</a> <span class="keyword">const</span> & tag)
-<a name="l00144"></a>00144     {
-<a name="l00145"></a>00145       <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00146"></a>00146       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> result(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00147"></a>00147       result = vec;
-<a name="l00148"></a>00148     
-<a name="l00149"></a>00149       <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(L, result, tag);
-<a name="l00150"></a>00150     
-<a name="l00151"></a>00151       <span class="keywordflow">return</span> result;
-<a name="l00152"></a>00152     }
-<a name="l00153"></a>00153 
-<a name="l00154"></a>00154     
-<a name="l00155"></a>00155   } <span class="comment">//namespace linalg</span>
-<a name="l00156"></a>00156 
-<a name="l00157"></a>00157 
-<a name="l00158"></a>00158 
-<a name="l00159"></a>00159     <span class="comment">//v = A * x</span>
-<a name="l00164"></a>00164 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00165"></a>00165     <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00166"></a>00166     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & 
-<a name="l00167"></a><a class="code" href="classviennacl_1_1vector.html#a4989aaec23a5611beaa87e1653824aa6">00167</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00168"></a>00168                                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00169"></a>00169                                                                                           viennacl::op_prod> & proxy) 
-<a name="l00170"></a>00170     {
-<a name="l00171"></a>00171       <span class="comment">// check for the special case x = A * x</span>
-<a name="l00172"></a>00172       <span class="keywordflow">if</span> (proxy.rhs().handle() == this-><a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>())
-<a name="l00173"></a>00173       {
-<a name="l00174"></a>00174         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> result(proxy.rhs().size());
-<a name="l00175"></a>00175         <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00176"></a>00176         *<span class="keyword">this</span> = result;
-<a name="l00177"></a>00177         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00178"></a>00178       }
-<a name="l00179"></a>00179       <span class="keywordflow">else</span>
-<a name="l00180"></a>00180       {
-<a name="l00181"></a>00181         <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00182"></a>00182         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00183"></a>00183       }
-<a name="l00184"></a>00184       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00185"></a>00185     }
-<a name="l00186"></a>00186 
-<a name="l00187"></a>00187     <span class="comment">//v += A * x</span>
-<a name="l00192"></a>00192 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00193"></a>00193     <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00194"></a>00194     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & 
-<a name="l00195"></a><a class="code" href="classviennacl_1_1vector.html#a6a36ddeab9a741c125c9d9d4d49f0e77">00195</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00196"></a>00196                                                                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00197"></a>00197                                                                                  op_prod> & proxy) 
-<a name="l00198"></a>00198     {
-<a name="l00199"></a>00199       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00200"></a>00200       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00201"></a>00201       *<span class="keyword">this</span> += result;
-<a name="l00202"></a>00202       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00203"></a>00203     }
-<a name="l00204"></a>00204 
-<a name="l00209"></a>00209     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00210"></a>00210     <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00211"></a>00211     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & 
-<a name="l00212"></a><a class="code" href="classviennacl_1_1vector.html#a26f886c3b1df2ffa849ad9ab2e9e4fe2">00212</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00213"></a>00213                                                                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00214"></a>00214                                                                                  op_prod> & proxy) 
-<a name="l00215"></a>00215     {
-<a name="l00216"></a>00216       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00217"></a>00217       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00218"></a>00218       *<span class="keyword">this</span> -= result;
-<a name="l00219"></a>00219       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00220"></a>00220     }
-<a name="l00221"></a>00221     
-<a name="l00222"></a>00222     
-<a name="l00223"></a>00223     <span class="comment">//free functions:</span>
-<a name="l00228"></a>00228 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00229"></a>00229     <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00230"></a>00230     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> 
-<a name="l00231"></a><a class="code" href="classviennacl_1_1vector.html#a34b711b607f3675c773b2c4db62b2c67">00231</a>     <a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659" title="Operator overload for the addition of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00232"></a>00232                                                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00233"></a>00233                                                                                 op_prod> & proxy) 
-<a name="l00234"></a>00234     {
-<a name="l00235"></a>00235       assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00236"></a>00236       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00237"></a>00237       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00238"></a>00238       result += *<span class="keyword">this</span>;
-<a name="l00239"></a>00239       <span class="keywordflow">return</span> result;
-<a name="l00240"></a>00240     }
-<a name="l00241"></a>00241 
-<a name="l00246"></a>00246     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00247"></a>00247     <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00248"></a>00248     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> 
-<a name="l00249"></a><a class="code" href="classviennacl_1_1vector.html#aaa7f595ff02bf1124f5c5e45fad08896">00249</a>     <a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57" title="Operator overload for the subtraction of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00250"></a>00250                                                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00251"></a>00251                                                                                 op_prod> & proxy) 
-<a name="l00252"></a>00252     {
-<a name="l00253"></a>00253       assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00254"></a>00254       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00255"></a>00255       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00256"></a>00256       result = *<span class="keyword">this</span> - result;
-<a name="l00257"></a>00257       <span class="keywordflow">return</span> result;
-<a name="l00258"></a>00258     }
-<a name="l00259"></a>00259 
-<a name="l00260"></a>00260 } <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 
-<a name="l00262"></a>00262 
-<a name="l00263"></a>00263 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix__source_8h.html b/doc/doxygen/html/compressed__matrix__source_8h.html
deleted file mode 100644
index c705657..0000000
--- a/doc/doxygen/html/compressed__matrix__source_8h.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="compressed__matrix__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">compressed_matrix_align4_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">compressed_matrix_align1_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">compressed_matrix_align8_vec_mul</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix__source_8h_source.html b/doc/doxygen/html/compressed__matrix__source_8h_source.html
deleted file mode 100644
index 9c9b5f5..0000000
--- a/doc/doxygen/html/compressed__matrix__source_8h_source.html
+++ /dev/null
@@ -1,541 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="compressed__matrix__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_COMPRESSED_MATRIX_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COMPRESSED_MATRIX_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">compressed_matrix_align4_vec_mul</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"__kernel void vec_mul(\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"          __global const unsigned int * row_indices,\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"          __global const uint4 * column_indices, \n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"          __global const float4 * elements,\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * vector,  \n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int size)\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"{ \n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"  float dot_prod;\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"  unsigned int start, next_stop;\n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"  uint4 col_idx;\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"  float4 tmp_vec;\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"  float4 tmp_entries;\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"  {\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"    dot_prod = 0.0f;\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"    start = row_indices[row] / 4;\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"    next_stop = row_indices[row+1] / 4;\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"    for (unsigned int i = start; i < next_stop; ++i)\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"    {\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"      col_idx = column_indices[i];\n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"      tmp_entries = elements[i];\n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"      tmp_vec.x = vector[col_idx.x];\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"      tmp_vec.y = vector[col_idx.y];\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"      tmp_vec.z = vector[col_idx.z];\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"      tmp_vec.w = vector[col_idx.w];\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"      dot_prod += dot(tmp_entries, tmp_vec);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"    }\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">"    result[row] = dot_prod;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"  }\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"}\n"</span>
-<a name="l00042"></a>00042 ; <span class="comment">//compressed_matrix_align4_vec_mul</span>
-<a name="l00043"></a>00043 
-<a name="l00044"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">00044</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">compressed_matrix_align1_vec_mul</a> = 
-<a name="l00045"></a>00045 <span class="stringliteral">"__kernel void vec_mul(\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"          __global const unsigned int * row_indices,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"          __global const unsigned int * column_indices, \n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"          __global const float * elements,\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"          __global const float * vector,  \n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"{ \n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"  {\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"    float dot_prod = 0.0f;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"    unsigned int row_end = row_indices[row+1];\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"    for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"      dot_prod += elements[i] * vector[column_indices[i]];\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"    result[row] = dot_prod;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"  }\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"}\n"</span>
-<a name="l00062"></a>00062 ; <span class="comment">//compressed_matrix_align1_vec_mul</span>
-<a name="l00063"></a>00063 
-<a name="l00064"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">00064</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a> = 
-<a name="l00065"></a>00065 <span class="stringliteral">"__kernel void row_scaling_2(\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"          __global const unsigned int * row_indices,\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"          __global const unsigned int * column_indices, \n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"          __global const float * elements,\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"          __global float * diag_M_inv,\n"</span>
-<a name="l00070"></a>00070 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00071"></a>00071 <span class="stringliteral">"{ \n"</span>
-<a name="l00072"></a>00072 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"</span>
-<a name="l00073"></a>00073 <span class="stringliteral">"  {\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"    float dot_prod = 0.0f;\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"    float temp = 0.0f;\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"    unsigned int row_end = row_indices[row+1];\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"    for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"    {\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"      temp = elements[i];\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"      dot_prod += temp * temp;\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"    }\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"    diag_M_inv[row] = 1.0f / sqrt(dot_prod);\n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"  }\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"}\n"</span>
-<a name="l00085"></a>00085 ; <span class="comment">//compressed_matrix_align1_row_scaling_2</span>
-<a name="l00086"></a>00086 
-<a name="l00087"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">00087</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a> = 
-<a name="l00088"></a>00088 <span class="stringliteral">"__kernel void jacobi_precond(\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"          __global const unsigned int * row_indices,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"          __global const unsigned int * column_indices, \n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"          __global const float * elements,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"          __global float * diag_M_inv,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"  {\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"    float diag = 1.0f;\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"    unsigned int row_end = row_indices[row+1];\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"    for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"    {\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"      if (row == column_indices[i])\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"      {\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"        diag = elements[i];\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"        break;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"      }\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"    }\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"    diag_M_inv[row] = 1.0f / diag;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"  }\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"}\n"</span>
-<a name="l00110"></a>00110 ; <span class="comment">//compressed_matrix_align1_jacobi_precond</span>
-<a name="l00111"></a>00111 
-<a name="l00112"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">00112</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a> = 
-<a name="l00113"></a>00113 <span class="stringliteral">"__kernel void row_scaling_1(\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"          __global const unsigned int * row_indices,\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"          __global const unsigned int * column_indices, \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"          __global const float * elements,\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"          __global float * diag_M_inv,\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"{ \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"  {\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    float dot_prod = 0.0f;\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"    unsigned int row_end = row_indices[row+1];\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"    for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"      dot_prod += fabs(elements[i]);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"    diag_M_inv[row] = 1.0f / dot_prod;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"  }\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"}\n"</span>
-<a name="l00129"></a>00129 ; <span class="comment">//compressed_matrix_align1_row_scaling_1</span>
-<a name="l00130"></a>00130 
-<a name="l00131"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">00131</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a> = 
-<a name="l00132"></a>00132 <span class="stringliteral">" \n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">"// compute y in Ly = z for incomplete LU factorizations of a sparse matrix in compressed format\n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">"__kernel void lu_forward(\n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">"          __global const unsigned int * row_indices,\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"          __global const unsigned int * column_indices, \n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"          __global const float * elements,\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"          __local  int * buffer,                              \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          __local  float * vec_entries,   //a memory block from vector\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          __global float * vector,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"{\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"  int waiting_for; //block index that must be finished before the current thread can start\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"  unsigned int waiting_for_index;\n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"  int block_offset;\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"  unsigned int col;\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"  unsigned int row;\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"  unsigned int row_index_end;\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"  \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"  //backward substitution: one thread per row in blocks of get_global_size(0)\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"  for (unsigned int block_num = 0; block_num <= size / get_global_size(0); ++block_num)\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"  {\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"    block_offset = block_num * get_global_size(0);\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"    row = block_offset + get_global_id(0);\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"    buffer[get_global_id(0)] = 0; //set flag to 'undone'\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"    waiting_for = -1;\n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"    if (row < size)\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">"    {\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">"      vec_entries[get_global_id(0)] = vector[row];\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">"      waiting_for_index = row_indices[row];\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"      row_index_end = row_indices[row+1];\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"    }\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"    \n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"    if (get_global_id(0) == 0)\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"      buffer[get_global_size(0)] = 1;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"    //try to eliminate all lines in the block. \n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"    //in worst case scenarios, in each step only one line can be substituted, thus loop\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"    for (unsigned int k = 0; k<get_global_size(0); ++k)\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"    {\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"      barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"      if (row < size) //valid index?\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"      {\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"        if (waiting_for >= 0)\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"        {\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"          if (buffer[waiting_for] == 1)\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"            waiting_for = -1;\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"        }\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"        \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"        if (waiting_for == -1) //substitution not yet done, check whether possible\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"        {\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"          //check whether reduction is possible:\n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"          for (unsigned int j = waiting_for_index; j < row_index_end; ++j)\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"          {\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"            col = column_indices[j];\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">"            if (col < block_offset) //index valid, but not from current block\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">"              vec_entries[get_global_id(0)] -= elements[j] * vector[col];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"            else if (col < row)  //index is from current block\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"            {\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"              if (buffer[col - block_offset] == 0) //entry is not yet calculated\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"              {\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"                waiting_for = col - block_offset;\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"                waiting_for_index = j;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"                break;\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">"              }\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">"              else  //updated entry is available in shared memory:\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">"                vec_entries[get_global_id(0)] -= elements[j] * vec_entries[col - block_offset];\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"            }\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"          }\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"          \n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"          if (waiting_for == -1)  //this row is done\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          {\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"            buffer[get_global_id(0)] = 1;\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"            waiting_for = -2; //magic number: thread is finished\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"          }\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"        } \n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"      } //row < size\n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"      else\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"        buffer[get_global_id(0)] = 1; //work done (because there is no work to be done at all...)\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"      ///////// check whether all threads are done. If yes, exit loop /////////////\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"      \n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"      if (buffer[get_global_id(0)] == 0)\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"        buffer[get_global_size(0)] = 0;\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">"      barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"      \n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">"      if (buffer[get_global_size(0)] > 0)  //all threads break this loop simultaneously\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">"        break;\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"      if (get_global_id(0) == 0)\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"        buffer[get_global_size(0)] = 1;\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"    } //for k\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"    \n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"    //write to vector:\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"    if (row < size)\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"      vector[row] = vec_entries[get_global_id(0)];\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"    \n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"  } //for block_num\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"}\n"</span>
-<a name="l00228"></a>00228 ; <span class="comment">//compressed_matrix_align1_lu_forward</span>
-<a name="l00229"></a>00229 
-<a name="l00230"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">00230</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a> = 
-<a name="l00231"></a>00231 <span class="stringliteral">"void helper_bicgstab_kernel2_parallel_reduction( __local float * tmp_buffer )\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"{\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  for (unsigned int stride = get_local_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"  {\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"    if (get_local_id(0) < stride)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"      tmp_buffer[get_local_id(0)] += tmp_buffer[get_local_id(0)+stride];\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"  }\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"}\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"//////// inner products:\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"float bicgstab_kernel2_inner_prod(\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"          unsigned int size,\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"          __local float * tmp_buffer)\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"{\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"  float tmp = 0;\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"  unsigned int i_end = ((size - 1) / get_local_size(0) + 1) * get_local_size(0);\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"  for (unsigned int i = get_local_id(0); i < i_end; i += get_local_size(0))\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"  {\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"    if (i < size)\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"      tmp += vec1[i] * vec2[i];\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"  }\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"  tmp_buffer[get_local_id(0)] = tmp;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"  \n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">"  helper_bicgstab_kernel2_parallel_reduction(tmp_buffer);\n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">"  return tmp_buffer[0];\n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">"}\n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">"__kernel void bicgstab_kernel2(\n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">"          __global const float * tmp0,\n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">"          __global const float * tmp1,\n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">"          __global const float * r0star, \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">"          __global const float * s, \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">"          __global float * p, \n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">"          __global float * residual,\n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">"          __global const float * alpha,\n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">"          __global float * ip_rr0star,\n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">"          __global float * error_estimate,\n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">"          __local float * tmp_buffer,\n"</span>
-<a name="l00272"></a>00272 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00273"></a>00273 <span class="stringliteral">"{ \n"</span>
-<a name="l00274"></a>00274 <span class="stringliteral">"  float omega_local = bicgstab_kernel2_inner_prod(tmp1, s, size, tmp_buffer) / bicgstab_kernel2_inner_prod(tmp1, tmp1, size, tmp_buffer);\n"</span>
-<a name="l00275"></a>00275 <span class="stringliteral">"  float alpha_local = alpha[0];\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">"  \n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">"  //result += alpha * p + omega * s;\n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">"  for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">"    result[i] += alpha_local * p[i] + omega_local * s[i];\n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">"  //residual = s - omega * tmp1;\n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">"  for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">"    residual[i] = s[i] - omega_local * tmp1[i];\n"</span>
-<a name="l00283"></a>00283 <span class="stringliteral">"  //new_ip_rr0star = viennacl::linalg::inner_prod(residual, r0star);\n"</span>
-<a name="l00284"></a>00284 <span class="stringliteral">"  float new_ip_rr0star = bicgstab_kernel2_inner_prod(residual, r0star, size, tmp_buffer);\n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">"  float beta = (new_ip_rr0star / ip_rr0star[0]) * (alpha_local / omega_local);\n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">"  \n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">"  //p = residual + beta * (p - omega*tmp0);\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">"  for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">"    p[i] = residual[i] + beta * (p[i] - omega_local * tmp0[i]);\n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">"  //compute norm of residual:\n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">"  float new_error_estimate = bicgstab_kernel2_inner_prod(residual, residual, size, tmp_buffer);\n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">"  barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">"  //update values:\n"</span>
-<a name="l00294"></a>00294 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00295"></a>00295 <span class="stringliteral">"  {\n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">"    error_estimate[0] = new_error_estimate;\n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">"    ip_rr0star[0] = new_ip_rr0star;\n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">"  }\n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">"}\n"</span>
-<a name="l00300"></a>00300 ; <span class="comment">//compressed_matrix_align1_bicgstab_kernel2</span>
-<a name="l00301"></a>00301 
-<a name="l00302"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">00302</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a> = 
-<a name="l00303"></a>00303 <span class="stringliteral">"// compute x in Ux = y for incomplete LU factorizations of a sparse matrix in compressed format\n"</span>
-<a name="l00304"></a>00304 <span class="stringliteral">"__kernel void lu_backward(\n"</span>
-<a name="l00305"></a>00305 <span class="stringliteral">"          __global const unsigned int * row_indices,\n"</span>
-<a name="l00306"></a>00306 <span class="stringliteral">"          __global const unsigned int * column_indices, \n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"          __global const float * elements,\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">"          __local  int * buffer,                              \n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">"          __local  float * vec_entries,   //a memory block from vector\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">"          __global float * vector,\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">"{\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">"  int waiting_for; //block index that must be finished before the current thread can start\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">"  unsigned int waiting_for_index;\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">"  unsigned int block_offset;\n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">"  unsigned int col;\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">"  unsigned int row;\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">"  unsigned int row_index_end;\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">"  float diagonal_entry = 42;\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">"  \n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">"  //forward substitution: one thread per row in blocks of get_global_size(0)\n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">"  for (int block_num = size / get_global_size(0); block_num > -1; --block_num)\n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">"  {\n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">"    block_offset = block_num * get_global_size(0);\n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">"    row = block_offset + get_global_id(0);\n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">"    buffer[get_global_id(0)] = 0; //set flag to 'undone'\n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">"    waiting_for = -1;\n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">"    \n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">"    if (row < size)\n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">"    {\n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">"      vec_entries[get_global_id(0)] = vector[row];\n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">"      waiting_for_index = row_indices[row];\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">"      row_index_end = row_indices[row+1];\n"</span>
-<a name="l00334"></a>00334 <span class="stringliteral">"      diagonal_entry = column_indices[waiting_for_index];\n"</span>
-<a name="l00335"></a>00335 <span class="stringliteral">"    }\n"</span>
-<a name="l00336"></a>00336 <span class="stringliteral">"    \n"</span>
-<a name="l00337"></a>00337 <span class="stringliteral">"    if (get_global_id(0) == 0)\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">"       buffer[get_global_size(0)] = 1;\n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">"    //try to eliminate all lines in the block. \n"</span>
-<a name="l00340"></a>00340 <span class="stringliteral">"    //in worst case scenarios, in each step only one line can be substituted, thus loop\n"</span>
-<a name="l00341"></a>00341 <span class="stringliteral">"    for (unsigned int k = 0; k<get_global_size(0); ++k)\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">"    {\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">"      barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">"      if (row < size) //valid index?\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">"      {\n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">"        if (waiting_for >= 0)\n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">"        {\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">"          if (buffer[waiting_for] == 1)\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">"            waiting_for = -1;\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">"        }\n"</span>
-<a name="l00351"></a>00351 <span class="stringliteral">"        \n"</span>
-<a name="l00352"></a>00352 <span class="stringliteral">"        if (waiting_for == -1) //substitution not yet done, check whether possible\n"</span>
-<a name="l00353"></a>00353 <span class="stringliteral">"        {\n"</span>
-<a name="l00354"></a>00354 <span class="stringliteral">"          //check whether reduction is possible:\n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">"          for (unsigned int j = waiting_for_index; j < row_index_end; ++j)\n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">"          {\n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">"            col = column_indices[j];\n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">"            barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">"            if (col >= block_offset + get_global_size(0))  //index valid, but not from current block\n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">"              vec_entries[get_global_id(0)] -= elements[j] * vector[col];\n"</span>
-<a name="l00361"></a>00361 <span class="stringliteral">"            else if (col > row)  //index is from current block\n"</span>
-<a name="l00362"></a>00362 <span class="stringliteral">"            {\n"</span>
-<a name="l00363"></a>00363 <span class="stringliteral">"              if (buffer[col - block_offset] == 0) //entry is not yet calculated\n"</span>
-<a name="l00364"></a>00364 <span class="stringliteral">"              {\n"</span>
-<a name="l00365"></a>00365 <span class="stringliteral">"                waiting_for = col - block_offset;\n"</span>
-<a name="l00366"></a>00366 <span class="stringliteral">"                waiting_for_index = j;\n"</span>
-<a name="l00367"></a>00367 <span class="stringliteral">"                break;\n"</span>
-<a name="l00368"></a>00368 <span class="stringliteral">"              }\n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">"              else  //updated entry is available in shared memory:\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">"                vec_entries[get_global_id(0)] -= elements[j] * vec_entries[col - block_offset];\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">"            }\n"</span>
-<a name="l00372"></a>00372 <span class="stringliteral">"            else if (col == row)\n"</span>
-<a name="l00373"></a>00373 <span class="stringliteral">"              diagonal_entry = elements[j];\n"</span>
-<a name="l00374"></a>00374 <span class="stringliteral">"          }\n"</span>
-<a name="l00375"></a>00375 <span class="stringliteral">"          \n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">"          if (waiting_for == -1)  //this row is done\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">"          {\n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">"            if (row == 0)\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">"              vec_entries[get_global_id(0)] /= elements[0];\n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">"            else\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">"              vec_entries[get_global_id(0)] /= diagonal_entry;\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">"            buffer[get_global_id(0)] = 1;\n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">"            waiting_for = -2; //magic number: thread is finished\n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">"          }\n"</span>
-<a name="l00385"></a>00385 <span class="stringliteral">"        } \n"</span>
-<a name="l00386"></a>00386 <span class="stringliteral">"      } //row < size\n"</span>
-<a name="l00387"></a>00387 <span class="stringliteral">"      else\n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">"        buffer[get_global_id(0)] = 1; //work done (because there is no work to be done at all...)\n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">"      \n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">"      ///////// check whether all threads are done. If yes, exit loop /////////////\n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">"      if (buffer[get_global_id(0)] == 0)\n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">"        buffer[get_global_size(0)] = 0;\n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">"      barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">"      \n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">"      if (buffer[get_global_size(0)] > 0)  //all threads break the loop simultaneously\n"</span>
-<a name="l00396"></a>00396 <span class="stringliteral">"        break;\n"</span>
-<a name="l00397"></a>00397 <span class="stringliteral">"      if (get_global_id(0) == 0)\n"</span>
-<a name="l00398"></a>00398 <span class="stringliteral">"        buffer[get_global_size(0)] = 1;\n"</span>
-<a name="l00399"></a>00399 <span class="stringliteral">"    } //for k\n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">"    if (row < size)\n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">"      vector[row] = vec_entries[get_global_id(0)];\n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">"      //vector[row] = diagonal_entry;\n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">"    \n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">"    //if (row == 0)\n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">"      //vector[0] = diagonal_entry;\n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">"      //vector[0] = elements[0];\n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">"  } //for block_num\n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">"}\n"</span>
-<a name="l00410"></a>00410 ; <span class="comment">//compressed_matrix_align1_lu_backward</span>
-<a name="l00411"></a>00411 
-<a name="l00412"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">00412</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a> = 
-<a name="l00413"></a>00413 <span class="stringliteral">"void helper_bicgstab_kernel1_parallel_reduction( __local float * tmp_buffer )\n"</span>
-<a name="l00414"></a>00414 <span class="stringliteral">"{\n"</span>
-<a name="l00415"></a>00415 <span class="stringliteral">"  for (unsigned int stride = get_local_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00416"></a>00416 <span class="stringliteral">"  {\n"</span>
-<a name="l00417"></a>00417 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00418"></a>00418 <span class="stringliteral">"    if (get_local_id(0) < stride)\n"</span>
-<a name="l00419"></a>00419 <span class="stringliteral">"      tmp_buffer[get_local_id(0)] += tmp_buffer[get_local_id(0)+stride];\n"</span>
-<a name="l00420"></a>00420 <span class="stringliteral">"  }\n"</span>
-<a name="l00421"></a>00421 <span class="stringliteral">"}\n"</span>
-<a name="l00422"></a>00422 <span class="stringliteral">"//////// inner products:\n"</span>
-<a name="l00423"></a>00423 <span class="stringliteral">"float bicgstab_kernel1_inner_prod(\n"</span>
-<a name="l00424"></a>00424 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00425"></a>00425 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00426"></a>00426 <span class="stringliteral">"          unsigned int size,\n"</span>
-<a name="l00427"></a>00427 <span class="stringliteral">"          __local float * tmp_buffer)\n"</span>
-<a name="l00428"></a>00428 <span class="stringliteral">"{\n"</span>
-<a name="l00429"></a>00429 <span class="stringliteral">"  float tmp = 0;\n"</span>
-<a name="l00430"></a>00430 <span class="stringliteral">"  unsigned int i_end = ((size - 1) / get_local_size(0) + 1) * get_local_size(0);\n"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">"  for (unsigned int i = get_local_id(0); i < i_end; i += get_local_size(0))\n"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">"  {\n"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">"    if (i < size)\n"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">"      tmp += vec1[i] * vec2[i];\n"</span>
-<a name="l00435"></a>00435 <span class="stringliteral">"  }\n"</span>
-<a name="l00436"></a>00436 <span class="stringliteral">"  tmp_buffer[get_local_id(0)] = tmp;\n"</span>
-<a name="l00437"></a>00437 <span class="stringliteral">"  \n"</span>
-<a name="l00438"></a>00438 <span class="stringliteral">"  helper_bicgstab_kernel1_parallel_reduction(tmp_buffer);\n"</span>
-<a name="l00439"></a>00439 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00440"></a>00440 <span class="stringliteral">"  return tmp_buffer[0];\n"</span>
-<a name="l00441"></a>00441 <span class="stringliteral">"}\n"</span>
-<a name="l00442"></a>00442 <span class="stringliteral">"__kernel void bicgstab_kernel1(\n"</span>
-<a name="l00443"></a>00443 <span class="stringliteral">"          __global const float * tmp0,\n"</span>
-<a name="l00444"></a>00444 <span class="stringliteral">"          __global const float * r0star, \n"</span>
-<a name="l00445"></a>00445 <span class="stringliteral">"          __global const float * residual,\n"</span>
-<a name="l00446"></a>00446 <span class="stringliteral">"          __global float * s,\n"</span>
-<a name="l00447"></a>00447 <span class="stringliteral">"          __global float * alpha,\n"</span>
-<a name="l00448"></a>00448 <span class="stringliteral">"          __global const float * ip_rr0star,\n"</span>
-<a name="l00449"></a>00449 <span class="stringliteral">"          __local float * tmp_buffer,\n"</span>
-<a name="l00450"></a>00450 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00451"></a>00451 <span class="stringliteral">"{ \n"</span>
-<a name="l00452"></a>00452 <span class="stringliteral">"  float alpha_local = ip_rr0star[0] / bicgstab_kernel1_inner_prod(tmp0, r0star, size, tmp_buffer);\n"</span>
-<a name="l00453"></a>00453 <span class="stringliteral">"  \n"</span>
-<a name="l00454"></a>00454 <span class="stringliteral">"  for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"</span>
-<a name="l00455"></a>00455 <span class="stringliteral">"    s[i] = residual[i] - alpha_local * tmp0[i];\n"</span>
-<a name="l00456"></a>00456 <span class="stringliteral">"  \n"</span>
-<a name="l00457"></a>00457 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00458"></a>00458 <span class="stringliteral">"    alpha[0] = alpha_local;\n"</span>
-<a name="l00459"></a>00459 <span class="stringliteral">"}\n"</span>
-<a name="l00460"></a>00460 ; <span class="comment">//compressed_matrix_align1_bicgstab_kernel1</span>
-<a name="l00461"></a>00461 
-<a name="l00462"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">00462</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">compressed_matrix_align8_vec_mul</a> = 
-<a name="l00463"></a>00463 <span class="stringliteral">"__kernel void vec_mul(\n"</span>
-<a name="l00464"></a>00464 <span class="stringliteral">"          __global const unsigned int * row_indices,\n"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">"          __global const uint8 * column_indices, \n"</span>
-<a name="l00466"></a>00466 <span class="stringliteral">"          __global const float8 * elements,\n"</span>
-<a name="l00467"></a>00467 <span class="stringliteral">"          __global const float * vector,  \n"</span>
-<a name="l00468"></a>00468 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00469"></a>00469 <span class="stringliteral">"          unsigned int size)\n"</span>
-<a name="l00470"></a>00470 <span class="stringliteral">"{ \n"</span>
-<a name="l00471"></a>00471 <span class="stringliteral">"  float dot_prod;\n"</span>
-<a name="l00472"></a>00472 <span class="stringliteral">"  unsigned int start, next_stop;\n"</span>
-<a name="l00473"></a>00473 <span class="stringliteral">"  uint8 col_idx;\n"</span>
-<a name="l00474"></a>00474 <span class="stringliteral">"  float8 tmp_vec;\n"</span>
-<a name="l00475"></a>00475 <span class="stringliteral">"  float8 tmp_entries;\n"</span>
-<a name="l00476"></a>00476 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"</span>
-<a name="l00477"></a>00477 <span class="stringliteral">"  {\n"</span>
-<a name="l00478"></a>00478 <span class="stringliteral">"    dot_prod = 0.0f;\n"</span>
-<a name="l00479"></a>00479 <span class="stringliteral">"    start = row_indices[row] / 8;\n"</span>
-<a name="l00480"></a>00480 <span class="stringliteral">"    next_stop = row_indices[row+1] / 8;\n"</span>
-<a name="l00481"></a>00481 <span class="stringliteral">"    for (unsigned int i = start; i < next_stop; ++i)\n"</span>
-<a name="l00482"></a>00482 <span class="stringliteral">"    {\n"</span>
-<a name="l00483"></a>00483 <span class="stringliteral">"      col_idx = column_indices[i];\n"</span>
-<a name="l00484"></a>00484 <span class="stringliteral">"      tmp_entries = elements[i];\n"</span>
-<a name="l00485"></a>00485 <span class="stringliteral">"      tmp_vec.s0 = vector[col_idx.s0];\n"</span>
-<a name="l00486"></a>00486 <span class="stringliteral">"      tmp_vec.s1 = vector[col_idx.s1];\n"</span>
-<a name="l00487"></a>00487 <span class="stringliteral">"      tmp_vec.s2 = vector[col_idx.s2];\n"</span>
-<a name="l00488"></a>00488 <span class="stringliteral">"      tmp_vec.s3 = vector[col_idx.s3];\n"</span>
-<a name="l00489"></a>00489 <span class="stringliteral">"      tmp_vec.s4 = vector[col_idx.s4];\n"</span>
-<a name="l00490"></a>00490 <span class="stringliteral">"      tmp_vec.s5 = vector[col_idx.s5];\n"</span>
-<a name="l00491"></a>00491 <span class="stringliteral">"      tmp_vec.s6 = vector[col_idx.s6];\n"</span>
-<a name="l00492"></a>00492 <span class="stringliteral">"      tmp_vec.s7 = vector[col_idx.s7];\n"</span>
-<a name="l00493"></a>00493 <span class="stringliteral">"      dot_prod += dot(tmp_entries.lo, tmp_vec.lo);\n"</span>
-<a name="l00494"></a>00494 <span class="stringliteral">"      dot_prod += dot(tmp_entries.hi, tmp_vec.hi);\n"</span>
-<a name="l00495"></a>00495 <span class="stringliteral">"    }\n"</span>
-<a name="l00496"></a>00496 <span class="stringliteral">"    result[row] = dot_prod;\n"</span>
-<a name="l00497"></a>00497 <span class="stringliteral">"  }\n"</span>
-<a name="l00498"></a>00498 <span class="stringliteral">"}\n"</span>
-<a name="l00499"></a>00499 ; <span class="comment">//compressed_matrix_align8_vec_mul</span>
-<a name="l00500"></a>00500 
-<a name="l00501"></a>00501   }  <span class="comment">//namespace kernels</span>
-<a name="l00502"></a>00502  }  <span class="comment">//namespace linalg</span>
-<a name="l00503"></a>00503 }  <span class="comment">//namespace viennacl</span>
-<a name="l00504"></a>00504 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/context_8hpp.html b/doc/doxygen/html/context_8hpp.html
deleted file mode 100644
index 7ab027d..0000000
--- a/doc/doxygen/html/context_8hpp.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/context.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/context.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include <CL/cl.h></code><br/>
-<code>#include <algorithm></code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-<code>#include "<a class="el" href="ocl_2forwards_8h_source.html">viennacl/ocl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="program_8hpp_source.html">viennacl/ocl/program.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="command__queue_8hpp_source.html">viennacl/ocl/command_queue.hpp</a>"</code><br/>
-
-<p><a href="context_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/context_8hpp_source.html b/doc/doxygen/html/context_8hpp_source.html
deleted file mode 100644
index fdd8987..0000000
--- a/doc/doxygen/html/context_8hpp_source.html
+++ /dev/null
@@ -1,423 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/context.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/context.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="context_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_CONTEXT_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_CONTEXT_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#else</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include <algorithm></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <vector></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include <map></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="ocl_2forwards_8h.html" title="This file provides the forward declarations for the OpenCL layer of ViennaCL.">viennacl/ocl/forwards.h</a>"</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="program_8hpp.html" title="Implements an OpenCL program class for ViennaCL.">viennacl/ocl/program.hpp</a>"</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="command__queue_8hpp.html" title="Implementations of command queue representations.">viennacl/ocl/command_queue.hpp</a>"</span>
-<a name="l00037"></a>00037 
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>viennacl
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040   <span class="keyword">namespace </span>ocl
-<a name="l00041"></a>00041   {
-<a name="l00042"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html">00042</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1context.html">context</a>
-<a name="l00043"></a>00043     {
-<a name="l00044"></a>00044       <span class="keyword">typedef</span> std::vector< viennacl::ocl::program >   ProgramContainer;
-<a name="l00045"></a>00045       
-<a name="l00046"></a>00046       <span class="keyword">public</span>:
-<a name="l00047"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a23a1f7bd41068b622c4015f5654ee3f3">00047</a>         <a class="code" href="classviennacl_1_1ocl_1_1context.html#a23a1f7bd41068b622c4015f5654ee3f3">context</a>() : initialized_(false), device_type_(CL_DEVICE_TYPE_DEFAULT), current_device_id(0) {}
-<a name="l00048"></a>00048         
-<a name="l00049"></a>00049         
-<a name="l00051"></a>00051 
-<a name="l00052"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a721482c91a5042d1457b76addf95ff19">00052</a>         cl_device_type <a class="code" href="classviennacl_1_1ocl_1_1context.html#a721482c91a5042d1457b76addf95ff19" title="Returns the default device type for the context.">default_device_type</a>()
-<a name="l00053"></a>00053         {
-<a name="l00054"></a>00054           <span class="keywordflow">return</span> device_type_;
-<a name="l00055"></a>00055         }
-<a name="l00056"></a>00056         
-<a name="l00058"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#aa52e297b2bed0c1bda1d7ca8ecdd0620">00058</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a721482c91a5042d1457b76addf95ff19" title="Returns the default device type for the context.">default_device_type</a>(cl_device_type dtype) 
-<a name="l00059"></a>00059         { 
-<a name="l00060"></a>00060 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00061"></a>00061 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Setting new device type for context "</span> << h_ << std::endl;
-<a name="l00062"></a>00062 <span class="preprocessor">          #endif</span>
-<a name="l00063"></a>00063 <span class="preprocessor"></span>          <span class="keywordflow">if</span> (!initialized_)
-<a name="l00064"></a>00064             device_type_ = dtype; <span class="comment">//assume that the user provided a correct value</span>
-<a name="l00065"></a>00065         }
-<a name="l00066"></a>00066         
-<a name="l00068"></a>00068 
-<a name="l00069"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#acd464974135d4def89834832207da4b9">00069</a>         std::vector<viennacl::ocl::device> <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#acd464974135d4def89834832207da4b9" title="Returns a vector with all devices in this context.">devices</a>()<span class="keyword"> const</span>
-<a name="l00070"></a>00070 <span class="keyword">        </span>{
-<a name="l00071"></a>00071           <span class="keywordflow">return</span> devices_;
-<a name="l00072"></a>00072         }
-<a name="l00073"></a>00073         
-<a name="l00075"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#ad1be9bca91f95427bc2875827baadab4">00075</a>         <a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#ad1be9bca91f95427bc2875827baadab4" title="Returns the current device.">current_device</a>()<span class="keyword"> const</span>
-<a name="l00076"></a>00076 <span class="keyword">        </span>{
-<a name="l00077"></a>00077           <span class="comment">//std::cout << "Current device id in context: " << current_device_id << std::endl;</span>
-<a name="l00078"></a>00078           <span class="keywordflow">return</span> devices_[current_device_id];
-<a name="l00079"></a>00079         }
-<a name="l00080"></a>00080         
-<a name="l00082"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a9f74ed0d416018dc2825ddc6f4d8101e">00082</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a9f74ed0d416018dc2825ddc6f4d8101e" title="Switches the current device to the i-th device in this context.">switch_device</a>(<span class="keywordtype">size_t</span> i)
-<a name="l00083"></a>00083         {
-<a name="l00084"></a>00084           assert(i >= 0 && i < devices_.size());
-<a name="l00085"></a>00085           current_device_id = i;
-<a name="l00086"></a>00086         }
-<a name="l00087"></a>00087 
-<a name="l00089"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a3d316253d55eade417eee44bb38b127c">00089</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a9f74ed0d416018dc2825ddc6f4d8101e" title="Switches the current device to the i-th device in this context.">switch_device</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> <span class="keyword">const</span> & d)
-<a name="l00090"></a>00090         {
-<a name="l00091"></a>00091 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00092"></a>00092 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Setting new current device for context "</span> << h_ << std::endl;
-<a name="l00093"></a>00093 <span class="preprocessor">          #endif</span>
-<a name="l00094"></a>00094 <span class="preprocessor"></span>          <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;
-<a name="l00095"></a>00095           <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<devices_.size(); ++i)
-<a name="l00096"></a>00096           {
-<a name="l00097"></a>00097             <span class="keywordflow">if</span> (devices_[i] == d)
-<a name="l00098"></a>00098             {
-<a name="l00099"></a>00099               found = <span class="keyword">true</span>;
-<a name="l00100"></a>00100               current_device_id = i;
-<a name="l00101"></a>00101               <span class="keywordflow">break</span>;
-<a name="l00102"></a>00102             }
-<a name="l00103"></a>00103           }
-<a name="l00104"></a>00104           <span class="keywordflow">if</span> (found == <span class="keyword">false</span>)
-<a name="l00105"></a>00105             std::cerr << <span class="stringliteral">"ViennaCL: Warning: Could not set device "</span> << d.<a class="code" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07" title="Returns the device name.">name</a>() << <span class="stringliteral">" for context."</span> << std::endl;
-<a name="l00106"></a>00106         }
-<a name="l00107"></a>00107         
-<a name="l00109"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5">00109</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5" title="Add a device to the context. Must be done before the context is initialized.">add_device</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> <span class="keyword">const</span> & d)
-<a name="l00110"></a>00110         {
-<a name="l00111"></a>00111           assert(!initialized_ && <span class="stringliteral">"Device must be added to context before it is initialized!"</span>);
-<a name="l00112"></a>00112 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00113"></a>00113 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Adding new device to context "</span> << h_ << std::endl;
-<a name="l00114"></a>00114 <span class="preprocessor">          #endif</span>
-<a name="l00115"></a>00115 <span class="preprocessor"></span>          <span class="keywordflow">if</span> (std::find(devices_.begin(), devices_.end(), d) != devices_.end())
-<a name="l00116"></a>00116             devices_.push_back(d);
-<a name="l00117"></a>00117         }
-<a name="l00118"></a>00118 
-<a name="l00120"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a9d802c8ffe94de98a9c049dbf4a3561d">00120</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5" title="Add a device to the context. Must be done before the context is initialized.">add_device</a>(cl_device_id d)
-<a name="l00121"></a>00121         {
-<a name="l00122"></a>00122           assert(!initialized_ && <span class="stringliteral">"Device must be added to context before it is initialized!"</span>);
-<a name="l00123"></a>00123           <a class="code" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5" title="Add a device to the context. Must be done before the context is initialized.">add_device</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a>(d));
-<a name="l00124"></a>00124         }
-<a name="l00125"></a>00125 
-<a name="l00126"></a>00126 
-<a name="l00128"></a>00128         
-<a name="l00130"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a02fd73d861ef2e4aabb38c0c9ff82947">00130</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a02fd73d861ef2e4aabb38c0c9ff82947" title="Initializes a new context.">init</a>()
-<a name="l00131"></a>00131         {
-<a name="l00132"></a>00132           init_new();
-<a name="l00133"></a>00133         }
-<a name="l00134"></a>00134 
-<a name="l00136"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a22330fee3e871b4f8467c8952a94597c">00136</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a02fd73d861ef2e4aabb38c0c9ff82947" title="Initializes a new context.">init</a>(cl_context c)
-<a name="l00137"></a>00137         {
-<a name="l00138"></a>00138           init_existing(c);
-<a name="l00139"></a>00139         }
-<a name="l00140"></a>00140 
-<a name="l00141"></a>00141 <span class="comment">/*        void existing_context(cl_context context_id)</span>
-<a name="l00142"></a>00142 <span class="comment">        {</span>
-<a name="l00143"></a>00143 <span class="comment">          assert(!initialized_ && "ViennaCL: FATAL error: Provided a new context for an already initialized context.");</span>
-<a name="l00144"></a>00144 <span class="comment">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00145"></a>00145 <span class="comment">          std::cout << "ViennaCL: Reusing existing context " << h_ << std::endl;</span>
-<a name="l00146"></a>00146 <span class="comment">          #endif</span>
-<a name="l00147"></a>00147 <span class="comment">          h_ = context_id;</span>
-<a name="l00148"></a>00148 <span class="comment">        }*/</span>
-<a name="l00149"></a>00149         
-<a name="l00151"></a>00151 
-<a name="l00157"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5">00157</a>         <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(cl_mem_flags flags, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>, <span class="keywordtype">void</span> * ptr = NULL)
-<a name="l00158"></a>00158         {
-<a name="l00159"></a>00159 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00160"></a>00160 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Creating memory of size "</span> << size << <span class="stringliteral">" for context "</span> << h_ << std::endl;
-<a name="l00161"></a>00161 <span class="preprocessor">          #endif</span>
-<a name="l00162"></a>00162 <span class="preprocessor"></span>          <span class="keywordflow">if</span> (ptr)
-<a name="l00163"></a>00163             flags |= CL_MEM_COPY_HOST_PTR;
-<a name="l00164"></a>00164           cl_int err;
-<a name="l00165"></a>00165           <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> mem = clCreateBuffer(<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>(), flags, size, ptr, &err);
-<a name="l00166"></a>00166           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00167"></a>00167           <span class="keywordflow">return</span> mem;
-<a name="l00168"></a>00168         }
-<a name="l00169"></a>00169 
-<a name="l00175"></a>00175         <span class="keyword">template</span> < <span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> A, <span class="keyword">template</span> <<span class="keyword">typename</span>, <span class="keyword">typename</span>> <span class="keyword">class </span>VectorType >
-<a name="l00176"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a1e038c8113ae2ce29ce49264573aaad3">00176</a>         <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(cl_mem_flags flags, <span class="keyword">const</span> VectorType<SCALARTYPE, A> & _buffer)
-<a name="l00177"></a>00177         {
-<a name="l00178"></a>00178           <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(flags, static_cast<unsigned int>(<span class="keyword">sizeof</span>(SCALARTYPE) * _buffer.size()), (<span class="keywordtype">void</span>*)&_buffer[0]);
-<a name="l00179"></a>00179         }
-<a name="l00180"></a>00180         
-<a name="l00182"></a>00182         
-<a name="l00184"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a52bf0f755d6ac169258502c22b179d3f">00184</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a52bf0f755d6ac169258502c22b179d3f" title="Adds an existing queue for the given device to the context.">add_queue</a>(cl_device_id dev, cl_command_queue q)
-<a name="l00185"></a>00185         {
-<a name="l00186"></a>00186 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00187"></a>00187 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Adding existing queue "</span> << q << <span class="stringliteral">" for device "</span> << dev << <span class="stringliteral">" to context "</span> << h_ << std::endl;
-<a name="l00188"></a>00188 <span class="preprocessor">          #endif</span>
-<a name="l00189"></a>00189 <span class="preprocessor"></span>          queues_[dev].push_back(<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a>(q, dev));
-<a name="l00190"></a>00190         }
-<a name="l00191"></a>00191         
-<a name="l00193"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a3998738469ebf1f8168b246e2c1cd175">00193</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a52bf0f755d6ac169258502c22b179d3f" title="Adds an existing queue for the given device to the context.">add_queue</a>(cl_device_id dev)
-<a name="l00194"></a>00194         {
-<a name="l00195"></a>00195 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00196"></a>00196 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Adding new queue for device "</span> << dev << <span class="stringliteral">" to context "</span> << h_ << std::endl;
-<a name="l00197"></a>00197 <span class="preprocessor">          #endif</span>
-<a name="l00198"></a>00198 <span class="preprocessor"></span>          cl_int err;
-<a name="l00199"></a>00199           <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_command_queue></a> temp = clCreateCommandQueue(<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>(), dev, 0, &err);
-<a name="l00200"></a>00200           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00201"></a>00201           
-<a name="l00202"></a>00202           queues_[dev].push_back(<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a>(temp, dev));
-<a name="l00203"></a>00203         }
-<a name="l00204"></a>00204 
-<a name="l00206"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#ac171d50dc65c9edb5f30327d6549bd08">00206</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#ac171d50dc65c9edb5f30327d6549bd08" title="Adds a queue for the given device to the context.">add_queue</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> d) { <a class="code" href="classviennacl_1_1ocl_1_1context.html#ac171d50dc65c9edb5f30327d6549bd08" title="Adds a queue for the given device to the context.">add_queue</a>(d.<a class="code" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06" title="Returns the OpenCL device id.">id</a>()); }
-<a name="l00207"></a>00207 
-<a name="l00208"></a>00208         <span class="comment">//get queue for default device:</span>
-<a name="l00209"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">00209</a>         <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a>()
-<a name="l00210"></a>00210         {
-<a name="l00211"></a>00211           <span class="keywordflow">return</span> queues_[devices_[current_device_id].id()][0];
-<a name="l00212"></a>00212         }
-<a name="l00213"></a>00213         
-<a name="l00214"></a>00214         <span class="comment">//get a particular queue:</span>
-<a name="l00216"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a52653c861c4b28157632901b3b401a93">00216</a> <span class="comment"></span>        <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a>(cl_device_id dev, <span class="keywordtype">size_t</span> i = 0)
-<a name="l00217"></a>00217         {
-<a name="l00218"></a>00218           assert(i >= 0 && i < queues_.size() && <span class="stringliteral">"In class 'context': id invalid in get_queue()"</span>);
-<a name="l00219"></a>00219 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00220"></a>00220 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Getting queue "</span> << i << <span class="stringliteral">" for device "</span> << dev << <span class="stringliteral">" in context "</span> << h_ << std::endl;
-<a name="l00221"></a>00221 <span class="preprocessor">          #endif</span>
-<a name="l00222"></a>00222 <span class="preprocessor"></span>          <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device_index;
-<a name="l00223"></a>00223           <span class="keywordflow">for</span> (device_index = 0; device_index < devices_.size(); ++device_index)
-<a name="l00224"></a>00224           {
-<a name="l00225"></a>00225             <span class="keywordflow">if</span> (devices_[device_index] == dev)
-<a name="l00226"></a>00226               <span class="keywordflow">break</span>;
-<a name="l00227"></a>00227           }
-<a name="l00228"></a>00228           
-<a name="l00229"></a>00229           assert(device_index < devices_.size() && <span class="stringliteral">"Device not within context"</span>);
-<a name="l00230"></a>00230           
-<a name="l00231"></a>00231           <span class="keywordflow">return</span> queues_[devices_[device_index].id()][i];
-<a name="l00232"></a>00232         }
-<a name="l00233"></a>00233         
-<a name="l00235"></a>00235 
-<a name="l00237"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb">00237</a>         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(cl_program p, std::string <span class="keyword">const</span> & prog_name)
-<a name="l00238"></a>00238         {
-<a name="l00239"></a>00239           programs_.push_back(<a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>(p, prog_name));
-<a name="l00240"></a>00240           <span class="keywordflow">return</span> programs_.back();
-<a name="l00241"></a>00241         }
-<a name="l00242"></a>00242         
-<a name="l00245"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a79fd3f2c5fd14ff3cf130504949538dc">00245</a>         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(std::string <span class="keyword">const</span> & source, std::string <span class="keyword">const</span> & prog_name)
-<a name="l00246"></a>00246         {
-<a name="l00247"></a>00247           <span class="keyword">const</span> <span class="keywordtype">char</span> * source_text = source.c_str();
-<a name="l00248"></a>00248           <span class="keywordtype">size_t</span> source_size = source.size();
-<a name="l00249"></a>00249           cl_int err;
-<a name="l00250"></a>00250           
-<a name="l00251"></a>00251 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00252"></a>00252 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Adding program '"</span> << prog_name << <span class="stringliteral">"' to context "</span> << h_ << std::endl;
-<a name="l00253"></a>00253 <span class="preprocessor">          #endif</span>
-<a name="l00254"></a>00254 <span class="preprocessor"></span>          
-<a name="l00255"></a>00255           <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_program></a> temp = clCreateProgramWithSource(h_, 1, (<span class="keyword">const</span> <span class="keywordtype">char</span> **)&source_text, &source_size, &err);
-<a name="l00256"></a>00256           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00257"></a>00257           
-<a name="l00258"></a>00258           err = clBuildProgram(temp, 0, NULL, NULL, NULL, NULL);
-<a name="l00259"></a>00259 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_BUILD)</span>
-<a name="l00260"></a>00260 <span class="preprocessor"></span>            <span class="keywordtype">char</span> buffer[1024];
-<a name="l00261"></a>00261             cl_build_status status;
-<a name="l00262"></a>00262             clGetProgramBuildInfo(temp, devices_[0].<span class="keywordtype">id</span>(), CL_PROGRAM_BUILD_STATUS, <span class="keyword">sizeof</span>(cl_build_status), &status, NULL);
-<a name="l00263"></a>00263             clGetProgramBuildInfo(temp, devices_[0].<span class="keywordtype">id</span>(), CL_PROGRAM_BUILD_LOG, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, &buffer, NULL);
-<a name="l00264"></a>00264             std::cout << <span class="stringliteral">"Build Scalar: Err = "</span> << err << <span class="stringliteral">" Status = "</span> << status << std::endl;
-<a name="l00265"></a>00265             std::cout << <span class="stringliteral">"Log: "</span> << buffer << std::endl;
-<a name="l00266"></a>00266 <span class="preprocessor">          #endif</span>
-<a name="l00267"></a>00267 <span class="preprocessor"></span>          <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00268"></a>00268 
-<a name="l00269"></a>00269           programs_.push_back(<a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>(temp, prog_name));
-<a name="l00270"></a>00270           
-<a name="l00271"></a>00271           <span class="keywordflow">return</span> programs_.back();
-<a name="l00272"></a>00272         }
-<a name="l00273"></a>00273         
-<a name="l00275"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a">00275</a>         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(std::string <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">name</a>)
-<a name="l00276"></a>00276         {
-<a name="l00277"></a>00277 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00278"></a>00278 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Getting program '"</span> << name << <span class="stringliteral">"' from context "</span> << h_ << std::endl;
-<a name="l00279"></a>00279 <span class="preprocessor">          #endif</span>
-<a name="l00280"></a>00280 <span class="preprocessor"></span>          <span class="keywordflow">for</span> (ProgramContainer::iterator it = programs_.begin();
-<a name="l00281"></a>00281                 it != programs_.end();
-<a name="l00282"></a>00282                 ++it)
-<a name="l00283"></a>00283           {
-<a name="l00284"></a>00284             <span class="keywordflow">if</span> (it->name() == name)
-<a name="l00285"></a>00285               <span class="keywordflow">return</span> *it;
-<a name="l00286"></a>00286           }
-<a name="l00287"></a>00287           std::cerr << <span class="stringliteral">"Could not find program '"</span> << name << <span class="stringliteral">"'"</span> << std::endl;
-<a name="l00288"></a>00288           assert(!<span class="stringliteral">"In class 'context': name invalid in get_program()"</span>);
-<a name="l00289"></a>00289           <span class="keywordflow">return</span> programs_[0];  <span class="comment">//return a defined object</span>
-<a name="l00290"></a>00290         }
-<a name="l00291"></a>00291         
-<a name="l00293"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a69eae83a60cdc4b1365dca0e7bd93a44">00293</a>         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(<span class="keywordtype">size_t</span> <span class="keywordtype">id</span>)
-<a name="l00294"></a>00294         {
-<a name="l00295"></a>00295           assert(<span class="keywordtype">id</span> >= 0 && <span class="keywordtype">id</span> < programs_.size() && <span class="stringliteral">"In class 'context': id invalid in get_program()"</span>);
-<a name="l00296"></a>00296           <span class="keywordflow">return</span> programs_[id];
-<a name="l00297"></a>00297         }
-<a name="l00298"></a>00298         
-<a name="l00300"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a05252a29e4e6aa036db1e8b784ed28ec">00300</a>         <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a05252a29e4e6aa036db1e8b784ed28ec" title="Returns the number of programs within this context.">program_num</a>() { <span class="keywordflow">return</span> programs_.size(); }
-<a name="l00301"></a>00301 
-<a name="l00303"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a2921a13758255386f686ba24ebc86140">00303</a>         <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a2921a13758255386f686ba24ebc86140" title="Returns the number of devices within this context.">device_num</a>() { <span class="keywordflow">return</span> devices_.size(); }
-<a name="l00304"></a>00304         
-<a name="l00306"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90">00306</a>         <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_context></a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> h_; }
-<a name="l00307"></a>00307         
-<a name="l00309"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#ae03a1e8a810ded73e6a457729f02a6fe">00309</a>         <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#ae03a1e8a810ded73e6a457729f02a6fe" title="Less-than comparable for compatibility with std:map.">operator<</a>(<a class="code" href="classviennacl_1_1ocl_1_1context.html">context</a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00310"></a>00310 <span class="keyword">        </span>{
-<a name="l00311"></a>00311           <span class="keywordflow">return</span> h_ < other.h_;
-<a name="l00312"></a>00312         }
-<a name="l00313"></a>00313         
-<a name="l00314"></a>00314       <span class="keyword">private</span>:
-<a name="l00316"></a>00316         <span class="keywordtype">void</span> init_new()
-<a name="l00317"></a>00317         {
-<a name="l00318"></a>00318           assert(!initialized_ && <span class="stringliteral">"ViennaCL FATAL error: Context already created!"</span>);
-<a name="l00319"></a>00319 
-<a name="l00320"></a>00320 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00321"></a>00321 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Initializing new ViennaCL context."</span> << std::endl;
-<a name="l00322"></a>00322 <span class="preprocessor">          #endif</span>
-<a name="l00323"></a>00323 <span class="preprocessor"></span>          
-<a name="l00324"></a>00324           cl_int err;
-<a name="l00325"></a>00325           std::vector<cl_device_id> device_id_array;
-<a name="l00326"></a>00326           <span class="keywordflow">if</span> (devices_.empty()) <span class="comment">//get the default device if user has not yet specified a list of devices</span>
-<a name="l00327"></a>00327           {
-<a name="l00328"></a>00328             <span class="comment">//create an OpenCL context for the provided devices:</span>
-<a name="l00329"></a>00329 <span class="preprocessor">            #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00330"></a>00330 <span class="preprocessor"></span>            std::cout << <span class="stringliteral">"ViennaCL: Setting all devices for context..."</span> << std::endl;
-<a name="l00331"></a>00331 <span class="preprocessor">            #endif</span>
-<a name="l00332"></a>00332 <span class="preprocessor"></span>            
-<a name="l00333"></a>00333             <a class="code" href="classviennacl_1_1ocl_1_1platform.html">platform</a> pf;
-<a name="l00334"></a>00334             std::vector<device> <a class="code" href="classviennacl_1_1ocl_1_1context.html#acd464974135d4def89834832207da4b9" title="Returns a vector with all devices in this context.">devices</a> = pf.<a class="code" href="classviennacl_1_1ocl_1_1platform.html#a257844d23a69f95c6a6572631ffa5995" title="Returns the available devices of the supplied device type.">devices</a>(device_type_);
-<a name="l00335"></a>00335 <span class="preprocessor">            #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00336"></a>00336 <span class="preprocessor"></span>            std::cout << <span class="stringliteral">"ViennaCL: Number of devices for context: "</span> << devices.size() << std::endl;
-<a name="l00337"></a>00337 <span class="preprocessor">            #endif</span>
-<a name="l00338"></a>00338 <span class="preprocessor"></span>            <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<devices.size(); ++i)
-<a name="l00339"></a>00339               devices_.push_back(devices[i]);
-<a name="l00340"></a>00340             
-<a name="l00341"></a>00341             <span class="keywordflow">if</span> (devices.size() == 0)
-<a name="l00342"></a>00342             {
-<a name="l00343"></a>00343               std::cerr << <span class="stringliteral">"ViennaCL: FATAL ERROR: No devices of type '"</span>;
-<a name="l00344"></a>00344               <span class="keywordflow">switch</span> (device_type_)
-<a name="l00345"></a>00345               {
-<a name="l00346"></a>00346                 <span class="keywordflow">case</span> CL_DEVICE_TYPE_CPU:          std::cout << <span class="stringliteral">"CPU"</span>; <span class="keywordflow">break</span>;
-<a name="l00347"></a>00347                 <span class="keywordflow">case</span> CL_DEVICE_TYPE_GPU:          std::cout << <span class="stringliteral">"CPU"</span>; <span class="keywordflow">break</span>;
-<a name="l00348"></a>00348                 <span class="keywordflow">case</span> CL_DEVICE_TYPE_ACCELERATOR:  std::cout << <span class="stringliteral">"ACCELERATOR"</span>; <span class="keywordflow">break</span>;
-<a name="l00349"></a>00349                 <span class="keywordflow">case</span> CL_DEVICE_TYPE_DEFAULT:      std::cout << <span class="stringliteral">"DEFAULT"</span>; <span class="keywordflow">break</span>;
-<a name="l00350"></a>00350                 <span class="keywordflow">default</span>:
-<a name="l00351"></a>00351                   std::cout << <span class="stringliteral">"UNKNOWN"</span> << std::endl;
-<a name="l00352"></a>00352               }
-<a name="l00353"></a>00353               std::cout << <span class="stringliteral">"' found!"</span> << std::endl;
-<a name="l00354"></a>00354             }
-<a name="l00355"></a>00355           }
-<a name="l00356"></a>00356           
-<a name="l00357"></a>00357           <span class="comment">//extract list of device ids:</span>
-<a name="l00358"></a>00358           <span class="keywordflow">for</span> (std::vector< viennacl::ocl::device >::const_iterator iter = devices_.begin();
-<a name="l00359"></a>00359                                                                     iter != devices_.end();
-<a name="l00360"></a>00360                                                                   ++iter)
-<a name="l00361"></a>00361             device_id_array.push_back(iter->id());
-<a name="l00362"></a>00362             
-<a name="l00363"></a>00363           h_ = clCreateContext(0, device_id_array.size(), &(device_id_array[0]), NULL, NULL, &err);
-<a name="l00364"></a>00364           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00365"></a>00365           
-<a name="l00366"></a>00366           initialized_ = <span class="keyword">true</span>;
-<a name="l00367"></a>00367 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00368"></a>00368 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Initialization of new ViennaCL context done."</span> << std::endl;
-<a name="l00369"></a>00369 <span class="preprocessor">          #endif</span>
-<a name="l00370"></a>00370 <span class="preprocessor"></span>        }
-<a name="l00371"></a>00371         
-<a name="l00373"></a>00373         <span class="keywordtype">void</span> init_existing(cl_context c)
-<a name="l00374"></a>00374         {
-<a name="l00375"></a>00375           assert(!initialized_ && <span class="stringliteral">"ViennaCL FATAL error: Context already created!"</span>);
-<a name="l00376"></a>00376 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00377"></a>00377 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Initialization of ViennaCL context from existing context."</span> << std::endl;
-<a name="l00378"></a>00378 <span class="preprocessor">          #endif</span>
-<a name="l00379"></a>00379 <span class="preprocessor"></span>          
-<a name="l00380"></a>00380           <span class="comment">//set context handle:</span>
-<a name="l00381"></a>00381           h_ = c;
-<a name="l00382"></a>00382           
-<a name="l00383"></a>00383           <span class="keywordflow">if</span> (devices_.empty())
-<a name="l00384"></a>00384           {
-<a name="l00385"></a>00385             <span class="comment">//get devices for context:</span>
-<a name="l00386"></a>00386             cl_int err;
-<a name="l00387"></a>00387             cl_uint num_devices;
-<a name="l00388"></a>00388             <span class="keywordtype">size_t</span> temp;
-<a name="l00389"></a>00389             <span class="comment">//Note: The obvious</span>
-<a name="l00390"></a>00390             <span class="comment">//  err = clGetContextInfo(h_, CL_CONTEXT_NUM_DEVICES, sizeof(cl_uint), &num_devices, NULL);</span>
-<a name="l00391"></a>00391             <span class="comment">//does not work with NVIDIA OpenCL stack!</span>
-<a name="l00392"></a>00392             err = clGetContextInfo(h_, CL_CONTEXT_DEVICES, <a class="code" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">VIENNACL_OCL_MAX_DEVICE_NUM</a> * <span class="keyword">sizeof</span>(cl_device_id), NULL, &temp);
-<a name="l00393"></a>00393             <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00394"></a>00394             assert(temp > 0 && <span class="stringliteral">"ViennaCL: FATAL error: Provided context does not contain any devices!"</span>);
-<a name="l00395"></a>00395             num_devices = temp / <span class="keyword">sizeof</span>(cl_device_id);
-<a name="l00396"></a>00396             
-<a name="l00397"></a>00397 <span class="preprocessor">            #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00398"></a>00398 <span class="preprocessor"></span>            std::cout << <span class="stringliteral">"ViennaCL: Reusing context with "</span> << num_devices << <span class="stringliteral">" devices."</span> << std::endl;
-<a name="l00399"></a>00399 <span class="preprocessor">            #endif</span>
-<a name="l00400"></a>00400 <span class="preprocessor"></span>            
-<a name="l00401"></a>00401             std::vector<cl_device_id> device_ids(num_devices);
-<a name="l00402"></a>00402             err = clGetContextInfo(h_, CL_CONTEXT_DEVICES, num_devices * <span class="keyword">sizeof</span>(cl_device_id), &(device_ids[0]), NULL);
-<a name="l00403"></a>00403             <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00404"></a>00404             
-<a name="l00405"></a>00405             <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<num_devices; ++i)
-<a name="l00406"></a>00406               devices_.push_back(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a>(device_ids[i]));
-<a name="l00407"></a>00407           }
-<a name="l00408"></a>00408           current_device_id = 0;
-<a name="l00409"></a>00409           
-<a name="l00410"></a>00410           initialized_ = <span class="keyword">true</span>;
-<a name="l00411"></a>00411 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00412"></a>00412 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Initialization of ViennaCL context from existing context done."</span> << std::endl;
-<a name="l00413"></a>00413 <span class="preprocessor">          #endif</span>
-<a name="l00414"></a>00414 <span class="preprocessor"></span>        }       
-<a name="l00415"></a>00415         
-<a name="l00416"></a>00416         
-<a name="l00417"></a>00417         <span class="keywordtype">bool</span> initialized_;
-<a name="l00418"></a>00418         cl_device_type device_type_;
-<a name="l00419"></a>00419         <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_context></a> h_;
-<a name="l00420"></a>00420         std::vector< viennacl::ocl::device > devices_;
-<a name="l00421"></a>00421         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_device_id;
-<a name="l00422"></a>00422         ProgramContainer programs_;
-<a name="l00423"></a>00423         std::map< cl_device_id, std::vector< viennacl::ocl::command_queue> > queues_;
-<a name="l00424"></a>00424     }; <span class="comment">//context</span>
-<a name="l00425"></a>00425     
-<a name="l00426"></a>00426   }
-<a name="l00427"></a>00427 }
-<a name="l00428"></a>00428 
-<a name="l00429"></a>00429 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix_8hpp.html b/doc/doxygen/html/coordinate__matrix_8hpp.html
deleted file mode 100644
index 71ad22d..0000000
--- a/doc/doxygen/html/coordinate__matrix_8hpp.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/coordinate_matrix.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/coordinate_matrix.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementation of the coordinate_matrix class.  
-<a href="#_details">More...</a></p>
-<code>#include <map></code><br/>
-<code>#include <vector></code><br/>
-<code>#include <list></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="coordinate__matrix__operations_8hpp_source.html">viennacl/linalg/coordinate_matrix_operations.hpp</a>"</code><br/>
-
-<p><a href="coordinate__matrix_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row and column indices and val denotes the entry.  <a href="classviennacl_1_1coordinate__matrix.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a87f711ebb1d8fd6435d31f1841f9cfaf">copy</a> (const CPU_MATRIX &cpu_matrix, coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU).  <a href="#a87f711ebb1d8fd6435d31f1841f9cfaf"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab4fb2cd615454e656202d5d6f1a54483">copy</a> (const std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix, coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix in the std::vector< std::map < > > format to an OpenCL device.  <a href="#ab4fb2cd615454e656202d5d6f1a54483"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab2ea05f107d5ec7f31214a2898ccbe08">copy</a> (const coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the OpenCL device (either GPU or multi-core CPU) to the host.  <a href="#ab2ea05f107d5ec7f31214a2898ccbe08"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ae1d2b8aa5bf56f7479a66d51713708d2">copy</a> (const coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from an OpenCL device to the host. The host type is the std::vector< std::map < > > format .  <a href="#ae1d2b8aa5bf56f7479a66d51713708d2"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of the coordinate_matrix class. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix_8hpp_source.html b/doc/doxygen/html/coordinate__matrix_8hpp_source.html
deleted file mode 100644
index b1bbf9f..0000000
--- a/doc/doxygen/html/coordinate__matrix_8hpp_source.html
+++ /dev/null
@@ -1,307 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/coordinate_matrix.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/coordinate_matrix.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="coordinate__matrix_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_COORDINATE_MATRIX_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COORDINATE_MATRIX_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <map></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <vector></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <list></span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00029"></a>00029 
-<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="coordinate__matrix__operations_8hpp.html" title="Implementations of operations using coordinate_matrix.">viennacl/linalg/coordinate_matrix_operations.hpp</a>"</span>
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>viennacl
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034   
-<a name="l00035"></a>00035     
-<a name="l00036"></a>00036     <span class="comment">//provide copy-operation:</span>
-<a name="l00044"></a>00044 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00045"></a><a class="code" href="namespaceviennacl.html#a87f711ebb1d8fd6435d31f1841f9cfaf">00045</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix,
-<a name="l00046"></a>00046                      <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix )
-<a name="l00047"></a>00047     {
-<a name="l00048"></a>00048       <span class="keywordtype">size_t</span> group_num = 64;
-<a name="l00049"></a>00049       
-<a name="l00050"></a>00050       <span class="comment">// Step 1: Determine nonzeros:</span>
-<a name="l00051"></a>00051       <span class="keywordflow">if</span> ( cpu_matrix.size1() > 0 && cpu_matrix.size2() > 0 )
-<a name="l00052"></a>00052       {
-<a name="l00053"></a>00053         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_entries = 0;
-<a name="l00054"></a>00054         <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
-<a name="l00055"></a>00055               row_it != cpu_matrix.end1();
-<a name="l00056"></a>00056               ++row_it)
-<a name="l00057"></a>00057         {
-<a name="l00058"></a>00058           <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator2 col_it = row_it.begin();
-<a name="l00059"></a>00059                 col_it != row_it.end();
-<a name="l00060"></a>00060                 ++col_it)
-<a name="l00061"></a>00061           {
-<a name="l00062"></a>00062             ++num_entries;
-<a name="l00063"></a>00063           }
-<a name="l00064"></a>00064         }
-<a name="l00065"></a>00065         
-<a name="l00066"></a>00066         <span class="comment">// Step 2: Set up matrix data:</span>
-<a name="l00067"></a>00067         std::cout << <span class="stringliteral">"Number of entries: "</span> << num_entries << std::endl;
-<a name="l00068"></a>00068         gpu_matrix.nonzeros_ = num_entries;
-<a name="l00069"></a>00069         gpu_matrix.rows_ = cpu_matrix.size1();
-<a name="l00070"></a>00070         gpu_matrix.cols_ = cpu_matrix.size2();
-<a name="l00071"></a>00071 
-<a name="l00072"></a>00072         std::vector<cl_uint> coord_buffer(2*gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>());
-<a name="l00073"></a>00073         std::vector<cl_uint> group_boundaries(group_num + 1);
-<a name="l00074"></a>00074         std::vector<SCALARTYPE> elements(gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>());
-<a name="l00075"></a>00075         
-<a name="l00076"></a>00076         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> data_index = 0;
-<a name="l00077"></a>00077         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_fraction = 0;
-<a name="l00078"></a>00078         
-<a name="l00079"></a>00079         <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
-<a name="l00080"></a>00080               row_it != cpu_matrix.end1();
-<a name="l00081"></a>00081               ++row_it)
-<a name="l00082"></a>00082         {
-<a name="l00083"></a>00083           <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator2 col_it = row_it.begin();
-<a name="l00084"></a>00084                 col_it != row_it.end();
-<a name="l00085"></a>00085                 ++col_it)
-<a name="l00086"></a>00086           {
-<a name="l00087"></a>00087             coord_buffer[2*data_index] = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(col_it.index1());
-<a name="l00088"></a>00088             coord_buffer[2*data_index + 1] = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(col_it.index2());
-<a name="l00089"></a>00089             elements[data_index] = *col_it;
-<a name="l00090"></a>00090             ++data_index;
-<a name="l00091"></a>00091           }
-<a name="l00092"></a>00092           
-<a name="l00093"></a>00093           <span class="keywordflow">if</span> (data_index > (current_fraction + 1) / <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(group_num) * num_entries)    <span class="comment">//split data equally over 64 groups</span>
-<a name="l00094"></a>00094             group_boundaries[++current_fraction] = data_index;
-<a name="l00095"></a>00095         }
-<a name="l00096"></a>00096         
-<a name="l00097"></a>00097         <span class="comment">//write end of last group:</span>
-<a name="l00098"></a>00098         group_boundaries[group_num] = data_index;
-<a name="l00099"></a>00099         <span class="comment">//group_boundaries[1] = data_index; //for one compute unit</span>
-<a name="l00100"></a>00100         
-<a name="l00101"></a>00101         <span class="comment">/*std::cout << "Group boundaries: " << std::endl;</span>
-<a name="l00102"></a>00102 <span class="comment">        for (size_t i=0; i<group_boundaries.size(); ++i)</span>
-<a name="l00103"></a>00103 <span class="comment">          std::cout << group_boundaries[i] << std::endl;*/</span>
-<a name="l00104"></a>00104         
-<a name="l00105"></a>00105         gpu_matrix.coord_buffer_     = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, coord_buffer);
-<a name="l00106"></a>00106         gpu_matrix.elements_         = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, elements);
-<a name="l00107"></a>00107         gpu_matrix.group_boundaries_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, group_boundaries);
-<a name="l00108"></a>00108       }
-<a name="l00109"></a>00109     }
-<a name="l00110"></a>00110 
-<a name="l00116"></a>00116     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00117"></a><a class="code" href="namespaceviennacl.html#ab4fb2cd615454e656202d5d6f1a54483">00117</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> std::vector< std::map<unsigned int, SCALARTYPE> > & cpu_matrix,
-<a name="l00118"></a>00118                      <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix )
-<a name="l00119"></a>00119     {
-<a name="l00120"></a>00120       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">tools::const_sparse_matrix_adapter<SCALARTYPE></a>(cpu_matrix), gpu_matrix);
-<a name="l00121"></a>00121     }
-<a name="l00122"></a>00122     
-<a name="l00123"></a>00123     <span class="comment">//gpu to cpu:</span>
-<a name="l00133"></a>00133 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00134"></a><a class="code" href="namespaceviennacl.html#ab2ea05f107d5ec7f31214a2898ccbe08">00134</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix,
-<a name="l00135"></a>00135                      CPU_MATRIX & cpu_matrix )
-<a name="l00136"></a>00136     {
-<a name="l00137"></a>00137       <span class="keywordflow">if</span> ( gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the number of rows.">size1</a>() > 0 && gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881" title="Returns the number of columns.">size2</a>() > 0 )
-<a name="l00138"></a>00138       {
-<a name="l00139"></a>00139         cpu_matrix.resize(gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the number of rows.">size1</a>(), gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881" title="Returns the number of columns.">size2</a>(), <span class="keyword">false</span>);
-<a name="l00140"></a>00140         
-<a name="l00141"></a>00141         <span class="comment">//get raw data from memory:</span>
-<a name="l00142"></a>00142         std::vector<unsigned int> coord_buffer(2*gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b" title="Returns the number of nonzero entries.">nnz</a>());
-<a name="l00143"></a>00143         std::vector<SCALARTYPE> elements(gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b" title="Returns the number of nonzero entries.">nnz</a>());
-<a name="l00144"></a>00144         
-<a name="l00145"></a>00145         <span class="comment">//std::cout << "GPU nonzeros: " << gpu_matrix.nnz() << std::endl;</span>
-<a name="l00146"></a>00146         
-<a name="l00147"></a>00147         cl_int err;
-<a name="l00148"></a>00148         err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8" title="Returns the OpenCL handle to the (row, column) index array.">handle12</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)* 2 *gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b" title="Returns the number of nonzero entries.">nnz</a>(), &(coord_buffer[0]), 0, NULL, NULL);
-<a name="l00149"></a>00149         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00150"></a>00150         err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b" title="Returns the number of nonzero entries.">nnz</a>(), &(elements[0]), 0, NULL, NULL);
-<a name="l00151"></a>00151         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00152"></a>00152         <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00153"></a>00153         
-<a name="l00154"></a>00154         <span class="comment">//fill the cpu_matrix:</span>
-<a name="l00155"></a>00155         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0; index < gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b" title="Returns the number of nonzero entries.">nnz</a>(); ++index)
-<a name="l00156"></a>00156         {
-<a name="l00157"></a>00157           cpu_matrix(coord_buffer[2*index], coord_buffer[2*index+1]) = elements[index];
-<a name="l00158"></a>00158         }
-<a name="l00159"></a>00159       }
-<a name="l00160"></a>00160     }
-<a name="l00161"></a>00161 
-<a name="l00167"></a>00167     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00168"></a><a class="code" href="namespaceviennacl.html#ae1d2b8aa5bf56f7479a66d51713708d2">00168</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix,
-<a name="l00169"></a>00169               std::vector< std::map<unsigned int, SCALARTYPE> > & cpu_matrix)
-<a name="l00170"></a>00170     {
-<a name="l00171"></a>00171       <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">tools::sparse_matrix_adapter<SCALARTYPE></a> temp(cpu_matrix);
-<a name="l00172"></a>00172       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(gpu_matrix, temp);
-<a name="l00173"></a>00173     }
-<a name="l00174"></a>00174 
-<a name="l00175"></a>00175 
-<a name="l00177"></a>00177 
-<a name="l00184"></a>00184     <span class="keyword">template</span><<span class="keyword">class </span>SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT <span class="comment">/* see VCLForwards.h */</span> >
-<a name="l00185"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html">00185</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>
-<a name="l00186"></a>00186     {
-<a name="l00187"></a>00187     <span class="keyword">public</span>:
-<a name="l00188"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">00188</a>       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<typename viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT<SCALARTYPE>::ResultType</a>>   <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a>;
-<a name="l00189"></a>00189       
-<a name="l00191"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#aee188ff216de32fdea80ffcaf47c515a">00191</a>       <a class="code" href="classviennacl_1_1coordinate__matrix.html#aee188ff216de32fdea80ffcaf47c515a" title="Default construction of a coordinate matrix. No memory is allocated.">coordinate_matrix</a>() : rows_(0), cols_(0), nonzeros_(0) { viennacl::linalg::kernels::coordinate_matrix<SCALARTYPE, ALIGNMENT>::init(); }
-<a name="l00192"></a>00192       
-<a name="l00199"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#ab6d3264162d39010d13f24c98eaeb528">00199</a>       <a class="code" href="classviennacl_1_1coordinate__matrix.html#aee188ff216de32fdea80ffcaf47c515a" title="Default construction of a coordinate matrix. No memory is allocated.">coordinate_matrix</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nonzeros = 0) : 
-<a name="l00200"></a>00200         rows_(rows), cols_(cols), nonzeros_(nonzeros)
-<a name="l00201"></a>00201       {
-<a name="l00202"></a>00202         viennacl::linalg::kernels::coordinate_matrix<SCALARTYPE, ALIGNMENT>::init();
-<a name="l00203"></a>00203         <span class="keywordflow">if</span> (nonzeros > 0)
-<a name="l00204"></a>00204         {
-<a name="l00205"></a>00205           coord_buffer_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(cl_uint) * 2 * <a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>());
-<a name="l00206"></a>00206           elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE) * <a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>());
-<a name="l00207"></a>00207           group_boundaries_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(cl_uint) * (rows + 1));
-<a name="l00208"></a>00208         }
-<a name="l00209"></a>00209       }
-<a name="l00210"></a>00210         
-<a name="l00212"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">00212</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1" title="Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved...">reserve</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_nonzeros)
-<a name="l00213"></a>00213       {
-<a name="l00214"></a>00214         <span class="keywordflow">if</span> (new_nonzeros > nonzeros_)
-<a name="l00215"></a>00215         {
-<a name="l00216"></a>00216           <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> coord_buffer_old = coord_buffer_;
-<a name="l00217"></a>00217           <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> elements_old = elements_;
-<a name="l00218"></a>00218           coord_buffer_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(cl_uint) * 2 * <a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>());
-<a name="l00219"></a>00219           elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE) * <a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>());
-<a name="l00220"></a>00220           
-<a name="l00221"></a>00221           cl_int err;
-<a name="l00222"></a>00222           err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), coord_buffer_old, coord_buffer_, 0, 0, <span class="keyword">sizeof</span>(cl_uint) * 2 * nonzeros_, 0, NULL, NULL);
-<a name="l00223"></a>00223           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00224"></a>00224           err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), elements_old, elements_, 0, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*nonzeros_, 0, NULL, NULL);
-<a name="l00225"></a>00225           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00226"></a>00226 
-<a name="l00227"></a>00227           <span class="comment">//new memory must be padded with zeros:</span>
-<a name="l00228"></a>00228           std::vector<long> temp(<a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>() - nonzeros_);
-<a name="l00229"></a>00229           err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), coord_buffer_old, coord_buffer_, 0, nonzeros_, <span class="keyword">sizeof</span>(cl_uint) * 2 * temp.size(), 0, NULL, NULL);
-<a name="l00230"></a>00230           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00231"></a>00231           err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), elements_old, elements_, 0, nonzeros_, <span class="keyword">sizeof</span>(SCALARTYPE)*temp.size(), 0, NULL, NULL);
-<a name="l00232"></a>00232           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00233"></a>00233         }
-<a name="l00234"></a>00234       }
-<a name="l00235"></a>00235 
-<a name="l00242"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#a72c98b8dba1f78661da5d71f20550d25">00242</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#a72c98b8dba1f78661da5d71f20550d25" title="Resize the matrix.">resize</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_size1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_size2, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>)
-<a name="l00243"></a>00243       {
-<a name="l00244"></a>00244         assert (new_size1 > 0 && new_size2 > 0);
-<a name="l00245"></a>00245                 
-<a name="l00246"></a>00246         <span class="keywordflow">if</span> (new_size1 < rows_ || new_size2 < cols_) <span class="comment">//enlarge buffer</span>
-<a name="l00247"></a>00247         {
-<a name="l00248"></a>00248           std::vector<std::map<unsigned int, SCALARTYPE> > stl_sparse_matrix;
-<a name="l00249"></a>00249           <span class="keywordflow">if</span> (rows_ > 0)
-<a name="l00250"></a>00250             stl_sparse_matrix.resize(rows_);
-<a name="l00251"></a>00251           
-<a name="l00252"></a>00252           <span class="keywordflow">if</span> (preserve && rows_ > 0)
-<a name="l00253"></a>00253             <a class="code" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">viennacl::copy</a>(*<span class="keyword">this</span>, stl_sparse_matrix);
-<a name="l00254"></a>00254             
-<a name="l00255"></a>00255           stl_sparse_matrix.resize(new_size1);
-<a name="l00256"></a>00256           
-<a name="l00257"></a>00257           std::cout << <span class="stringliteral">"Cropping STL matrix of size "</span> << stl_sparse_matrix.size() << std::endl;
-<a name="l00258"></a>00258           <span class="keywordflow">if</span> (new_size2 < cols_ && rows_ > 0)
-<a name="l00259"></a>00259           {
-<a name="l00260"></a>00260             <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<stl_sparse_matrix.size(); ++i)
-<a name="l00261"></a>00261             {
-<a name="l00262"></a>00262               std::list<unsigned int> to_delete;
-<a name="l00263"></a>00263               <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::map<unsigned int, SCALARTYPE>::iterator it = stl_sparse_matrix[i].begin();
-<a name="l00264"></a>00264                    it != stl_sparse_matrix[i].end();
-<a name="l00265"></a>00265                   ++it)
-<a name="l00266"></a>00266               {
-<a name="l00267"></a>00267                 <span class="keywordflow">if</span> (it->first >= new_size2)
-<a name="l00268"></a>00268                   to_delete.push_back(it->first);
-<a name="l00269"></a>00269               }
-<a name="l00270"></a>00270               
-<a name="l00271"></a>00271               <span class="keywordflow">for</span> (std::list<unsigned int>::iterator it = to_delete.begin(); it != to_delete.end(); ++it)
-<a name="l00272"></a>00272                 stl_sparse_matrix[i].erase(*it);
-<a name="l00273"></a>00273             }
-<a name="l00274"></a>00274           std::cout << <span class="stringliteral">"Cropping done..."</span> << std::endl;
-<a name="l00275"></a>00275           }
-<a name="l00276"></a>00276           
-<a name="l00277"></a>00277           rows_ = new_size1;
-<a name="l00278"></a>00278           cols_ = new_size2;
-<a name="l00279"></a>00279           <a class="code" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">viennacl::copy</a>(stl_sparse_matrix, *<span class="keyword">this</span>);
-<a name="l00280"></a>00280         }
-<a name="l00281"></a>00281           
-<a name="l00282"></a>00282         rows_ = new_size1;
-<a name="l00283"></a>00283         cols_ = new_size2;
-<a name="l00284"></a>00284       }
-<a name="l00285"></a>00285 
-<a name="l00286"></a>00286 
-<a name="l00288"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7">00288</a>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the number of rows.">size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rows_; }
-<a name="l00290"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881">00290</a>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881" title="Returns the number of columns.">size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cols_; }
-<a name="l00292"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b">00292</a>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b" title="Returns the number of nonzero entries.">nnz</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> nonzeros_; }
-<a name="l00294"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f">00294</a>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> viennacl::tools::roundUpToNextMultiple<unsigned int>(nonzeros_, ALIGNMENT);; }
-<a name="l00295"></a>00295       
-<a name="l00297"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8">00297</a>       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8" title="Returns the OpenCL handle to the (row, column) index array.">handle12</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> coord_buffer_; }
-<a name="l00299"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c">00299</a>       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> elements_; }
-<a name="l00301"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#a3a2d3ce95e8cd635a285c7584c8691a0">00301</a>       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1coordinate__matrix.html#a3a2d3ce95e8cd635a285c7584c8691a0" title="Returns the OpenCL handle to the group start index array.">handle3</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> group_boundaries_; }
-<a name="l00302"></a>00302       
-<a name="l00303"></a>00303 <span class="preprocessor">      #if defined(_MSC_VER) && _MSC_VER < 1500      //Visual Studio 2005 needs special treatment</span>
-<a name="l00304"></a>00304 <span class="preprocessor"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX>
-<a name="l00305"></a>00305       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix, <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> & gpu_matrix );
-<a name="l00306"></a>00306 <span class="preprocessor">      #else</span>
-<a name="l00307"></a>00307 <span class="preprocessor"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00308"></a>00308       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix, <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE2, ALIGNMENT2></a> & gpu_matrix );
-<a name="l00309"></a>00309 <span class="preprocessor">      #endif</span>
-<a name="l00310"></a>00310 <span class="preprocessor"></span>
-<a name="l00311"></a>00311     <span class="keyword">private</span>:
-<a name="l00313"></a>00313       <a class="code" href="classviennacl_1_1coordinate__matrix.html#aee188ff216de32fdea80ffcaf47c515a" title="Default construction of a coordinate matrix. No memory is allocated.">coordinate_matrix</a>(<a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> <span class="keyword">const</span> &);
-<a name="l00314"></a>00314       
-<a name="l00316"></a>00316       <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> & operator=(<a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> <span class="keyword">const</span> &);
-<a name="l00317"></a>00317       
-<a name="l00318"></a>00318       
-<a name="l00319"></a>00319       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows_;
-<a name="l00320"></a>00320       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols_;
-<a name="l00321"></a>00321       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nonzeros_;
-<a name="l00322"></a>00322       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> coord_buffer_;
-<a name="l00323"></a>00323       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> elements_;
-<a name="l00324"></a>00324       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> group_boundaries_;
-<a name="l00325"></a>00325     };
-<a name="l00326"></a>00326 
-<a name="l00327"></a>00327 
-<a name="l00328"></a>00328 }
-<a name="l00329"></a>00329 
-<a name="l00330"></a>00330 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix__kernels_8h.html b/doc/doxygen/html/coordinate__matrix__kernels_8h.html
deleted file mode 100644
index 9dd6d63..0000000
--- a/doc/doxygen/html/coordinate__matrix__kernels_8h.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="coordinate__matrix__source_8h_source.html">viennacl/linalg/kernels/coordinate_matrix_source.h</a>"</code><br/>
-
-<p><a href="coordinate__matrix__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">coordinate_matrix< float, 128 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">coordinate_matrix< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">coordinate_matrix< double, 128 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">coordinate_matrix< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix__kernels_8h_source.html b/doc/doxygen/html/coordinate__matrix__kernels_8h_source.html
deleted file mode 100644
index 790aef4..0000000
--- a/doc/doxygen/html/coordinate__matrix__kernels_8h_source.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="coordinate__matrix__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_COORDINATE_MATRIX_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COORDINATE_MATRIX_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="coordinate__matrix__source_8h.html">viennacl/linalg/kernels/coordinate_matrix_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>coordinate_matrix;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">00022</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a><float, 128>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_coordinate_matrix_128"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a>);
-<a name="l00037"></a>00037         std::string prog_name = program_name();
-<a name="l00038"></a>00038 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00040"></a>00040 <span class="preprocessor">        #endif</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00042"></a>00042         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00043"></a>00043         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00044"></a>00044         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00045"></a>00045        } <span class="comment">//if</span>
-<a name="l00046"></a>00046      } <span class="comment">//init</span>
-<a name="l00047"></a>00047     }; <span class="comment">// struct</span>
-<a name="l00048"></a>00048 
-<a name="l00049"></a>00049    <span class="keyword">template</span> <>
-<a name="l00050"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">00050</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a><float, 1>
-<a name="l00051"></a>00051    {
-<a name="l00052"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00052</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00053"></a>00053     {
-<a name="l00054"></a>00054       <span class="keywordflow">return</span> <span class="stringliteral">"f_coordinate_matrix_1"</span>;
-<a name="l00055"></a>00055     }
-<a name="l00056"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00056</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00057"></a>00057     {
-<a name="l00058"></a>00058       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00059"></a>00059       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00060"></a>00060       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00061"></a>00061       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00062"></a>00062       {
-<a name="l00063"></a>00063         std::string source;
-<a name="l00064"></a>00064         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a>);
-<a name="l00065"></a>00065         std::string prog_name = program_name();
-<a name="l00066"></a>00066 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00067"></a>00067 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00068"></a>00068 <span class="preprocessor">        #endif</span>
-<a name="l00069"></a>00069 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00070"></a>00070         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00071"></a>00071         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00072"></a>00072         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00073"></a>00073        } <span class="comment">//if</span>
-<a name="l00074"></a>00074      } <span class="comment">//init</span>
-<a name="l00075"></a>00075     }; <span class="comment">// struct</span>
-<a name="l00076"></a>00076 
-<a name="l00077"></a>00077 
-<a name="l00078"></a>00078 
-<a name="l00080"></a>00080    <span class="keyword">template</span> <>
-<a name="l00081"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">00081</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a><double, 128>
-<a name="l00082"></a>00082    {
-<a name="l00083"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">00083</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00084"></a>00084     {
-<a name="l00085"></a>00085       <span class="keywordflow">return</span> <span class="stringliteral">"d_coordinate_matrix_128"</span>;
-<a name="l00086"></a>00086     }
-<a name="l00087"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">00087</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00088"></a>00088     {
-<a name="l00089"></a>00089       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00090"></a>00090       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00091"></a>00091       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00092"></a>00092       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00093"></a>00093       {
-<a name="l00094"></a>00094         std::string source;
-<a name="l00095"></a>00095         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00096"></a>00096         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a>, fp64_ext));
-<a name="l00097"></a>00097         std::string prog_name = program_name();
-<a name="l00098"></a>00098 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00099"></a>00099 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00100"></a>00100 <span class="preprocessor">        #endif</span>
-<a name="l00101"></a>00101 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00102"></a>00102         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00103"></a>00103         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00104"></a>00104         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00105"></a>00105        } <span class="comment">//if</span>
-<a name="l00106"></a>00106      } <span class="comment">//init</span>
-<a name="l00107"></a>00107     }; <span class="comment">// struct</span>
-<a name="l00108"></a>00108 
-<a name="l00109"></a>00109    <span class="keyword">template</span> <>
-<a name="l00110"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">00110</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a><double, 1>
-<a name="l00111"></a>00111    {
-<a name="l00112"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00112</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00113"></a>00113     {
-<a name="l00114"></a>00114       <span class="keywordflow">return</span> <span class="stringliteral">"d_coordinate_matrix_1"</span>;
-<a name="l00115"></a>00115     }
-<a name="l00116"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00116</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00117"></a>00117     {
-<a name="l00118"></a>00118       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00119"></a>00119       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00120"></a>00120       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00121"></a>00121       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00122"></a>00122       {
-<a name="l00123"></a>00123         std::string source;
-<a name="l00124"></a>00124         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00125"></a>00125         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a>, fp64_ext));
-<a name="l00126"></a>00126         std::string prog_name = program_name();
-<a name="l00127"></a>00127 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00128"></a>00128 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00129"></a>00129 <span class="preprocessor">        #endif</span>
-<a name="l00130"></a>00130 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00131"></a>00131         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00132"></a>00132         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00133"></a>00133         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00134"></a>00134        } <span class="comment">//if</span>
-<a name="l00135"></a>00135      } <span class="comment">//init</span>
-<a name="l00136"></a>00136     }; <span class="comment">// struct</span>
-<a name="l00137"></a>00137 
-<a name="l00138"></a>00138 
-<a name="l00139"></a>00139   }  <span class="comment">//namespace kernels</span>
-<a name="l00140"></a>00140  }  <span class="comment">//namespace linalg</span>
-<a name="l00141"></a>00141 }  <span class="comment">//namespace viennacl</span>
-<a name="l00142"></a>00142 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix__operations_8hpp.html b/doc/doxygen/html/coordinate__matrix__operations_8hpp.html
deleted file mode 100644
index 7829eaa..0000000
--- a/doc/doxygen/html/coordinate__matrix__operations_8hpp.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/coordinate_matrix_operations.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/coordinate_matrix_operations.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementations of operations using coordinate_matrix.  
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="coordinate__matrix__kernels_8h_source.html">viennacl/linalg/kernels/coordinate_matrix_kernels.h</a>"</code><br/>
-
-<p><a href="coordinate__matrix__operations_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a79ec888c8ac1026f4591179fdd19e0de">prod_impl</a> (const coordinate_matrix< SCALARTYPE, ALIGNMENT > &mat, const vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#a79ec888c8ac1026f4591179fdd19e0de"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7984796b04f748d616d1071b0e70850b">prod_impl</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec, size_t NUM_THREADS)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>.  <a href="#a7984796b04f748d616d1071b0e70850b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afa56b176c5b19331a2fd286cac2f9c92">prod_impl</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< TYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication with a <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>.  <a href="#afa56b176c5b19331a2fd286cac2f9c92"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of operations using coordinate_matrix. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix__operations_8hpp_source.html b/doc/doxygen/html/coordinate__matrix__operations_8hpp_source.html
deleted file mode 100644
index ff41437..0000000
--- a/doc/doxygen/html/coordinate__matrix__operations_8hpp_source.html
+++ /dev/null
@@ -1,210 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/coordinate_matrix_operations.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/coordinate_matrix_operations.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="coordinate__matrix__operations_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_COORDINATE_MATRIX_OPERATIONS_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COORDINATE_MATRIX_OPERATIONS_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="coordinate__matrix__kernels_8h.html">viennacl/linalg/kernels/coordinate_matrix_kernels.h</a>"</span>
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033   <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034   {
-<a name="l00035"></a>00035     
-<a name="l00036"></a>00036     
-<a name="l00037"></a>00037     <span class="comment">// A * x</span>
-<a name="l00045"></a>00045 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00046"></a>00046     vector_expression<const coordinate_matrix<SCALARTYPE, ALIGNMENT>,
-<a name="l00047"></a>00047                       <span class="keyword">const</span> vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
-<a name="l00048"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a79ec888c8ac1026f4591179fdd19e0de">00048</a>                       op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & mat, 
-<a name="l00049"></a>00049                                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00050"></a>00050     {
-<a name="l00051"></a>00051       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression<const coordinate_matrix<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00052"></a>00052                                <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VECTOR_ALIGNMENT></a>, 
-<a name="l00053"></a>00053                                op_prod >(mat, vec);
-<a name="l00054"></a>00054     }
-<a name="l00055"></a>00055     
-<a name="l00056"></a>00056     <span class="comment">// A * x</span>
-<a name="l00065"></a>00065 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00066"></a>00066     <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::coordinate_matrix<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00067"></a>00067                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>, 
-<a name="l00068"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a7984796b04f748d616d1071b0e70850b">00068</a>                                 viennacl::op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">viennacl::coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & mat, 
-<a name="l00069"></a>00069                                                               <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, 
-<a name="l00070"></a>00070                                                               <span class="keywordtype">size_t</span> NUM_THREADS)
-<a name="l00071"></a>00071     {
-<a name="l00072"></a>00072       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::coordinate_matrix<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00073"></a>00073                                <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>, 
-<a name="l00074"></a>00074                                viennacl::op_prod >(mat, vec);
-<a name="l00075"></a>00075     }
-<a name="l00076"></a>00076     
-<a name="l00077"></a>00077     <span class="comment">//namespace {</span>
-<a name="l00086"></a>00086 <span class="comment"></span>      <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00087"></a><a class="code" href="namespaceviennacl_1_1linalg.html#afa56b176c5b19331a2fd286cac2f9c92">00087</a>       <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">viennacl::coordinate_matrix<TYPE, ALIGNMENT></a> & mat, 
-<a name="l00088"></a>00088                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<TYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00089"></a>00089                            <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<TYPE, VECTOR_ALIGNMENT></a> & result)
-<a name="l00090"></a>00090       {
-<a name="l00091"></a>00091         assert(mat.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the number of rows.">size1</a>() == result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00092"></a>00092         assert(mat.<a class="code" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881" title="Returns the number of columns.">size2</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00093"></a>00093         result.<a class="code" href="classviennacl_1_1vector.html#ac8bb3912a3ce86b15842e79d0b421204" title="Resets all entries to zero. Does not change the size of the vector.">clear</a>();
-<a name="l00094"></a>00094         
-<a name="l00095"></a>00095         <span class="comment">//std::cout << "prod(coordinate_matrix" << ALIGNMENT << ", vector) called with internal_nnz=" << mat.internal_nnz() << std::endl;</span>
-<a name="l00096"></a>00096         
-<a name="l00097"></a>00097         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::coordinate_matrix<TYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"vec_mul"</span>);
-<a name="l00098"></a>00098         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> thread_num = 256; <span class="comment">//k.local_work_size(0);</span>
-<a name="l00099"></a>00099         
-<a name="l00100"></a>00100         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, thread_num);
-<a name="l00101"></a>00101         
-<a name="l00102"></a>00102         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 64 * thread_num);  <span class="comment">//64 work groups are hard-coded for now. Gives reasonable performance in most cases</span>
-<a name="l00103"></a>00103         <span class="comment">//k.global_work_size(0, thread_num);  //Only one work group</span>
-<a name="l00104"></a>00104         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8" title="Returns the OpenCL handle to the (row, column) index array.">handle12</a>(), mat, mat.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a3a2d3ce95e8cd635a285c7584c8691a0" title="Returns the OpenCL handle to the group start index array.">handle3</a>(),
-<a name="l00105"></a>00105                                  vec,
-<a name="l00106"></a>00106                                  result,
-<a name="l00107"></a>00107                                  <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(cl_uint)*thread_num),
-<a name="l00108"></a>00108                                  <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE)*thread_num)) );
-<a name="l00109"></a>00109 
-<a name="l00110"></a>00110       }
-<a name="l00111"></a>00111     <span class="comment">//};</span>
-<a name="l00112"></a>00112 
-<a name="l00113"></a>00113   } <span class="comment">//namespace linalg</span>
-<a name="l00114"></a>00114 
-<a name="l00115"></a>00115 
-<a name="l00116"></a>00116 
-<a name="l00121"></a>00121     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00122"></a>00122     <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00123"></a>00123     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & 
-<a name="l00124"></a><a class="code" href="classviennacl_1_1vector.html#a9591491bc69f66f82202a86f054ef7ac">00124</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00125"></a>00125                                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00126"></a>00126                                                                                           viennacl::op_prod> & proxy) 
-<a name="l00127"></a>00127     {
-<a name="l00128"></a>00128       <span class="comment">// check for the special case x = A * x</span>
-<a name="l00129"></a>00129       <span class="keywordflow">if</span> (proxy.rhs().handle() == this-><a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>())
-<a name="l00130"></a>00130       {
-<a name="l00131"></a>00131         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> result(proxy.rhs().size());
-<a name="l00132"></a>00132         <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00133"></a>00133         *<span class="keyword">this</span> = result;
-<a name="l00134"></a>00134         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00135"></a>00135       }
-<a name="l00136"></a>00136       <span class="keywordflow">else</span>
-<a name="l00137"></a>00137       {
-<a name="l00138"></a>00138         <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00139"></a>00139         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00140"></a>00140       }
-<a name="l00141"></a>00141       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00142"></a>00142     }
-<a name="l00143"></a>00143 
-<a name="l00144"></a>00144     <span class="comment">//v += A * x</span>
-<a name="l00149"></a>00149 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00150"></a>00150     <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00151"></a>00151     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & 
-<a name="l00152"></a><a class="code" href="classviennacl_1_1vector.html#a558d5da8e439a7fac22354b25b84a458">00152</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00153"></a>00153                                                                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00154"></a>00154                                                                                  op_prod> & proxy) 
-<a name="l00155"></a>00155     {
-<a name="l00156"></a>00156       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00157"></a>00157       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00158"></a>00158       *<span class="keyword">this</span> += result;
-<a name="l00159"></a>00159       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00160"></a>00160     }
-<a name="l00161"></a>00161 
-<a name="l00166"></a>00166     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00167"></a>00167     <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00168"></a>00168     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & 
-<a name="l00169"></a><a class="code" href="classviennacl_1_1vector.html#a828077e1b1da533e174a7194f8a9210b">00169</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00170"></a>00170                                                                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00171"></a>00171                                                                                  op_prod> & proxy) 
-<a name="l00172"></a>00172     {
-<a name="l00173"></a>00173       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.get_lhs().size1());
-<a name="l00174"></a>00174       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00175"></a>00175       *<span class="keyword">this</span> -= result;
-<a name="l00176"></a>00176       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00177"></a>00177     }
-<a name="l00178"></a>00178     
-<a name="l00179"></a>00179     
-<a name="l00180"></a>00180     <span class="comment">//free functions:</span>
-<a name="l00185"></a>00185 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00186"></a>00186     <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00187"></a>00187     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> 
-<a name="l00188"></a><a class="code" href="classviennacl_1_1vector.html#a625df272798e5484b2b99645c164f618">00188</a>     <a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659" title="Operator overload for the addition of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00189"></a>00189                                                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00190"></a>00190                                                                                 op_prod> & proxy) 
-<a name="l00191"></a>00191     {
-<a name="l00192"></a>00192       assert(proxy.get_lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00193"></a>00193       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00194"></a>00194       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00195"></a>00195       result += *<span class="keyword">this</span>;
-<a name="l00196"></a>00196       <span class="keywordflow">return</span> result;
-<a name="l00197"></a>00197     }
-<a name="l00198"></a>00198 
-<a name="l00203"></a>00203     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00204"></a>00204     <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00205"></a>00205     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> 
-<a name="l00206"></a><a class="code" href="classviennacl_1_1vector.html#a38a33c6969ccc333a994d55cce743af9">00206</a>     <a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57" title="Operator overload for the subtraction of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00207"></a>00207                                                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00208"></a>00208                                                                                 op_prod> & proxy) 
-<a name="l00209"></a>00209     {
-<a name="l00210"></a>00210       assert(proxy.get_lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00211"></a>00211       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00212"></a>00212       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00213"></a>00213       result = *<span class="keyword">this</span> - result;
-<a name="l00214"></a>00214       <span class="keywordflow">return</span> result;
-<a name="l00215"></a>00215     }
-<a name="l00216"></a>00216 
-<a name="l00217"></a>00217 } <span class="comment">//namespace viennacl</span>
-<a name="l00218"></a>00218 
-<a name="l00219"></a>00219 
-<a name="l00220"></a>00220 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix__source_8h.html b/doc/doxygen/html/coordinate__matrix__source_8h.html
deleted file mode 100644
index 3c772e5..0000000
--- a/doc/doxygen/html/coordinate__matrix__source_8h.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="coordinate__matrix__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix__source_8h_source.html b/doc/doxygen/html/coordinate__matrix__source_8h_source.html
deleted file mode 100644
index 162d087..0000000
--- a/doc/doxygen/html/coordinate__matrix__source_8h_source.html
+++ /dev/null
@@ -1,160 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="coordinate__matrix__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_COORDINATE_MATRIX_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COORDINATE_MATRIX_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"//segmented parallel reduction. At present restricted to up to 256 threads\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"void segmented_parallel_reduction(unsigned int row, \n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"                                  float val, \n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"                                  __local unsigned int * shared_rows, \n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"                                  __local float * inter_results) \n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"{ \n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"  //barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"  shared_rows[get_local_id(0)] = row; \n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"  inter_results[get_local_id(0)] = val; \n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"  float left = 0;\n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" \n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"  if( get_local_id(0) >=  1 && row == shared_rows[get_local_id(0) -  1] ) { left = inter_results[get_local_id(0) -  1]; }  \n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"  inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"  if( get_local_id(0) >=  2 && row == shared_rows[get_local_id(0) -  2] ) { left = inter_results[get_local_id(0) -  2]; } \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"  inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"  if( get_local_id(0) >=  4 && row == shared_rows[get_local_id(0) -  4] ) { left = inter_results[get_local_id(0) -  4]; } \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"  inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"  if( get_local_id(0) >=  8 && row == shared_rows[get_local_id(0) -  8] ) { left = inter_results[get_local_id(0) -  8]; } \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"  inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">"  if( get_local_id(0) >= 16 && row == shared_rows[get_local_id(0) - 16] ) { left = inter_results[get_local_id(0) - 16]; } \n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"  inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"  if( get_local_id(0) >= 32 && row == shared_rows[get_local_id(0) - 32] ) { left = inter_results[get_local_id(0) - 32]; } \n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"  inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"  if( get_local_id(0) >= 64 && row == shared_rows[get_local_id(0) - 64] ) { left = inter_results[get_local_id(0) - 64]; } \n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"  inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"  if( get_local_id(0) >= 128 && row == shared_rows[get_local_id(0) - 128] ) { left = inter_results[get_local_id(0) - 128]; } \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"  inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"  barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"  //if( get_local_id(0) >= 256 && row == shared_rows[get_local_id(0) - 256] ) { left = inter_results[get_local_id(0) - 256]; } \n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"  //barrier(CLK_LOCAL_MEM_FENCE);  \n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"  //inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"  //barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"}\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"__kernel void vec_mul( \n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"          __global const uint2 * coords, //(row_index, column_index) \n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"          __global const float * elements, \n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"          __global const uint  * group_boundaries,\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"          __global const float * vector,  \n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"          __global float * result, \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"          __local unsigned int * shared_rows, \n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"          __local float * inter_results) \n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"{ \n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"  uint2 tmp; \n"</span>
-<a name="l00070"></a>00070 <span class="stringliteral">"  float val;\n"</span>
-<a name="l00071"></a>00071 <span class="stringliteral">"  uint last_index = get_local_size(0) - 1;\n"</span>
-<a name="l00072"></a>00072 <span class="stringliteral">"  uint group_start = group_boundaries[get_group_id(0)];\n"</span>
-<a name="l00073"></a>00073 <span class="stringliteral">"  uint group_end = group_boundaries[get_group_id(0) + 1];\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"  uint k_end = 1 + (group_end - group_start - 1) / get_local_size(0);   // -1 in order to have correct behavior if group_end - group_start == j * get_local_size(0)\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"  uint local_index = 0;\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"  for (uint k = 0; k < k_end; ++k)\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"  { \n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"    \n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"    local_index = group_start + k * get_local_size(0) + get_local_id(0); \n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"  \n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"    if (local_index < group_end)\n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"    {\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"      tmp = coords[local_index]; \n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"      val = elements[local_index] * vector[tmp.y]; \n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"    }\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"    else\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"    {\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"      tmp.x = 0;\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"      tmp.y = 0;\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"      val = 0;\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"    }\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"    //check for carry from previous loop run: \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"    if (get_local_id(0) == 0 && k > 0)\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"    { \n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"      if (tmp.x == shared_rows[last_index]) \n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"        val += inter_results[last_index]; \n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"      else \n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"        result[shared_rows[last_index]] += inter_results[last_index]; \n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"    } \n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"    segmented_parallel_reduction(tmp.x, val, shared_rows, inter_results); //all threads have to enter this function\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"    if (get_local_id(0) != last_index &&\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"        shared_rows[get_local_id(0)] != shared_rows[get_local_id(0) + 1] &&\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"        inter_results[get_local_id(0)] != 0) \n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"    { \n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"      result[tmp.x] += inter_results[get_local_id(0)]; \n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"    }\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"   \n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"  } //for k\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"   \n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"  if (get_local_id(0) == last_index && inter_results[last_index] != 0) \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"    result[tmp.x] += inter_results[last_index]; \n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"}\n"</span>
-<a name="l00118"></a>00118 ; <span class="comment">//coordinate_matrix_align1_vec_mul</span>
-<a name="l00119"></a>00119 
-<a name="l00120"></a>00120   }  <span class="comment">//namespace kernels</span>
-<a name="l00121"></a>00121  }  <span class="comment">//namespace linalg</span>
-<a name="l00122"></a>00122 }  <span class="comment">//namespace viennacl</span>
-<a name="l00123"></a>00123 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/device_8hpp.html b/doc/doxygen/html/device_8hpp.html
deleted file mode 100644
index 413f0ea..0000000
--- a/doc/doxygen/html/device_8hpp.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/device.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/device.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Represents an OpenCL device within ViennaCL.  
-<a href="#_details">More...</a></p>
-<code>#include <CL/cl.h></code><br/>
-<code>#include <stdio.h></code><br/>
-<code>#include <vector></code><br/>
-<code>#include <string></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include <assert.h></code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="error_8hpp_source.html">viennacl/ocl/error.hpp</a>"</code><br/>
-
-<p><a href="device_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A class representing a compute device (e.g. a GPU).  <a href="classviennacl_1_1ocl_1_1device.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Represents an OpenCL device within ViennaCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/device_8hpp_source.html b/doc/doxygen/html/device_8hpp_source.html
deleted file mode 100644
index 4f8b1d7..0000000
--- a/doc/doxygen/html/device_8hpp_source.html
+++ /dev/null
@@ -1,287 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/device.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/device.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="device_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_DEVICE_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_DEVICE_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#else</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include<stdio.h></span>
-<a name="l00029"></a>00029 
-<a name="l00030"></a>00030 <span class="preprocessor">#include <vector></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include <string></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include <sstream></span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include <assert.h></span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="error_8hpp.html" title="Error handling for the OpenCL layer of ViennaCL.">viennacl/ocl/error.hpp</a>"</span>
-<a name="l00036"></a>00036 
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>viennacl
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039   <span class="keyword">namespace </span>ocl
-<a name="l00040"></a>00040   {
-<a name="l00041"></a>00041     
-<a name="l00045"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html">00045</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">device</a>
-<a name="l00046"></a>00046     {
-<a name="l00047"></a>00047       <span class="keyword">public</span>:
-<a name="l00048"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">00048</a>         <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">device</a>() : device_(0) {}
-<a name="l00049"></a>00049         
-<a name="l00050"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a17858dabba4d274000c38bc42de8487c">00050</a>         <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">device</a>(cl_device_id dev) : device_(dev)
-<a name="l00051"></a>00051         {
-<a name="l00052"></a>00052 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_DEVICE)</span>
-<a name="l00053"></a>00053 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Creating device object (CTOR with cl_device_id)"</span> << std::endl;
-<a name="l00054"></a>00054 <span class="preprocessor">          #endif</span>
-<a name="l00055"></a>00055 <span class="preprocessor"></span>          <a class="code" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6" title="Initializes the class from a given device ID.">init</a>(dev);
-<a name="l00056"></a>00056         }
-<a name="l00057"></a>00057         
-<a name="l00058"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a58ac501d01e9cb8eac21a831e8f0874c">00058</a>         <a class="code" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">device</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">device</a> & other)
-<a name="l00059"></a>00059         {
-<a name="l00060"></a>00060 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_DEVICE)</span>
-<a name="l00061"></a>00061 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Creating device object (Copy CTOR)"</span> << std::endl;
-<a name="l00062"></a>00062 <span class="preprocessor">          #endif</span>
-<a name="l00063"></a>00063 <span class="preprocessor"></span>          device_ = other.device_;
-<a name="l00064"></a>00064           <a class="code" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6" title="Initializes the class from a given device ID.">init</a>(device_);
-<a name="l00065"></a>00065         }
-<a name="l00066"></a>00066         
-<a name="l00068"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6">00068</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6" title="Initializes the class from a given device ID.">init</a>(cl_device_id dev)
-<a name="l00069"></a>00069         {
-<a name="l00070"></a>00070           cl_int err;
-<a name="l00071"></a>00071 
-<a name="l00072"></a>00072           <span class="comment">//query a little bit of info:</span>
-<a name="l00073"></a>00073           err = clGetDeviceInfo(dev, CL_DEVICE_MAX_WORK_GROUP_SIZE, <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>), &max_work_group_size_, NULL);
-<a name="l00074"></a>00074           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00075"></a>00075           err = clGetDeviceInfo(dev, CL_DEVICE_MAX_COMPUTE_UNITS, <span class="keyword">sizeof</span>(cl_uint), &compute_units_, NULL);
-<a name="l00076"></a>00076           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00077"></a>00077           err = clGetDeviceInfo(dev, CL_DEVICE_TYPE, <span class="keyword">sizeof</span>(cl_device_type), &type_, NULL);
-<a name="l00078"></a>00078           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00079"></a>00079           err = clGetDeviceInfo(dev, CL_DEVICE_GLOBAL_MEM_SIZE, <span class="keyword">sizeof</span>(cl_ulong), &global_memory_, NULL);
-<a name="l00080"></a>00080           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00081"></a>00081           err = clGetDeviceInfo(dev, CL_DEVICE_MAX_MEM_ALLOC_SIZE, <span class="keyword">sizeof</span>(cl_ulong), &max_memory_alloc_, NULL);
-<a name="l00082"></a>00082           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00083"></a>00083           err = clGetDeviceInfo(dev, CL_DEVICE_LOCAL_MEM_SIZE, <span class="keyword">sizeof</span>(cl_ulong), &local_memory_, NULL);
-<a name="l00084"></a>00084           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00085"></a>00085         }
-<a name="l00086"></a>00086 
-<a name="l00088"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#ab61c1a1216e3f4a8537c6b7bd8a36634">00088</a>         <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#ab61c1a1216e3f4a8537c6b7bd8a36634" title="Returns true if the device supports double precision.">double_support</a>()<span class="keyword"> const</span>
-<a name="l00089"></a>00089 <span class="keyword">        </span>{ 
-<a name="l00090"></a>00090           <span class="keywordtype">char</span> buffer[1024];
-<a name="l00091"></a>00091           <span class="keywordtype">bool</span> ret = <span class="keyword">false</span>;
-<a name="l00092"></a>00092           
-<a name="l00093"></a>00093           <span class="comment">//get extensions and search for double precision</span>
-<a name="l00094"></a>00094           clGetDeviceInfo(device_, CL_DEVICE_EXTENSIONS, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, buffer, NULL);
-<a name="l00095"></a>00095           std::string extensions(buffer);
-<a name="l00096"></a>00096           <span class="keywordflow">if</span> (extensions.find(<span class="stringliteral">"cl_khr_fp64"</span>) != std::string::npos
-<a name="l00097"></a>00097               || extensions.find(<span class="stringliteral">"cl_amd_fp64"</span>) != std::string::npos)
-<a name="l00098"></a>00098           {
-<a name="l00099"></a>00099             ret = <span class="keyword">true</span>;
-<a name="l00100"></a>00100           }
-<a name="l00101"></a>00101           
-<a name="l00102"></a>00102 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_DEVICE)</span>
-<a name="l00103"></a>00103 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Device extensions: "</span> << std::endl;
-<a name="l00104"></a>00104           std::cout << extensions << std::endl;
-<a name="l00105"></a>00105           <span class="keywordflow">if</span> (ret)
-<a name="l00106"></a>00106             std::cout << <span class="stringliteral">"ViennaCL: Device "</span> << <a class="code" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07" title="Returns the device name.">name</a>() << <span class="stringliteral">" supports double precision."</span> << std::endl;
-<a name="l00107"></a>00107           <span class="keywordflow">else</span>
-<a name="l00108"></a>00108             std::cout << <span class="stringliteral">"ViennaCL: No double precision for device "</span> << <a class="code" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07" title="Returns the device name.">name</a>() << <span class="stringliteral">"."</span> << std::endl;
-<a name="l00109"></a>00109 <span class="preprocessor">          #endif</span>
-<a name="l00110"></a>00110 <span class="preprocessor"></span>          
-<a name="l00111"></a>00111           <span class="keywordflow">return</span> ret;
-<a name="l00112"></a>00112         }
-<a name="l00113"></a>00113         
-<a name="l00114"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">00114</a>         std::string <a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>()<span class="keyword"> const</span>
-<a name="l00115"></a>00115 <span class="keyword">        </span>{
-<a name="l00116"></a>00116           <span class="keywordtype">char</span> buffer[1024];
-<a name="l00117"></a>00117           clGetDeviceInfo(device_, CL_DEVICE_EXTENSIONS, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, buffer, NULL);
-<a name="l00118"></a>00118           std::string extensions(buffer);
-<a name="l00119"></a>00119           
-<a name="l00120"></a>00120           <span class="keywordflow">if</span> (extensions.find(<span class="stringliteral">"cl_amd_fp64"</span>) != std::string::npos) <span class="comment">//AMD extension</span>
-<a name="l00121"></a>00121             <span class="keywordflow">return</span> <span class="stringliteral">"cl_amd_fp64"</span>;
-<a name="l00122"></a>00122           
-<a name="l00123"></a>00123           <span class="keywordflow">if</span> (extensions.find(<span class="stringliteral">"cl_khr_fp64"</span>) != std::string::npos) <span class="comment">//Khronos-certified standard extension for double precision</span>
-<a name="l00124"></a>00124             <span class="keywordflow">return</span> <span class="stringliteral">"cl_khr_fp64"</span>;
-<a name="l00125"></a>00125           
-<a name="l00126"></a>00126           <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00127"></a>00127         }
-<a name="l00128"></a>00128         
-<a name="l00130"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06">00130</a>         cl_device_id <a class="code" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06" title="Returns the OpenCL device id.">id</a>()<span class="keyword"> const</span>
-<a name="l00131"></a>00131 <span class="keyword">        </span>{
-<a name="l00132"></a>00132           assert(device_ != 0);
-<a name="l00133"></a>00133           <span class="keywordflow">return</span> device_;
-<a name="l00134"></a>00134         }
-<a name="l00135"></a>00135         
-<a name="l00137"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07">00137</a>         std::string <a class="code" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07" title="Returns the device name.">name</a>()<span class="keyword"> const</span>
-<a name="l00138"></a>00138 <span class="keyword">        </span>{
-<a name="l00139"></a>00139           std::ostringstream oss;        
-<a name="l00140"></a>00140           <span class="keywordtype">char</span> buffer[1024]; 
-<a name="l00141"></a>00141           cl_int err;          
-<a name="l00142"></a>00142           err = clGetDeviceInfo(device_, CL_DEVICE_NAME, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, &buffer, NULL);
-<a name="l00143"></a>00143           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00144"></a>00144           oss << buffer;
-<a name="l00145"></a>00145           <span class="keywordflow">return</span> oss.str();          
-<a name="l00146"></a>00146         }
-<a name="l00147"></a>00147         
-<a name="l00149"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a662b75f96a75aad23ec28c7c55b64d88">00149</a>         std::string <a class="code" href="classviennacl_1_1ocl_1_1device.html#a662b75f96a75aad23ec28c7c55b64d88" title="Returns the driver version.">driver_version</a>()<span class="keyword"> const</span>
-<a name="l00150"></a>00150 <span class="keyword">        </span>{
-<a name="l00151"></a>00151           std::ostringstream oss;
-<a name="l00152"></a>00152           <span class="keywordtype">char</span> buffer[1024]; buffer[0] = 0;
-<a name="l00153"></a>00153           cl_int err;          
-<a name="l00154"></a>00154           err = clGetDeviceInfo(device_, CL_DRIVER_VERSION, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, buffer, NULL);
-<a name="l00155"></a>00155           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00156"></a>00156           oss << buffer;
-<a name="l00157"></a>00157           <span class="keywordflow">return</span> oss.str();          
-<a name="l00158"></a>00158         }        
-<a name="l00159"></a>00159         
-<a name="l00161"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#ab2a44bd7f2d691fa15460928af757d99">00161</a>         cl_uint <a class="code" href="classviennacl_1_1ocl_1_1device.html#ab2a44bd7f2d691fa15460928af757d99" title="Returns the number of compute units on the device.">max_compute_units</a>()<span class="keyword"> const</span>
-<a name="l00162"></a>00162 <span class="keyword">        </span>{
-<a name="l00163"></a>00163           <span class="keywordflow">return</span> compute_units_;
-<a name="l00164"></a>00164         }
-<a name="l00165"></a>00165         
-<a name="l00167"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a8c087fde68553db31903df7efd9c033f">00167</a>         <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#a8c087fde68553db31903df7efd9c033f" title="Returns the maximum work group size for the device.">max_workgroup_size</a>()<span class="keyword"> const</span>
-<a name="l00168"></a>00168 <span class="keyword">        </span>{
-<a name="l00169"></a>00169           <span class="keywordflow">return</span> max_work_group_size_;
-<a name="l00170"></a>00170         }                        
-<a name="l00171"></a>00171 
-<a name="l00173"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a3b0090b08cd59decfbc5d27a5865ec88">00173</a>         cl_ulong <a class="code" href="classviennacl_1_1ocl_1_1device.html#a3b0090b08cd59decfbc5d27a5865ec88" title="Returns the global memory for the device.">global_memory</a>()<span class="keyword"> const</span>
-<a name="l00174"></a>00174 <span class="keyword">        </span>{
-<a name="l00175"></a>00175           <span class="keywordflow">return</span> global_memory_;
-<a name="l00176"></a>00176         }           
-<a name="l00177"></a>00177 
-<a name="l00179"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#ae9bd44c2f4e9167a2b839af9f109712c">00179</a>         cl_ulong <a class="code" href="classviennacl_1_1ocl_1_1device.html#ae9bd44c2f4e9167a2b839af9f109712c" title="Returns the local memory for the device.">local_memory</a>()<span class="keyword"> const</span>
-<a name="l00180"></a>00180 <span class="keyword">        </span>{
-<a name="l00181"></a>00181           <span class="keywordflow">return</span> local_memory_;
-<a name="l00182"></a>00182         }       
-<a name="l00183"></a>00183 
-<a name="l00185"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a8d0a43b183ce09a94af13b4d73250280">00185</a>         cl_ulong <a class="code" href="classviennacl_1_1ocl_1_1device.html#a8d0a43b183ce09a94af13b4d73250280" title="Returns the maximum allocable memory for the device.">max_allocable_memory</a>()<span class="keyword"> const</span>
-<a name="l00186"></a>00186 <span class="keyword">        </span>{
-<a name="l00187"></a>00187           <span class="keywordflow">return</span> max_memory_alloc_;
-<a name="l00188"></a>00188         }           
-<a name="l00189"></a>00189         
-<a name="l00191"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a2e1e4e2742b910c44558f9cf8e4add62">00191</a>         std::string <a class="code" href="classviennacl_1_1ocl_1_1device.html#a2e1e4e2742b910c44558f9cf8e4add62" title="Returns an info string with a few properties of the device.">info</a>()<span class="keyword"> const</span>
-<a name="l00192"></a>00192 <span class="keyword">        </span>{
-<a name="l00193"></a>00193           std::ostringstream oss;
-<a name="l00194"></a>00194           <span class="keywordtype">char</span> buffer[1024]; buffer[0] = 0;
-<a name="l00195"></a>00195           cl_int err;
-<a name="l00196"></a>00196           cl_uint vendor_id;
-<a name="l00197"></a>00197           cl_ulong local_mem_size;
-<a name="l00198"></a>00198           cl_ulong global_mem_size;
-<a name="l00199"></a>00199           
-<a name="l00200"></a>00200           err = clGetDeviceInfo(device_, CL_DEVICE_VENDOR_ID, <span class="keyword">sizeof</span>(cl_uint), &vendor_id, NULL);
-<a name="l00201"></a>00201           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00202"></a>00202           oss << <span class="stringliteral">"CL Device Vendor ID: "</span> << vendor_id << std::endl;
-<a name="l00203"></a>00203 
-<a name="l00204"></a>00204           err = clGetDeviceInfo(device_, CL_DEVICE_NAME, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, buffer, NULL);
-<a name="l00205"></a>00205           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00206"></a>00206           oss << <span class="stringliteral">"CL Device Name: "</span> << buffer << std::endl;
-<a name="l00207"></a>00207 
-<a name="l00208"></a>00208           err = clGetDeviceInfo(device_, CL_DRIVER_VERSION, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, buffer, NULL);
-<a name="l00209"></a>00209           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00210"></a>00210           std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">test</a> = buffer;
-<a name="l00211"></a>00211           oss << <span class="stringliteral">"CL Driver Version: "</span> << test << std::endl;
-<a name="l00212"></a>00212 
-<a name="l00213"></a>00213           oss << <span class="stringliteral">"--------------------------------"</span> << std::endl;
-<a name="l00214"></a>00214           
-<a name="l00215"></a>00215           oss << <span class="stringliteral">"CL Device Max Compute Units: "</span> << compute_units_ << std::endl;
-<a name="l00216"></a>00216 
-<a name="l00217"></a>00217   <span class="comment">//         err = clGetDeviceInfo(device, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, sizeof(char)*1024, buffer, NULL);</span>
-<a name="l00218"></a>00218   <span class="comment">//         CL_ERR_CHECK(err);</span>
-<a name="l00219"></a>00219   <span class="comment">//         oss << "CL Device Max Work Item Dimensions: " << buffer << std::endl;</span>
-<a name="l00220"></a>00220   <span class="comment">// </span>
-<a name="l00221"></a>00221   <span class="comment">//         err = clGetDeviceInfo(device, CL_DEVICE_MAX_WORK_ITEM_SIZES, sizeof(char)*1024, buffer, NULL);</span>
-<a name="l00222"></a>00222   <span class="comment">//         CL_ERR_CHECK(err);</span>
-<a name="l00223"></a>00223   <span class="comment">//         oss << "CL Device Max Work Item Sizes: " << buffer << std::endl;</span>
-<a name="l00224"></a>00224 
-<a name="l00225"></a>00225           oss << <span class="stringliteral">"CL Device Max Work Group Size: "</span> << max_work_group_size_ << std::endl;
-<a name="l00226"></a>00226 
-<a name="l00227"></a>00227           err = clGetDeviceInfo(device_, CL_DEVICE_GLOBAL_MEM_SIZE, <span class="keyword">sizeof</span>(cl_ulong), &global_mem_size, NULL);
-<a name="l00228"></a>00228           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00229"></a>00229           oss << <span class="stringliteral">"CL Device Global Mem Size: "</span> << global_mem_size << std::endl;
-<a name="l00230"></a>00230           
-<a name="l00231"></a>00231           err = clGetDeviceInfo(device_, CL_DEVICE_LOCAL_MEM_SIZE, <span class="keyword">sizeof</span>(cl_ulong), &local_mem_size, NULL);
-<a name="l00232"></a>00232           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00233"></a>00233           oss << <span class="stringliteral">"CL Device Local Mem Size: "</span> << local_mem_size << std::endl;
-<a name="l00234"></a>00234           
-<a name="l00235"></a>00235           <span class="comment">//return info string:</span>
-<a name="l00236"></a>00236           std::string ret(oss.str());
-<a name="l00237"></a>00237           <span class="keywordflow">return</span> ret;
-<a name="l00238"></a>00238         }
-<a name="l00239"></a>00239         
-<a name="l00240"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a49dafae1d5a718f0825eefd245b14683">00240</a>         <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#a49dafae1d5a718f0825eefd245b14683">max_work_group_size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> max_work_group_size_; }
-<a name="l00241"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#ae641ec7369f4552b2d0bfcdd62ce9204">00241</a>         cl_uint <a class="code" href="classviennacl_1_1ocl_1_1device.html#ae641ec7369f4552b2d0bfcdd62ce9204">compute_units</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> compute_units_; }
-<a name="l00242"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a30cb8b6361720dfb6c7ce63d1c347e41">00242</a>         cl_device_type <a class="code" href="classviennacl_1_1ocl_1_1device.html#a30cb8b6361720dfb6c7ce63d1c347e41">type</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> type_; }
-<a name="l00243"></a>00243         
-<a name="l00244"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a42bb548ced469dc5714f1816603a4d35">00244</a>         <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#a42bb548ced469dc5714f1816603a4d35">operator==</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">device</a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00245"></a>00245 <span class="keyword">        </span>{
-<a name="l00246"></a>00246           <span class="keywordflow">return</span> device_ == other.device_;
-<a name="l00247"></a>00247         }
-<a name="l00248"></a>00248 
-<a name="l00249"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a06e1d466be32d6b0072a8a8e23b339f9">00249</a>         <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#a42bb548ced469dc5714f1816603a4d35">operator==</a>(cl_device_id other)<span class="keyword"> const</span>
-<a name="l00250"></a>00250 <span class="keyword">        </span>{
-<a name="l00251"></a>00251           <span class="keywordflow">return</span> device_ == other;
-<a name="l00252"></a>00252         }
-<a name="l00253"></a>00253 
-<a name="l00254"></a>00254       <span class="keyword">private</span>:
-<a name="l00255"></a>00255         
-<a name="l00256"></a>00256         cl_device_id    device_;
-<a name="l00257"></a>00257         <span class="keywordtype">size_t</span>          max_work_group_size_;
-<a name="l00258"></a>00258         cl_uint         compute_units_;
-<a name="l00259"></a>00259         cl_device_type  type_; <span class="comment">//device type</span>
-<a name="l00260"></a>00260         cl_ulong        max_memory_alloc_;
-<a name="l00261"></a>00261         cl_ulong        global_memory_;
-<a name="l00262"></a>00262         cl_ulong        local_memory_;
-<a name="l00263"></a>00263     };
-<a name="l00264"></a>00264 
-<a name="l00265"></a>00265   } <span class="comment">//namespace ocl</span>
-<a name="l00266"></a>00266 } <span class="comment">//namespace viennacl</span>
-<a name="l00267"></a>00267 
-<a name="l00268"></a>00268 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/direct__solve_8hpp.html b/doc/doxygen/html/direct__solve_8hpp.html
deleted file mode 100644
index a33c25b..0000000
--- a/doc/doxygen/html/direct__solve_8hpp.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/direct_solve.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/direct_solve.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementations of dense direct solvers are found here.  
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix_8hpp_source.html">viennacl/matrix.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">viennacl/tools/matrix_kernel_class_deducer.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">viennacl/tools/matrix_solve_kernel_class_deducer.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-
-<p><a href="direct__solve_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a18293ef61ad46907177e280d4b1d680a">inplace_solve</a> (const matrix< SCALARTYPE, F1, A1 > &mat, matrix< SCALARTYPE, F2, A2 > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems.  <a href="#a18293ef61ad46907177e280d4b1d680a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0ec9d2642d98a204f1de4fdad9063c14">inplace_solve</a> (const matrix< SCALARTYPE, F1, A1 > &mat, const matrix_expression< const matrix< SCALARTYPE, F2, A2 >, const matrix< SCALARTYPE, F2, A2 >, op_trans > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems.  <a href="#a0ec9d2642d98a204f1de4fdad9063c14"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad849b3114b76777bb0162ddf3fe8eba2">inplace_solve</a> (const matrix_expression< const matrix< SCALARTYPE, F1, A1 >, const matrix< SCALARTYPE, F1, A1 >, op_trans > &proxy, matrix< SCALARTYPE, F2, A2 > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems.  <a href="#ad849b3114b76777bb0162ddf3fe8eba2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aae8acccfb7520c1c75d8bbb10130aa4a">inplace_solve</a> (const matrix_expression< const matrix< SCALARTYPE, F1, A1 >, const matrix< SCALARTYPE, F1, A1 >, op_trans > &proxy, const matrix_expression< const matrix< SCALARTYPE, F2, A2 >, const matrix< SCALARTYPE, F2, A2 >, op_trans > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems.  <a href="#aae8acccfb7520c1c75d8bbb10130aa4a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1fa59efa7e0a65e6e9c949b441696af1">inplace_solve</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &mat, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, SOLVERTAG)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a373c29fa2cb02177b1450d36eabeb265">inplace_solve</a> (const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems.  <a href="#a373c29fa2cb02177b1450d36eabeb265"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">matrix< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a658f2de0ab6804ebabbc4248adc2d927">solve</a> (const matrix< SCALARTYPE, F1, ALIGNMENT_A > &A, const matrix< SCALARTYPE, F2, ALIGNMENT_B > &B, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for C = solve(A, B, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#a658f2de0ab6804ebabbc4248adc2d927"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">matrix< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a13d7be38f0fbef200ccbe90d9240e542">solve</a> (const matrix< SCALARTYPE, F1, ALIGNMENT_A > &A, const matrix_expression< const matrix< SCALARTYPE, F2, ALIGNMENT_B >, const matrix< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > &proxy, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for C = solve(A, B^T, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#a13d7be38f0fbef200ccbe90d9240e542"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9f5cb80858484131ecb73e867b2bf794">solve</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &mat, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(mat, vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#a9f5cb80858484131ecb73e867b2bf794"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">matrix< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aec73c039978029c091e70224bf283ed5">solve</a> (const matrix_expression< const matrix< SCALARTYPE, F1, ALIGNMENT_A >, const matrix< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > &proxy, const matrix< SCALARTYPE, F2, ALIGNMENT_B > &B, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), B, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#aec73c039978029c091e70224bf283ed5"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">matrix< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a18da6b35b9790a1acd824dee6a8fb76a">solve</a> (const matrix_expression< const matrix< SCALARTYPE, F1, ALIGNMENT_A >, const matrix< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > &proxy_A, const matrix_expression< const matrix< SCALARTYPE, F2, ALIGNMENT_B >, const matrix< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > &proxy_B, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#a18da6b35b9790a1acd824dee6a8fb76a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#add76ce64e200f9193156a98a15bf42fd">solve</a> (const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#add76ce64e200f9193156a98a15bf42fd"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2aa3e7727b42bd95f5d1e5dd5366f807">lu_factorize</a> (matrix< SCALARTYPE, F, ALIGNMENT > &mat)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">LU factorization of a dense matrix.  <a href="#a2aa3e7727b42bd95f5d1e5dd5366f807"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1407e42bdce9d821baaf5d4163a09dd1">lu_substitute</a> (matrix< SCALARTYPE, F1, ALIGNMENT_A > const &A, matrix< SCALARTYPE, F2, ALIGNMENT_B > &B)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">LU substitution for the system LU = rhs.  <a href="#a1407e42bdce9d821baaf5d4163a09dd1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9da85acf3d7f22c869dfd52791a25d55">lu_substitute</a> (matrix< SCALARTYPE, F, ALIGNMENT > const &mat, vector< SCALARTYPE, VEC_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">LU substitution for the system LU = rhs.  <a href="#a9da85acf3d7f22c869dfd52791a25d55"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of dense direct solvers are found here. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/direct__solve_8hpp_source.html b/doc/doxygen/html/direct__solve_8hpp_source.html
deleted file mode 100644
index 422a742..0000000
--- a/doc/doxygen/html/direct__solve_8hpp_source.html
+++ /dev/null
@@ -1,337 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/direct_solve.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/direct_solve.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="direct__solve_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_DIRECT_SOLVE_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_DIRECT_SOLVE_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="matrix_8hpp.html" title="Implementation of the dense matrix class.">viennacl/matrix.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="matrix__kernel__class__deducer_8hpp.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl/tools/matrix_kernel_class_deducer.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="matrix__solve__kernel__class__deducer_8hpp.html" title="Implementation of a helper meta class for deducing the correct kernels for the dense matrix solver...">viennacl/tools/matrix_solve_kernel_class_deducer.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00029"></a>00029 
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033   <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034   {
-<a name="l00036"></a>00036 
-<a name="l00041"></a>00041     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2, <span class="keyword">typename</span> SOLVERTAG>
-<a name="l00042"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a18293ef61ad46907177e280d4b1d680a">00042</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, A1></a> & mat,
-<a name="l00043"></a>00043                        <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a> & B,
-<a name="l00044"></a>00044                        SOLVERTAG)
-<a name="l00045"></a>00045     {
-<a name="l00046"></a>00046       assert(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00047"></a>00047       assert(mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00048"></a>00048       
-<a name="l00049"></a>00049       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00050"></a>00050                                                                            <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a> >::ResultType    KernelClass;
-<a name="l00051"></a>00051       KernelClass::init();
-<a name="l00052"></a>00052       
-<a name="l00053"></a>00053       std::stringstream ss;
-<a name="l00054"></a>00054       ss << <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">SOLVERTAG::name</a>() << <span class="stringliteral">"_solve"</span>;
-<a name="l00055"></a>00055       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), ss.str());
-<a name="l00056"></a>00056 
-<a name="l00057"></a>00057       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00058"></a>00058       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat, mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00059"></a>00059                                                              B,   B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(),   B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(),   B.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(),   B.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>()));        
-<a name="l00060"></a>00060     }
-<a name="l00061"></a>00061     
-<a name="l00067"></a>00067     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2, <span class="keyword">typename</span> SOLVERTAG>
-<a name="l00068"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a0ec9d2642d98a204f1de4fdad9063c14">00068</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, A1></a> & mat,
-<a name="l00069"></a>00069                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a>,
-<a name="l00070"></a>00070                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a>,
-<a name="l00071"></a>00071                                                 op_trans> & B,
-<a name="l00072"></a>00072                        SOLVERTAG)
-<a name="l00073"></a>00073     {
-<a name="l00074"></a>00074       assert(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00075"></a>00075       assert(mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == B.lhs().size2());
-<a name="l00076"></a>00076       
-<a name="l00077"></a>00077       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00078"></a>00078                                                                            <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a> >::ResultType    KernelClass;
-<a name="l00079"></a>00079       KernelClass::init();
-<a name="l00080"></a>00080 
-<a name="l00081"></a>00081       std::stringstream ss;
-<a name="l00082"></a>00082       ss << <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">SOLVERTAG::name</a>() << <span class="stringliteral">"_trans_solve"</span>;
-<a name="l00083"></a>00083       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), ss.str());
-<a name="l00084"></a>00084 
-<a name="l00085"></a>00085       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, B.lhs().size1() * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00086"></a>00086       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat, mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00087"></a>00087                                B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2()));     
-<a name="l00088"></a>00088     }
-<a name="l00089"></a>00089     
-<a name="l00090"></a>00090     <span class="comment">//upper triangular solver for transposed lower triangular matrices</span>
-<a name="l00096"></a>00096 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2, <span class="keyword">typename</span> SOLVERTAG>
-<a name="l00097"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ad849b3114b76777bb0162ddf3fe8eba2">00097</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00098"></a>00098                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00099"></a>00099                                                 op_trans> & proxy,
-<a name="l00100"></a>00100                        <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a> & B,
-<a name="l00101"></a>00101                        SOLVERTAG)
-<a name="l00102"></a>00102     {
-<a name="l00103"></a>00103       assert(proxy.lhs().size1() == proxy.lhs().size2());
-<a name="l00104"></a>00104       assert(proxy.lhs().size2() == B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00105"></a>00105       
-<a name="l00106"></a>00106       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00107"></a>00107                                                                            <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a> >::ResultType    KernelClass;
-<a name="l00108"></a>00108       KernelClass::init();
-<a name="l00109"></a>00109 
-<a name="l00110"></a>00110       std::stringstream ss;
-<a name="l00111"></a>00111       ss << <span class="stringliteral">"trans_"</span> << <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">SOLVERTAG::name</a>() << <span class="stringliteral">"_solve"</span>;
-<a name="l00112"></a>00112       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), ss.str());
-<a name="l00113"></a>00113 
-<a name="l00114"></a>00114       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00115"></a>00115       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(), proxy.lhs().internal_size1(), proxy.lhs().internal_size2(),
-<a name="l00116"></a>00116                                          B,   B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(),   B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(),   B.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(),   B.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>()));        
-<a name="l00117"></a>00117     }
-<a name="l00118"></a>00118 
-<a name="l00124"></a>00124     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2, <span class="keyword">typename</span> SOLVERTAG>
-<a name="l00125"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aae8acccfb7520c1c75d8bbb10130aa4a">00125</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00126"></a>00126                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00127"></a>00127                                                 op_trans> & proxy,
-<a name="l00128"></a>00128                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a>,
-<a name="l00129"></a>00129                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a>,
-<a name="l00130"></a>00130                                                 op_trans> & B,
-<a name="l00131"></a>00131                        SOLVERTAG)
-<a name="l00132"></a>00132     {
-<a name="l00133"></a>00133       assert(proxy.lhs().size1() == proxy.lhs().size2());
-<a name="l00134"></a>00134       assert(proxy.lhs().size2() == B.lhs().size2());
-<a name="l00135"></a>00135       
-<a name="l00136"></a>00136       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00137"></a>00137                                                                            <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a> >::ResultType    KernelClass;
-<a name="l00138"></a>00138       KernelClass::init();
-<a name="l00139"></a>00139 
-<a name="l00140"></a>00140       std::stringstream ss;
-<a name="l00141"></a>00141       ss << <span class="stringliteral">"trans_"</span> << <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">SOLVERTAG::name</a>() << <span class="stringliteral">"_trans_solve"</span>;
-<a name="l00142"></a>00142       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), ss.str());
-<a name="l00143"></a>00143 
-<a name="l00144"></a>00144       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, B.lhs().size1() * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00145"></a>00145       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(), proxy.lhs().internal_size1(), proxy.lhs().internal_size2(),
-<a name="l00146"></a>00146                                B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2()));        
-<a name="l00147"></a>00147     }
-<a name="l00148"></a>00148 
-<a name="l00149"></a>00149     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT, <span class="keyword">typename</span> SOLVERTAG>
-<a name="l00150"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a1fa59efa7e0a65e6e9c949b441696af1">00150</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat,
-<a name="l00151"></a>00151                        <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00152"></a>00152                        SOLVERTAG)
-<a name="l00153"></a>00153     {
-<a name="l00154"></a>00154       assert(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00155"></a>00155       assert(mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00156"></a>00156       
-<a name="l00157"></a>00157       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00158"></a>00158 
-<a name="l00159"></a>00159       std::stringstream ss;
-<a name="l00160"></a>00160       ss << <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">SOLVERTAG::name</a>() << <span class="stringliteral">"_triangular_substitute_inplace"</span>;
-<a name="l00161"></a>00161       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), ss.str());
-<a name="l00162"></a>00162 
-<a name="l00163"></a>00163       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00164"></a>00164       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat, mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(), vec));        
-<a name="l00165"></a>00165     }
-<a name="l00166"></a>00166 
-<a name="l00172"></a>00172     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT, <span class="keyword">typename</span> SOLVERTAG>
-<a name="l00173"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a373c29fa2cb02177b1450d36eabeb265">00173</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00174"></a>00174                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00175"></a>00175                                                 op_trans> & proxy,
-<a name="l00176"></a>00176                        <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00177"></a>00177                        SOLVERTAG)
-<a name="l00178"></a>00178     {
-<a name="l00179"></a>00179       assert(proxy.lhs().size1() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00180"></a>00180       assert(proxy.lhs().size2() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00181"></a>00181 
-<a name="l00182"></a>00182       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00183"></a>00183       
-<a name="l00184"></a>00184       std::stringstream ss;
-<a name="l00185"></a>00185       ss << <span class="stringliteral">"trans_"</span> << <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">SOLVERTAG::name</a>() << <span class="stringliteral">"_triangular_substitute_inplace"</span>;
-<a name="l00186"></a>00186       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), ss.str());
-<a name="l00187"></a>00187       
-<a name="l00188"></a>00188       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00189"></a>00189       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(),
-<a name="l00190"></a>00190                                                            proxy.lhs().internal_size1(), proxy.lhs().internal_size2(), vec));        
-<a name="l00191"></a>00191     }
-<a name="l00192"></a>00192     
-<a name="l00194"></a>00194 
-<a name="l00201"></a>00201     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_A, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_B, <span class="keyword">typename</span> TAG>
-<a name="l00202"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a658f2de0ab6804ebabbc4248adc2d927">00202</a>     <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a> & A,
-<a name="l00203"></a>00203                                         <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> & B,
-<a name="l00204"></a>00204                                         TAG <span class="keyword">const</span> & tag)
-<a name="l00205"></a>00205     {
-<a name="l00206"></a>00206       <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00207"></a>00207       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_A></a> result(B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00208"></a>00208       result = B;
-<a name="l00209"></a>00209     
-<a name="l00210"></a>00210       <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(A, result, tag);
-<a name="l00211"></a>00211     
-<a name="l00212"></a>00212       <span class="keywordflow">return</span> result;
-<a name="l00213"></a>00213     }
-<a name="l00214"></a>00214 
-<a name="l00221"></a>00221     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_A, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_B, <span class="keyword">typename</span> TAG>
-<a name="l00222"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a13d7be38f0fbef200ccbe90d9240e542">00222</a>     <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a> & A,
-<a name="l00223"></a>00223                                         <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a>,
-<a name="l00224"></a>00224                                                                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a>,
-<a name="l00225"></a>00225                                                                      op_trans> & proxy,
-<a name="l00226"></a>00226                                         TAG <span class="keyword">const</span> & tag)
-<a name="l00227"></a>00227     {
-<a name="l00228"></a>00228       <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00229"></a>00229       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> result(proxy.lhs().size2(), proxy.lhs().size1());
-<a name="l00230"></a>00230       result = proxy;
-<a name="l00231"></a>00231     
-<a name="l00232"></a>00232       <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(A, result, tag);
-<a name="l00233"></a>00233     
-<a name="l00234"></a>00234       <span class="keywordflow">return</span> result;
-<a name="l00235"></a>00235     }
-<a name="l00236"></a>00236 
-<a name="l00243"></a>00243     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT, <span class="keyword">typename</span> TAG>
-<a name="l00244"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a9f5cb80858484131ecb73e867b2bf794">00244</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat,
-<a name="l00245"></a>00245                                         <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00246"></a>00246                                         TAG <span class="keyword">const</span> & tag)
-<a name="l00247"></a>00247     {
-<a name="l00248"></a>00248       <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00249"></a>00249       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> result(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00250"></a>00250       result = vec;
-<a name="l00251"></a>00251     
-<a name="l00252"></a>00252       <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(mat, result, tag);
-<a name="l00253"></a>00253     
-<a name="l00254"></a>00254       <span class="keywordflow">return</span> result;
-<a name="l00255"></a>00255     }
-<a name="l00256"></a>00256     
-<a name="l00257"></a>00257     
-<a name="l00259"></a>00259 
-<a name="l00265"></a>00265     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_A, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_B, <span class="keyword">typename</span> TAG>
-<a name="l00266"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aec73c039978029c091e70224bf283ed5">00266</a>     <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a>,
-<a name="l00267"></a>00267                                                                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a>,
-<a name="l00268"></a>00268                                                                      op_trans> & proxy,
-<a name="l00269"></a>00269                                             <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> & B,
-<a name="l00270"></a>00270                                             TAG <span class="keyword">const</span> & tag)
-<a name="l00271"></a>00271     {
-<a name="l00272"></a>00272       <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00273"></a>00273       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> result(B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00274"></a>00274       result = B;
-<a name="l00275"></a>00275     
-<a name="l00276"></a>00276       <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(proxy, result, tag);
-<a name="l00277"></a>00277     
-<a name="l00278"></a>00278       <span class="keywordflow">return</span> result;
-<a name="l00279"></a>00279     }
-<a name="l00280"></a>00280     
-<a name="l00281"></a>00281     
-<a name="l00288"></a>00288     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_A, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_B, <span class="keyword">typename</span> TAG>
-<a name="l00289"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a18da6b35b9790a1acd824dee6a8fb76a">00289</a>     <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a>,
-<a name="l00290"></a>00290                                                                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a>,
-<a name="l00291"></a>00291                                                                      op_trans> & proxy_A,
-<a name="l00292"></a>00292                                             <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a>,
-<a name="l00293"></a>00293                                                                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a>,
-<a name="l00294"></a>00294                                                                      op_trans> & proxy_B,
-<a name="l00295"></a>00295                                             TAG <span class="keyword">const</span> & tag)
-<a name="l00296"></a>00296     {
-<a name="l00297"></a>00297       <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00298"></a>00298       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> result(proxy_B.lhs().size2(), proxy_B.lhs().size1());
-<a name="l00299"></a>00299       result = <a class="code" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c" title="Returns an expression template class representing a transposed matrix.">trans</a>(proxy_B.lhs());
-<a name="l00300"></a>00300     
-<a name="l00301"></a>00301       <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(proxy_A, result, tag);
-<a name="l00302"></a>00302     
-<a name="l00303"></a>00303       <span class="keywordflow">return</span> result;
-<a name="l00304"></a>00304     }
-<a name="l00305"></a>00305     
-<a name="l00312"></a>00312     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT, <span class="keyword">typename</span> TAG>
-<a name="l00313"></a><a class="code" href="namespaceviennacl_1_1linalg.html#add76ce64e200f9193156a98a15bf42fd">00313</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00314"></a>00314                                                                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00315"></a>00315                                                                      op_trans> & proxy,
-<a name="l00316"></a>00316                                             <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00317"></a>00317                                             TAG <span class="keyword">const</span> & tag)
-<a name="l00318"></a>00318     {
-<a name="l00319"></a>00319       <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00320"></a>00320       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> result(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00321"></a>00321       result = vec;
-<a name="l00322"></a>00322     
-<a name="l00323"></a>00323       <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(proxy, result, tag);
-<a name="l00324"></a>00324     
-<a name="l00325"></a>00325       <span class="keywordflow">return</span> result;
-<a name="l00326"></a>00326     }
-<a name="l00327"></a>00327     
-<a name="l00328"></a>00328     
-<a name="l00330"></a>00330 
-<a name="l00334"></a>00334     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00335"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a2aa3e7727b42bd95f5d1e5dd5366f807">00335</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a2aa3e7727b42bd95f5d1e5dd5366f807" title="LU factorization of a dense matrix.">lu_factorize</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat)
-<a name="l00336"></a>00336     {
-<a name="l00337"></a>00337       assert(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00338"></a>00338 
-<a name="l00339"></a>00339       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00340"></a>00340       
-<a name="l00341"></a>00341       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"lu_factorize"</span>);
-<a name="l00342"></a>00342       
-<a name="l00343"></a>00343       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00344"></a>00344       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat, mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>()));        
-<a name="l00345"></a>00345     }
-<a name="l00346"></a>00346 
-<a name="l00347"></a>00347 
-<a name="l00353"></a>00353     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_A, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_B>
-<a name="l00354"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a1407e42bdce9d821baaf5d4163a09dd1">00354</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a1407e42bdce9d821baaf5d4163a09dd1" title="LU substitution for the system LU = rhs.">lu_substitute</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a> <span class="keyword">const</span> & A,
-<a name="l00355"></a>00355                        <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> & B)
-<a name="l00356"></a>00356     {
-<a name="l00357"></a>00357       assert(A.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == A.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00358"></a>00358       assert(A.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == A.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00359"></a>00359       <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(A, B, <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">unit_lower_tag</a>());
-<a name="l00360"></a>00360       <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(A, B, <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">upper_tag</a>());
-<a name="l00361"></a>00361     }
-<a name="l00362"></a>00362 
-<a name="l00368"></a>00368     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT>
-<a name="l00369"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a9da85acf3d7f22c869dfd52791a25d55">00369</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a1407e42bdce9d821baaf5d4163a09dd1" title="LU substitution for the system LU = rhs.">lu_substitute</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> <span class="keyword">const</span> & mat,
-<a name="l00370"></a>00370                        <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00371"></a>00371     {
-<a name="l00372"></a>00372       assert(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00373"></a>00373       <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(mat, vec, <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">unit_lower_tag</a>());
-<a name="l00374"></a>00374       <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(mat, vec, <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">upper_tag</a>());
-<a name="l00375"></a>00375     }
-<a name="l00376"></a>00376 
-<a name="l00377"></a>00377   }
-<a name="l00378"></a>00378 }
-<a name="l00379"></a>00379 
-<a name="l00380"></a>00380 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/doxygen.css b/doc/doxygen/html/doxygen.css
deleted file mode 100644
index 658686f..0000000
--- a/doc/doxygen/html/doxygen.css
+++ /dev/null
@@ -1,656 +0,0 @@
-/* The standard CSS for doxygen */
-
-body, table, div, p, dl {
-	font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
-	font-size: 12px;
-}
-
-/* @group Heading Levels */
-
-h1 {
-	font-size: 150%;
-}
-
-h2 {
-	font-size: 120%;
-}
-
-h3 {
-	font-size: 100%;
-}
-
-dt {
-	font-weight: bold;
-}
-
-div.multicol {
-	-moz-column-gap: 1em;
-	-webkit-column-gap: 1em;
-	-moz-column-count: 3;
-	-webkit-column-count: 3;
-}
-
-p.startli, p.startdd, p.starttd {
-	margin-top: 2px;
-}
-
-p.endli {
-	margin-bottom: 0px;
-}
-
-p.enddd {
-	margin-bottom: 4px;
-}
-
-p.endtd {
-	margin-bottom: 2px;
-}
-
-/* @end */
-
-caption {
-	font-weight: bold;
-}
-
-span.legend {
-        font-size: 70%;
-        text-align: center;
-}
-
-h3.version {
-        font-size: 90%;
-        text-align: center;
-}
-
-div.qindex, div.navtab{
-	background-color: #EBEFF6;
-	border: 1px solid #A3B4D7;
-	text-align: center;
-	margin: 2px;
-	padding: 2px;
-}
-
-div.qindex, div.navpath {
-	width: 100%;
-	line-height: 140%;
-}
-
-div.navtab {
-	margin-right: 15px;
-}
-
-/* @group Link Styling */
-
-a {
-	color: #3D578C;
-	font-weight: normal;
-	text-decoration: none;
-}
-
-.contents a:visited {
-	color: #4665A2;
-}
-
-a:hover {
-	text-decoration: underline;
-}
-
-a.qindex {
-	font-weight: bold;
-}
-
-a.qindexHL {
-	font-weight: bold;
-	background-color: #9CAFD4;
-	color: #ffffff;
-	border: 1px double #869DCA;
-}
-
-.contents a.qindexHL:visited {
-        color: #ffffff;
-}
-
-a.el {
-	font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code {
-	color: #4665A2;
-}
-
-a.codeRef {
-	color: #4665A2;
-}
-
-/* @end */
-
-dl.el {
-	margin-left: -1cm;
-}
-
-.fragment {
-	font-family: monospace, fixed;
-	font-size: 105%;
-}
-
-pre.fragment {
-	border: 1px solid #C4CFE5;
-	background-color: #FBFCFD;
-	padding: 4px 6px;
-	margin: 4px 8px 4px 2px;
-	overflow: auto;
-	word-wrap: break-word;
-	font-size:  9pt;
-	line-height: 125%;
-}
-
-div.ah {
-	background-color: black;
-	font-weight: bold;
-	color: #ffffff;
-	margin-bottom: 3px;
-	margin-top: 3px;
-	padding: 0.2em;
-	border: solid thin #333;
-	border-radius: 0.5em;
-	-webkit-border-radius: .5em;
-	-moz-border-radius: .5em;
-	-webkit-box-shadow: 2px 2px 3px #999;
-	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
-	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
-}
-
-div.groupHeader {
-	margin-left: 16px;
-	margin-top: 12px;
-	margin-bottom: 6px;
-	font-weight: bold;
-}
-
-div.groupText {
-	margin-left: 16px;
-	font-style: italic;
-}
-
-body {
-	background: white;
-	color: black;
-        margin: 0;
-}
-
-div.contents {
-	margin-top: 10px;
-	margin-left: 10px;
-	margin-right: 10px;
-}
-
-td.indexkey {
-	background-color: #EBEFF6;
-	font-weight: bold;
-	border: 1px solid #C4CFE5;
-	margin: 2px 0px 2px 0;
-	padding: 2px 10px;
-}
-
-td.indexvalue {
-	background-color: #EBEFF6;
-	border: 1px solid #C4CFE5;
-	padding: 2px 10px;
-	margin: 2px 0px;
-}
-
-tr.memlist {
-	background-color: #EEF1F7;
-}
-
-p.formulaDsp {
-	text-align: center;
-}
-
-img.formulaDsp {
-	
-}
-
-img.formulaInl {
-	vertical-align: middle;
-}
-
-div.center {
-	text-align: center;
-        margin-top: 0px;
-        margin-bottom: 0px;
-        padding: 0px;
-}
-
-div.center img {
-	border: 0px;
-}
-
-address.footer {
-	text-align: right;
-	padding-right: 12px;
-}
-
-img.footer {
-	border: 0px;
-	vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
-	color: #008000
-}
-
-span.keywordtype {
-	color: #604020
-}
-
-span.keywordflow {
-	color: #e08000
-}
-
-span.comment {
-	color: #800000
-}
-
-span.preprocessor {
-	color: #806020
-}
-
-span.stringliteral {
-	color: #002080
-}
-
-span.charliteral {
-	color: #008080
-}
-
-span.vhdldigit { 
-	color: #ff00ff 
-}
-
-span.vhdlchar { 
-	color: #000000 
-}
-
-span.vhdlkeyword { 
-	color: #700070 
-}
-
-span.vhdllogic { 
-	color: #ff0000 
-}
-
-/* @end */
-
-/*
-.search {
-	color: #003399;
-	font-weight: bold;
-}
-
-form.search {
-	margin-bottom: 0px;
-	margin-top: 0px;
-}
-
-input.search {
-	font-size: 75%;
-	color: #000080;
-	font-weight: normal;
-	background-color: #e8eef2;
-}
-*/
-
-td.tiny {
-	font-size: 75%;
-}
-
-.dirtab {
-	padding: 4px;
-	border-collapse: collapse;
-	border: 1px solid #A3B4D7;
-}
-
-th.dirtab {
-	background: #EBEFF6;
-	font-weight: bold;
-}
-
-hr {
-	height: 0px;
-	border: none;
-	border-top: 1px solid #4A6AAA;
-}
-
-hr.footer {
-	height: 1px;
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
-	border-spacing: 0px;
-	padding: 0px;
-}
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
-	background-color: #F9FAFC;
-	border: none;
-	margin: 4px;
-	padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
-	padding: 0px 8px 4px 8px;
-	color: #555;
-}
-
-.memItemLeft, .memItemRight, .memTemplParams {
-	border-top: 1px solid #C4CFE5;
-}
-
-.memItemLeft, .memTemplItemLeft {
-        white-space: nowrap;
-}
-
-.memTemplParams {
-	color: #4665A2;
-        white-space: nowrap;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtemplate {
-	font-size: 80%;
-	color: #4665A2;
-	font-weight: normal;
-	margin-left: 3px;
-}
-
-.memnav {
-	background-color: #EBEFF6;
-	border: 1px solid #A3B4D7;
-	text-align: center;
-	margin: 2px;
-	margin-right: 15px;
-	padding: 2px;
-}
-
-.memitem {
-	padding: 0;
-	margin-bottom: 10px;
-}
-
-.memname {
-        white-space: nowrap;
-        font-weight: bold;
-        margin-left: 6px;
-}
-
-.memproto {
-        border-top: 1px solid #A8B8D9;
-        border-left: 1px solid #A8B8D9;
-        border-right: 1px solid #A8B8D9;
-        padding: 6px 0px 6px 0px;
-        color: #253555;
-        font-weight: bold;
-        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-        /* firefox specific markup */
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        -moz-border-radius-topright: 8px;
-        -moz-border-radius-topleft: 8px;
-        /* webkit specific markup */
-        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        -webkit-border-top-right-radius: 8px;
-        -webkit-border-top-left-radius: 8px;
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: #E2E8F2;
-
-}
-
-.memdoc {
-        border-bottom: 1px solid #A8B8D9;      
-        border-left: 1px solid #A8B8D9;      
-        border-right: 1px solid #A8B8D9; 
-        padding: 2px 5px;
-        background-color: #FBFCFD;
-        border-top-width: 0;
-        /* firefox specific markup */
-        -moz-border-radius-bottomleft: 8px;
-        -moz-border-radius-bottomright: 8px;
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
-        /* webkit specific markup */
-        -webkit-border-bottom-left-radius: 8px;
-        -webkit-border-bottom-right-radius: 8px;
-        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
-}
-
-.paramkey {
-	text-align: right;
-}
-
-.paramtype {
-	white-space: nowrap;
-}
-
-.paramname {
-	color: #602020;
-	white-space: nowrap;
-}
-.paramname em {
-	font-style: normal;
-}
-
-/* @end */
-
-/* @group Directory (tree) */
-
-/* for the tree view */
-
-.ftvtree {
-	font-family: sans-serif;
-	margin: 0px;
-}
-
-/* these are for tree view when used as main index */
-
-.directory {
-	font-size: 9pt;
-	font-weight: bold;
-	margin: 5px;
-}
-
-.directory h3 {
-	margin: 0px;
-	margin-top: 1em;
-	font-size: 11pt;
-}
-
-/*
-The following two styles can be used to replace the root node title
-with an image of your choice.  Simply uncomment the next two styles,
-specify the name of your image and be sure to set 'height' to the
-proper pixel height of your image.
-*/
-
-/*
-.directory h3.swap {
-	height: 61px;
-	background-repeat: no-repeat;
-	background-image: url("yourimage.gif");
-}
-.directory h3.swap span {
-	display: none;
-}
-*/
-
-.directory > h3 {
-	margin-top: 0;
-}
-
-.directory p {
-	margin: 0px;
-	white-space: nowrap;
-}
-
-.directory div {
-	display: none;
-	margin: 0px;
-}
-
-.directory img {
-	vertical-align: -30%;
-}
-
-/* these are for tree view when not used as main index */
-
-.directory-alt {
-	font-size: 100%;
-	font-weight: bold;
-}
-
-.directory-alt h3 {
-	margin: 0px;
-	margin-top: 1em;
-	font-size: 11pt;
-}
-
-.directory-alt > h3 {
-	margin-top: 0;
-}
-
-.directory-alt p {
-	margin: 0px;
-	white-space: nowrap;
-}
-
-.directory-alt div {
-	display: none;
-	margin: 0px;
-}
-
-.directory-alt img {
-	vertical-align: -30%;
-}
-
-/* @end */
-
-div.dynheader {
-        margin-top: 8px;
-}
-
-address {
-	font-style: normal;
-	color: #2A3D61;
-}
-
-table.doxtable {
-	border-collapse:collapse;
-}
-
-table.doxtable td, table.doxtable th {
-	border: 1px solid #2D4068;
-	padding: 3px 7px 2px;
-}
-
-table.doxtable th {
-	background-color: #374F7F;
-	color: #FFFFFF;
-	font-size: 110%;
-	padding-bottom: 4px;
-	padding-top: 5px;
-	text-align:left;
-}
-
-.tabsearch {
-	top: 0px;
-	left: 10px;
-	height: 36px;
-	background-image: url('tab_b.png');
-	z-index: 101;
-	overflow: hidden;
-	font-size: 13px;
-}
-
-.navpath ul
-{
-	font-size: 11px;
-	background-image:url('tab_b.png');
-	background-repeat:repeat-x;
-	height:30px;
-	line-height:30px;
-	color:#8AA0CC;
-	border:solid 1px #C2CDE4;
-	overflow:hidden;
-	margin:0px;
-	padding:0px;
-}
-
-.navpath li
-{
-	list-style-type:none;
-	float:left;
-	padding-left:10px;
-	padding-right: 15px;
-	background-image:url('bc_s.png');
-	background-repeat:no-repeat;
-	background-position:right;
-	color:#364D7C;
-}
-
-.navpath a
-{
-	height:32px;
-	display:block;
-	text-decoration: none;
-	outline: none;
-}
-
-.navpath a:hover
-{
-	color:#6884BD;
-}
-
-div.summary
-{
-	float: right;
-	font-size: 8pt;
-	padding-right: 5px;
-	width: 50%;
-	text-align: right;
-}       
-
-div.summary a
-{
-	white-space: nowrap;
-}
-
-div.header
-{
-        background-image:url('nav_h.png');
-        background-repeat:repeat-x;
-	background-color: #F9FAFC;
-	margin:  0px;
-	border-bottom: 1px solid #C4CFE5;
-}
-
-div.headertitle
-{
-	padding: 5px 5px 5px 10px;
-}
-
diff --git a/doc/doxygen/html/doxygen.png b/doc/doxygen/html/doxygen.png
deleted file mode 100644
index 635ed52..0000000
Binary files a/doc/doxygen/html/doxygen.png and /dev/null differ
diff --git a/doc/doxygen/html/enqueue_8hpp.html b/doc/doxygen/html/enqueue_8hpp.html
deleted file mode 100644
index a808a8e..0000000
--- a/doc/doxygen/html/enqueue_8hpp.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/enqueue.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/enqueue.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Enqueues kernels into command queues.  
-<a href="#_details">More...</a></p>
-<code>#include <CL/cl.h></code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="command__queue_8hpp_source.html">viennacl/ocl/command_queue.hpp</a>"</code><br/>
-
-<p><a href="enqueue_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KernelType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084">enqueue</a> (KernelType &k, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> const &queue)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueues a kernel in the provided queue.  <a href="#a46527eb5023de820b1f1c16ec5a11084"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KernelType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#ab0e19e66c4f09964ef88fcfdf1a5afc3">enqueue</a> (KernelType &k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function that enqueues the provided kernel into the first queue of the currently active device in the currently active context.  <a href="#ab0e19e66c4f09964ef88fcfdf1a5afc3"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Enqueues kernels into command queues. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/enqueue_8hpp_source.html b/doc/doxygen/html/enqueue_8hpp_source.html
deleted file mode 100644
index 58895fe..0000000
--- a/doc/doxygen/html/enqueue_8hpp_source.html
+++ /dev/null
@@ -1,170 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/enqueue.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/enqueue.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="enqueue_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_ENQUEUE_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_ENQUEUE_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#else</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="command__queue_8hpp.html" title="Implementations of command queue representations.">viennacl/ocl/command_queue.hpp</a>"</span>
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033   <span class="keyword">namespace </span>ocl
-<a name="l00034"></a>00034   {
-<a name="l00035"></a>00035 
-<a name="l00037"></a>00037     <span class="keyword">template</span> <<span class="keyword">typename</span> KernelType>
-<a name="l00038"></a>00038     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">enqueue</a>(KernelType & k, <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> <span class="keyword">const</span> & queue)
-<a name="l00039"></a>00039     {
-<a name="l00040"></a>00040       <span class="comment">// 1D kernel:</span>
-<a name="l00041"></a>00041       <span class="keywordflow">if</span> (k.local_work_size(1) == 0)
-<a name="l00042"></a>00042       {
-<a name="l00043"></a>00043 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Starting 1D-kernel '"</span> << k.name() << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00045"></a>00045         std::cout << <span class="stringliteral">"ViennaCL: Global work size: '"</span>  << k.global_work_size() << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00046"></a>00046         std::cout << <span class="stringliteral">"ViennaCL: Local work size: '"</span>   << k.local_work_size() << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00047"></a>00047 <span class="preprocessor">        #endif</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span>      
-<a name="l00049"></a>00049         <span class="keywordtype">size_t</span> tmp_global = k.global_work_size();
-<a name="l00050"></a>00050         <span class="keywordtype">size_t</span> tmp_local = k.local_work_size();
-<a name="l00051"></a>00051         
-<a name="l00052"></a>00052         cl_int err;
-<a name="l00053"></a>00053         <span class="keywordflow">if</span> (tmp_global == 1 && tmp_local == 1)
-<a name="l00054"></a>00054           err = clEnqueueTask(queue.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(), k.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>(), 0, NULL, NULL);
-<a name="l00055"></a>00055         <span class="keywordflow">else</span>
-<a name="l00056"></a>00056           err = clEnqueueNDRangeKernel(queue.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(), k.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>(), 1, NULL, &tmp_global, &tmp_local, 0, NULL, NULL);
-<a name="l00057"></a>00057 
-<a name="l00058"></a>00058         <span class="keywordflow">if</span> (err != CL_SUCCESS)  <span class="comment">//if not successful, try to start with smaller work size</span>
-<a name="l00059"></a>00059         {
-<a name="l00060"></a>00060           <span class="comment">//std::cout << "FAIL: " << std::endl; exit(0);</span>
-<a name="l00061"></a>00061           <span class="keywordflow">while</span> (err != CL_SUCCESS && tmp_local > 1)
-<a name="l00062"></a>00062           {
-<a name="l00063"></a>00063             <span class="comment">//std::cout << "Flushing queue, then enqueuing again with half the size..." << std::endl;</span>
-<a name="l00064"></a>00064             <span class="comment">//std::cout << "Error code: " << err << std::endl;</span>
-<a name="l00065"></a>00065             
-<a name="l00066"></a>00066             tmp_global /= 2;
-<a name="l00067"></a>00067             tmp_local /= 2;
-<a name="l00068"></a>00068 
-<a name="l00069"></a>00069 <span class="preprocessor">            #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00070"></a>00070 <span class="preprocessor"></span>            std::cout << <span class="stringliteral">"ViennaCL: Kernel start failed for '"</span> << k.name() << <span class="stringliteral">"'."</span> << std::endl;
-<a name="l00071"></a>00071             std::cout << <span class="stringliteral">"ViennaCL: Global work size: '"</span>  << tmp_global << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00072"></a>00072             std::cout << <span class="stringliteral">"ViennaCL: Local work size: '"</span>   << tmp_local << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00073"></a>00073 <span class="preprocessor">            #endif</span>
-<a name="l00074"></a>00074 <span class="preprocessor"></span>            
-<a name="l00075"></a>00075             queue.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00076"></a>00076             err = clEnqueueNDRangeKernel(queue.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(), k.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>(), 1, NULL, &tmp_global, &tmp_local, 0, NULL, NULL);
-<a name="l00077"></a>00077           }
-<a name="l00078"></a>00078           
-<a name="l00079"></a>00079           <span class="keywordflow">if</span> (err != CL_SUCCESS)
-<a name="l00080"></a>00080           {
-<a name="l00081"></a>00081             <span class="comment">//could not start kernel with any parameters</span>
-<a name="l00082"></a>00082             std::cerr << <span class="stringliteral">"ViennaCL: FATAL ERROR: Kernel start failed for '"</span> << k.name() << <span class="stringliteral">"'."</span> << std::endl;
-<a name="l00083"></a>00083             std::cerr << <span class="stringliteral">"ViennaCL: Smaller work sizes could not solve the problem. "</span> << std::endl;
-<a name="l00084"></a>00084             <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00085"></a>00085           }
-<a name="l00086"></a>00086           <span class="keywordflow">else</span>
-<a name="l00087"></a>00087           {
-<a name="l00088"></a>00088             <span class="comment">//remember parameters:</span>
-<a name="l00089"></a>00089             k.local_work_size(0, tmp_local);
-<a name="l00090"></a>00090             k.global_work_size(0, tmp_global);
-<a name="l00091"></a>00091 <span class="preprocessor">            #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00092"></a>00092 <span class="preprocessor"></span>            std::cout << <span class="stringliteral">"ViennaCL: Kernel '"</span> << k.name() << <span class="stringliteral">"' now uses global work size "</span> << tmp_global << <span class="stringliteral">" and local work size "</span> << tmp_local << <span class="stringliteral">"."</span>  << std::endl;
-<a name="l00093"></a>00093 <span class="preprocessor">            #endif</span>
-<a name="l00094"></a>00094 <span class="preprocessor"></span>          }          
-<a name="l00095"></a>00095         }
-<a name="l00096"></a>00096       }
-<a name="l00097"></a>00097       <span class="keywordflow">else</span> <span class="comment">//2D kernel</span>
-<a name="l00098"></a>00098       {
-<a name="l00099"></a>00099 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00100"></a>00100 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Starting 2D-kernel '"</span> << k.name() << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00101"></a>00101         std::cout << <span class="stringliteral">"ViennaCL: Global work size: '"</span>  << k.global_work_size(0) << <span class="stringliteral">", "</span> << k.global_work_size(1) << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00102"></a>00102         std::cout << <span class="stringliteral">"ViennaCL: Local work size: '"</span>   << k.local_work_size(0) << <span class="stringliteral">", "</span> << k.local_work_size(1) << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00103"></a>00103 <span class="preprocessor">        #endif</span>
-<a name="l00104"></a>00104 <span class="preprocessor"></span>
-<a name="l00105"></a>00105         <span class="keywordtype">size_t</span> tmp_global[2]; 
-<a name="l00106"></a>00106         tmp_global[0] = k.global_work_size(0);
-<a name="l00107"></a>00107         tmp_global[1] = k.global_work_size(1);
-<a name="l00108"></a>00108         
-<a name="l00109"></a>00109         <span class="keywordtype">size_t</span> tmp_local[2];
-<a name="l00110"></a>00110         tmp_local[0] = k.local_work_size(0);
-<a name="l00111"></a>00111         tmp_local[1] = k.local_work_size(1);
-<a name="l00112"></a>00112         
-<a name="l00113"></a>00113         cl_int err = clEnqueueNDRangeKernel(queue.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(), k.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>(), 2, NULL, tmp_global, tmp_local, 0, NULL, NULL);
-<a name="l00114"></a>00114 
-<a name="l00115"></a>00115         <span class="keywordflow">if</span> (err != CL_SUCCESS)
-<a name="l00116"></a>00116         {
-<a name="l00117"></a>00117           <span class="comment">//could not start kernel with any parameters</span>
-<a name="l00118"></a>00118           std::cerr << <span class="stringliteral">"ViennaCL: FATAL ERROR: Kernel start failed for '"</span> << k.name() << <span class="stringliteral">"'."</span> << std::endl;
-<a name="l00119"></a>00119           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00120"></a>00120         }
-<a name="l00121"></a>00121         
-<a name="l00122"></a>00122       }
-<a name="l00123"></a>00123             
-<a name="l00124"></a>00124 <span class="preprocessor">      #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00125"></a>00125 <span class="preprocessor"></span>      queue.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00126"></a>00126       std::cout << <span class="stringliteral">"ViennaCL: Kernel "</span> << k.name() << <span class="stringliteral">" finished!"</span> << std::endl;
-<a name="l00127"></a>00127 <span class="preprocessor">      #endif</span>
-<a name="l00128"></a>00128 <span class="preprocessor"></span>    } <span class="comment">//enqueue()</span>
-<a name="l00129"></a>00129     
-<a name="l00130"></a>00130     
-<a name="l00132"></a>00132     <span class="keyword">template</span> <<span class="keyword">typename</span> KernelType>
-<a name="l00133"></a><a class="code" href="namespaceviennacl_1_1ocl.html#ab0e19e66c4f09964ef88fcfdf1a5afc3">00133</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">enqueue</a>(KernelType & k)
-<a name="l00134"></a>00134     {
-<a name="l00135"></a>00135       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">enqueue</a>(k, <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">get_queue</a>());
-<a name="l00136"></a>00136     }
-<a name="l00137"></a>00137   } <span class="comment">// namespace ocl</span>
-<a name="l00138"></a>00138 } <span class="comment">// namespace viennacl</span>
-<a name="l00139"></a>00139 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/entry__proxy_8hpp.html b/doc/doxygen/html/entry__proxy_8hpp.html
deleted file mode 100644
index 599e303..0000000
--- a/doc/doxygen/html/entry__proxy_8hpp.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/entry_proxy.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/entry_proxy.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>A proxy class for entries in a vector.  
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-
-<p><a href="entry__proxy_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy< SCALARTYPE ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-users of the library.  <a href="classviennacl_1_1entry__proxy.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A proxy class for entries in a vector. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/entry__proxy_8hpp_source.html b/doc/doxygen/html/entry__proxy_8hpp_source.html
deleted file mode 100644
index 5b33d4e..0000000
--- a/doc/doxygen/html/entry__proxy_8hpp_source.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/entry_proxy.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/entry_proxy.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="entry__proxy_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00019"></a>00019 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_ENTRY_PROXY_HPP_</span>
-<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_ENTRY_PROXY_HPP_</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028     <span class="comment">//proxy class for single vector entries (this is a slow operation!!)</span>
-<a name="l00036"></a>00036 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE>
-<a name="l00037"></a><a class="code" href="classviennacl_1_1entry__proxy.html">00037</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a>
-<a name="l00038"></a>00038     {
-<a name="l00039"></a>00039       <span class="keyword">public</span>:
-<a name="l00045"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a969b706bdf3d3ab2ae15cb24085b0b81">00045</a>         <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1entry__proxy.html#a969b706bdf3d3ab2ae15cb24085b0b81" title="The constructor for the proxy class. Declared explicit to avoid any surprises created by the compiler...">entry_proxy</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mem_offset, 
-<a name="l00046"></a>00046                              <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <span class="keyword">const</span> & mem_handle) 
-<a name="l00047"></a>00047          : _index(mem_offset), _mem_handle(mem_handle) {};
-<a name="l00048"></a>00048         
-<a name="l00049"></a>00049          
-<a name="l00050"></a>00050         <span class="comment">//operators:</span>
-<a name="l00053"></a><a class="code" href="classviennacl_1_1entry__proxy.html#ae111ad2b2148ff97982f897adb9f03a1">00053</a> <span class="comment"></span>        <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> & <a class="code" href="classviennacl_1_1entry__proxy.html#ae111ad2b2148ff97982f897adb9f03a1" title="Inplace addition of a CPU floating point value.">operator+=</a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00054"></a>00054         {
-<a name="l00055"></a>00055           SCALARTYPE temp = read();
-<a name="l00056"></a>00056           temp += value; 
-<a name="l00057"></a>00057           write(temp);         
-<a name="l00058"></a>00058           <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00059"></a>00059         }
-<a name="l00060"></a>00060 
-<a name="l00063"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a2255068fb4a338c350ceb6c5a933097b">00063</a>         <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> &  <a class="code" href="classviennacl_1_1entry__proxy.html#a2255068fb4a338c350ceb6c5a933097b" title="Inplace subtraction of a CPU floating point value.">operator-=</a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00064"></a>00064         {
-<a name="l00065"></a>00065           SCALARTYPE temp = read();
-<a name="l00066"></a>00066           temp -= value; 
-<a name="l00067"></a>00067           write(temp);         
-<a name="l00068"></a>00068           <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00069"></a>00069         }
-<a name="l00070"></a>00070 
-<a name="l00073"></a><a class="code" href="classviennacl_1_1entry__proxy.html#ac1c79eb6f521714145802e095d2063a5">00073</a>         <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> &  <a class="code" href="classviennacl_1_1entry__proxy.html#ac1c79eb6f521714145802e095d2063a5" title="Inplace multiplication with a CPU floating point value.">operator*=</a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00074"></a>00074         {
-<a name="l00075"></a>00075           SCALARTYPE temp = read();
-<a name="l00076"></a>00076           temp *= value; 
-<a name="l00077"></a>00077           write(temp);         
-<a name="l00078"></a>00078           <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00079"></a>00079         }
-<a name="l00080"></a>00080 
-<a name="l00083"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a0eb65cfaa5a879f33d9c389ad9595b0c">00083</a>         <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> &  <a class="code" href="classviennacl_1_1entry__proxy.html#a0eb65cfaa5a879f33d9c389ad9595b0c" title="Inplace division by a CPU floating point value.">operator/=</a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00084"></a>00084         {
-<a name="l00085"></a>00085           SCALARTYPE temp = read();
-<a name="l00086"></a>00086           temp /= value; 
-<a name="l00087"></a>00087           write(temp);         
-<a name="l00088"></a>00088           <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00089"></a>00089         }
-<a name="l00090"></a>00090 
-<a name="l00093"></a><a class="code" href="classviennacl_1_1entry__proxy.html#aac69195b98b89d2dbb4cb339e3d00852">00093</a>         <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> &  <a class="code" href="classviennacl_1_1entry__proxy.html#aac69195b98b89d2dbb4cb339e3d00852" title="Assignment of a CPU floating point value.">operator=</a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00094"></a>00094         {
-<a name="l00095"></a>00095           write(value);
-<a name="l00096"></a>00096           <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00097"></a>00097         }
-<a name="l00098"></a>00098 
-<a name="l00101"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a6d7884311926bdd52601f636e82d3562">00101</a>         <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> & <a class="code" href="classviennacl_1_1entry__proxy.html#aac69195b98b89d2dbb4cb339e3d00852" title="Assignment of a CPU floating point value.">operator=</a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00102"></a>00102         {
-<a name="l00103"></a>00103           cl_int err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d" title="Returns the memory viennacl::ocl::handle.">handle</a>(), value.<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), _mem_handle, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*_index, <span class="keyword">sizeof</span>(SCALARTYPE), 0, NULL, NULL);
-<a name="l00104"></a>00104           <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00105"></a>00105           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00106"></a>00106           <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00107"></a>00107         }
-<a name="l00108"></a>00108 
-<a name="l00111"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a1fe82cd71bef5d14642c9ab3d205fd94">00111</a>         <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> &  <a class="code" href="classviennacl_1_1entry__proxy.html#aac69195b98b89d2dbb4cb339e3d00852" title="Assignment of a CPU floating point value.">operator=</a>(<a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> <span class="keyword">const</span> & other)
-<a name="l00112"></a>00112         {
-<a name="l00113"></a>00113           cl_int err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d" title="Returns the memory viennacl::ocl::handle.">handle</a>(),
-<a name="l00114"></a>00114                                            other._mem_handle, <span class="comment">//src</span>
-<a name="l00115"></a>00115                                            _mem_handle,       <span class="comment">//dest</span>
-<a name="l00116"></a>00116                                            <span class="keyword">sizeof</span>(SCALARTYPE) * other._index, <span class="comment">//offset src</span>
-<a name="l00117"></a>00117                                            <span class="keyword">sizeof</span>(SCALARTYPE) * _index,       <span class="comment">//offset dest</span>
-<a name="l00118"></a>00118                                            <span class="keyword">sizeof</span>(SCALARTYPE), 0, NULL, NULL);
-<a name="l00119"></a>00119           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00120"></a>00120           <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00121"></a>00121         }
-<a name="l00122"></a>00122 
-<a name="l00123"></a>00123         <span class="comment">//type conversion:</span>
-<a name="l00124"></a>00124         <span class="comment">// allows to write something like:</span>
-<a name="l00125"></a>00125         <span class="comment">//  double test = vector(4);</span>
-<a name="l00132"></a><a class="code" href="classviennacl_1_1entry__proxy.html#accf19b79da67d458fb38880c7a055f8d">00132</a> <span class="comment"></span>        <a class="code" href="classviennacl_1_1entry__proxy.html#accf19b79da67d458fb38880c7a055f8d" title="Conversion to a CPU floating point value.">operator SCALARTYPE </a>()<span class="keyword"> const</span>
-<a name="l00133"></a>00133 <span class="keyword">        </span>{
-<a name="l00134"></a>00134           SCALARTYPE temp = read();
-<a name="l00135"></a>00135           <span class="keywordflow">return</span> temp;
-<a name="l00136"></a>00136         }
-<a name="l00137"></a>00137         
-<a name="l00140"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a5a79972f223067007dcfd4350cbad30f">00140</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1entry__proxy.html#a5a79972f223067007dcfd4350cbad30f" title="Returns the index of the represented element.">index</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _index; }
-<a name="l00141"></a>00141         
-<a name="l00144"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d">00144</a>         <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d" title="Returns the memory viennacl::ocl::handle.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _mem_handle; }
-<a name="l00145"></a>00145 
-<a name="l00146"></a>00146       <span class="keyword">private</span>:
-<a name="l00149"></a>00149         SCALARTYPE read()<span class="keyword"> const</span>
-<a name="l00150"></a>00150 <span class="keyword">        </span>{
-<a name="l00151"></a>00151           SCALARTYPE temp;
-<a name="l00152"></a>00152           cl_int err;
-<a name="l00153"></a>00153           err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d" title="Returns the memory viennacl::ocl::handle.">handle</a>(), _mem_handle, CL_TRUE, <span class="keyword">sizeof</span>(SCALARTYPE)*_index, <span class="keyword">sizeof</span>(SCALARTYPE), &temp, 0, NULL, NULL);
-<a name="l00154"></a>00154           <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00155"></a>00155           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00156"></a>00156           <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00157"></a>00157           <span class="keywordflow">return</span> temp;
-<a name="l00158"></a>00158         }
-<a name="l00159"></a>00159         
-<a name="l00162"></a>00162         <span class="keywordtype">void</span> write(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00163"></a>00163         {
-<a name="l00164"></a>00164           cl_int err;
-<a name="l00165"></a>00165           err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d" title="Returns the memory viennacl::ocl::handle.">handle</a>(), _mem_handle, CL_TRUE, <span class="keyword">sizeof</span>(SCALARTYPE)*_index, <span class="keyword">sizeof</span>(SCALARTYPE), &value, 0, NULL, NULL);
-<a name="l00166"></a>00166           <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00167"></a>00167           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00168"></a>00168         }
-<a name="l00169"></a>00169         
-<a name="l00170"></a>00170         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _index;
-<a name="l00171"></a>00171         <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <span class="keyword">const</span> & _mem_handle;
-<a name="l00172"></a>00172     }; <span class="comment">//entry_proxy</span>
-<a name="l00173"></a>00173     
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175 
-<a name="l00176"></a>00176 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/error_8hpp.html b/doc/doxygen/html/error_8hpp.html
deleted file mode 100644
index 1daa32b..0000000
--- a/doc/doxygen/html/error_8hpp.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/error.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#define-members">Defines</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/error.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Error handling for the OpenCL layer of ViennaCL.  
-<a href="#_details">More...</a></p>
-<code>#include <CL/cl.h></code><br/>
-<code>#include <string></code><br/>
-<code>#include <iostream></code><br/>
-<code>#include <exception></code><br/>
-
-<p><a href="error_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">error_checker< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An error reporting class. Template argument is used to avoid problems with external linkage.  <a href="structviennacl_1_1ocl_1_1error__checker.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-<tr><td colspan="2"><h2><a name="define-members"></a>
-Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="error_8hpp.html#a6d42757cdf0e944ebe5236aa4f96b6aa">VIENNACL_BUG_REPORT_STRING</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err)   <a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">viennacl::ocl::error_checker</a><void>::checkError(err, __FILE__, __FUNCTION__, __LINE__);</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Error handling for the OpenCL layer of ViennaCL. </p>
-<hr/><h2>Define Documentation</h2>
-<a class="anchor" id="a6d42757cdf0e944ebe5236aa4f96b6aa"></a><!-- doxytag: member="error.hpp::VIENNACL_BUG_REPORT_STRING" ref="a6d42757cdf0e944ebe5236aa4f96b6aa" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define VIENNACL_BUG_REPORT_STRING</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<b>Value:</b><div class="fragment"><pre class="fragment"><span class="stringliteral">"\nIf you think that this is a bug in ViennaCL, please report it at viennacl-support at lists.sourceforge.net and supply at least the following information:\n"</span>\
-               <span class="stringliteral">" * Operating System\n"</span>\
-               <span class="stringliteral">" * Which OpenCL implementation (AMD, NVIDIA, etc.)\n"</span>\
-               <span class="stringliteral">" * ViennaCL version\n"</span>\
-               <span class="stringliteral">"Many thanks in advance!"</span>;\
-</pre></div>
-</div>
-</div>
-<a class="anchor" id="a44f070f54255e72eb40c75ebd72ea602"></a><!-- doxytag: member="error.hpp::VIENNACL_ERR_CHECK" ref="a44f070f54255e72eb40c75ebd72ea602" args="(err)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define VIENNACL_ERR_CHECK</td>
-          <td>(</td>
-          <td class="paramtype"> </td>
-          <td class="paramname">err</td>
-          <td> ) </td>
-          <td>   <a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">viennacl::ocl::error_checker</a><void>::checkError(err, __FILE__, __FUNCTION__, __LINE__);</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/error_8hpp_source.html b/doc/doxygen/html/error_8hpp_source.html
deleted file mode 100644
index 4e1b253..0000000
--- a/doc/doxygen/html/error_8hpp_source.html
+++ /dev/null
@@ -1,620 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/error.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/error.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="error_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_ERROR_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_ERROR_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="comment">//error levels:</span>
-<a name="l00023"></a>00023 <span class="comment">//#define VIENNACL_DEBUG_ALL           //print all of the following</span>
-<a name="l00024"></a>00024 <span class="comment">//#define VIENNACL_DEBUG_KERNEL        //debug any modifications on viennacl::ocl::kernel objects</span>
-<a name="l00025"></a>00025 <span class="comment">//#define VIENNACL_DEBUG_COPY          //print infos related to setting up/modifying memory objects</span>
-<a name="l00026"></a>00026 <span class="comment">//#define VIENNACL_DEBUG_OPENCL        //display debug info for the OpenCL layer (platform/context/queue creation,</span>
-<a name="l00027"></a>00027 <span class="comment">//#define VIENNACL_DEBUG_DEVICE        //Show device info upon allocation</span>
-<a name="l00028"></a>00028 <span class="comment">//#define VIENNACL_DEBUG_CONTEXT       //Debug queries to context</span>
-<a name="l00029"></a>00029 <span class="comment">//#define VIENNACL_DEBUG_BUILD         //Show debug info from OpenCL compiler</span>
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032 <span class="comment">//backwards compatibility:</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">  #define VIENNACL_DEBUG_ALL</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00036"></a>00036 <span class="preprocessor"></span>
-<a name="l00037"></a>00037 
-<a name="l00038"></a>00038 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00040"></a>00040 <span class="preprocessor">#else</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00042"></a>00042 <span class="preprocessor">#endif</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span>
-<a name="l00044"></a>00044 <span class="preprocessor">#include <string></span>
-<a name="l00045"></a>00045 <span class="preprocessor">#include <iostream></span>
-<a name="l00046"></a>00046 <span class="preprocessor">#include <exception></span>
-<a name="l00047"></a>00047 
-<a name="l00048"></a><a class="code" href="error_8hpp.html#a6d42757cdf0e944ebe5236aa4f96b6aa">00048</a> <span class="preprocessor">#define VIENNACL_BUG_REPORT_STRING  \</span>
-<a name="l00049"></a>00049 <span class="preprocessor">               "\nIf you think that this is a bug in ViennaCL, please report it at viennacl-support at lists.sourceforge.net and supply at least the following information:\n"\</span>
-<a name="l00050"></a>00050 <span class="preprocessor">               " * Operating System\n"\</span>
-<a name="l00051"></a>00051 <span class="preprocessor">               " * Which OpenCL implementation (AMD, NVIDIA, etc.)\n"\</span>
-<a name="l00052"></a>00052 <span class="preprocessor">               " * ViennaCL version\n"\</span>
-<a name="l00053"></a>00053 <span class="preprocessor">               "Many thanks in advance!";\</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span>
-<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="keyword">namespace </span>viennacl
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057   <span class="keyword">namespace </span>ocl
-<a name="l00058"></a>00058   {
-<a name="l00059"></a>00059     <span class="comment">//Wrapper for OpenCL exceptions:</span>
-<a name="l00060"></a><a class="code" href="classviennacl_1_1ocl_1_1device__not__found.html">00060</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a> : <span class="keyword">public</span> std::exception
-<a name="l00061"></a>00061     {
-<a name="l00062"></a>00062       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00063"></a>00063       {
-<a name="l00064"></a>00064         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_DEVICE_NOT_FOUND \n ViennaCL could not find a suitable device. Please check whether an OpenCL implementation is properly installed and a suitable device available."</span>
-<a name="l00065"></a>00065                VIENNACL_BUG_REPORT_STRING;
-<a name="l00066"></a>00066       }
-<a name="l00067"></a>00067     };
-<a name="l00068"></a>00068     
-<a name="l00069"></a><a class="code" href="classviennacl_1_1ocl_1_1device__not__available.html">00069</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a> : <span class="keyword">public</span> std::exception
-<a name="l00070"></a>00070     {
-<a name="l00071"></a>00071       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00072"></a>00072       {
-<a name="l00073"></a>00073         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_DEVICE_NOT_AVAILABLE \n ViennaCL could not use the compute device because it is not available."</span>
-<a name="l00074"></a>00074                VIENNACL_BUG_REPORT_STRING;
-<a name="l00075"></a>00075       }
-<a name="l00076"></a>00076     };
-<a name="l00077"></a>00077 
-<a name="l00078"></a><a class="code" href="classviennacl_1_1ocl_1_1compiler__not__available.html">00078</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a> : <span class="keyword">public</span> std::exception
-<a name="l00079"></a>00079     {
-<a name="l00080"></a>00080       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00081"></a>00081       {
-<a name="l00082"></a>00082         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_COMPILER_NOT_AVAILABLE \n Your OpenCL framework does not provide an OpenCL compiler. Unfortunately, ViennaCL cannot be used without such a compiler."</span>
-<a name="l00083"></a>00083                VIENNACL_BUG_REPORT_STRING;
-<a name="l00084"></a>00084       }
-<a name="l00085"></a>00085     };
-<a name="l00086"></a>00086     
-<a name="l00087"></a><a class="code" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">00087</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a> : <span class="keyword">public</span> std::exception
-<a name="l00088"></a>00088     {
-<a name="l00089"></a>00089       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00090"></a>00090       {
-<a name="l00091"></a>00091         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_MEM_OBJECT_ALLOCATION_FAILURE \n ViennaCL could not allocate memory on the device. Most likely the device simply ran out of memory."</span>
-<a name="l00092"></a>00092                VIENNACL_BUG_REPORT_STRING;
-<a name="l00093"></a>00093       }
-<a name="l00094"></a>00094     };
-<a name="l00095"></a>00095     
-<a name="l00096"></a><a class="code" href="classviennacl_1_1ocl_1_1out__of__resources.html">00096</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a> : <span class="keyword">public</span> std::exception
-<a name="l00097"></a>00097     {
-<a name="l00098"></a>00098       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00099"></a>00099       {
-<a name="l00100"></a>00100         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_OUT_OF_RESOURCES \n ViennaCL tried to launch a compute kernel, but the device does not provide enough resources. Try changing the global and local work item sizes."</span>
-<a name="l00101"></a>00101                VIENNACL_BUG_REPORT_STRING;
-<a name="l00102"></a>00102       }
-<a name="l00103"></a>00103     };
-<a name="l00104"></a>00104 
-<a name="l00105"></a><a class="code" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">00105</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a> : <span class="keyword">public</span> std::exception
-<a name="l00106"></a>00106     {
-<a name="l00107"></a>00107       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00108"></a>00108       {
-<a name="l00109"></a>00109         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_OUT_OF_HOST_MEMORY \n The host ran out of memory (usually CPU RAM). Please try again on smaller problems."</span>
-<a name="l00110"></a>00110                VIENNACL_BUG_REPORT_STRING;
-<a name="l00111"></a>00111       }
-<a name="l00112"></a>00112     };
-<a name="l00113"></a>00113     
-<a name="l00114"></a><a class="code" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">00114</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a> : <span class="keyword">public</span> std::exception
-<a name="l00115"></a>00115     {
-<a name="l00116"></a>00116       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00117"></a>00117       {
-<a name="l00118"></a>00118         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_PROFILING_INFO_NOT_AVAILABLE."</span>
-<a name="l00119"></a>00119                VIENNACL_BUG_REPORT_STRING;
-<a name="l00120"></a>00120       }
-<a name="l00121"></a>00121     };
-<a name="l00122"></a>00122     
-<a name="l00123"></a><a class="code" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">00123</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a> : <span class="keyword">public</span> std::exception
-<a name="l00124"></a>00124     {
-<a name="l00125"></a>00125       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00126"></a>00126       {
-<a name="l00127"></a>00127         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_MEM_COPY_OVERLAP."</span>
-<a name="l00128"></a>00128                VIENNACL_BUG_REPORT_STRING;
-<a name="l00129"></a>00129       }
-<a name="l00130"></a>00130     };
-<a name="l00131"></a>00131     
-<a name="l00132"></a><a class="code" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">00132</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a> : <span class="keyword">public</span> std::exception
-<a name="l00133"></a>00133     {
-<a name="l00134"></a>00134       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00135"></a>00135       {
-<a name="l00136"></a>00136         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_IMAGE_FORMAT_MISMATCH."</span>
-<a name="l00137"></a>00137                VIENNACL_BUG_REPORT_STRING;
-<a name="l00138"></a>00138       }
-<a name="l00139"></a>00139     };
-<a name="l00140"></a>00140     
-<a name="l00141"></a><a class="code" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">00141</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a> : <span class="keyword">public</span> std::exception
-<a name="l00142"></a>00142     {
-<a name="l00143"></a>00143       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00144"></a>00144       {
-<a name="l00145"></a>00145         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_IMAGE_FORMAT_NOT_SUPPORTED."</span>
-<a name="l00146"></a>00146                VIENNACL_BUG_REPORT_STRING;
-<a name="l00147"></a>00147       }
-<a name="l00148"></a>00148     };
-<a name="l00149"></a>00149 
-<a name="l00150"></a><a class="code" href="classviennacl_1_1ocl_1_1build__program__failure.html">00150</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a> : <span class="keyword">public</span> std::exception
-<a name="l00151"></a>00151     {
-<a name="l00152"></a>00152       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00153"></a>00153       {
-<a name="l00154"></a>00154         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_BUILD_PROGRAM_FAILURE \n The OpenCL compiler encountered an error during the compilation of ViennaCL sources. This is most likely a bug in ViennaCL."</span>
-<a name="l00155"></a>00155                VIENNACL_BUG_REPORT_STRING;
-<a name="l00156"></a>00156       }
-<a name="l00157"></a>00157     };
-<a name="l00158"></a>00158     
-<a name="l00159"></a><a class="code" href="classviennacl_1_1ocl_1_1map__failure.html">00159</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a> : <span class="keyword">public</span> std::exception
-<a name="l00160"></a>00160     {
-<a name="l00161"></a>00161       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00162"></a>00162       {
-<a name="l00163"></a>00163         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_MAP_FAILURE."</span>
-<a name="l00164"></a>00164                VIENNACL_BUG_REPORT_STRING;
-<a name="l00165"></a>00165       }
-<a name="l00166"></a>00166     };
-<a name="l00167"></a>00167     
-<a name="l00168"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__value.html">00168</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a> : <span class="keyword">public</span> std::exception
-<a name="l00169"></a>00169     {
-<a name="l00170"></a>00170       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00171"></a>00171       {
-<a name="l00172"></a>00172         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_VALUE."</span>
-<a name="l00173"></a>00173                VIENNACL_BUG_REPORT_STRING;
-<a name="l00174"></a>00174       }
-<a name="l00175"></a>00175     };
-<a name="l00176"></a>00176     
-<a name="l00177"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__device__type.html">00177</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a> : <span class="keyword">public</span> std::exception
-<a name="l00178"></a>00178     {
-<a name="l00179"></a>00179       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00180"></a>00180       {
-<a name="l00181"></a>00181         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_DEVICE_TYPE."</span>
-<a name="l00182"></a>00182                VIENNACL_BUG_REPORT_STRING;
-<a name="l00183"></a>00183       }
-<a name="l00184"></a>00184     };
-<a name="l00185"></a>00185     
-<a name="l00186"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__platform.html">00186</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a> : <span class="keyword">public</span> std::exception
-<a name="l00187"></a>00187     {
-<a name="l00188"></a>00188       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00189"></a>00189       {
-<a name="l00190"></a>00190         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_PLATFORM."</span>
-<a name="l00191"></a>00191                VIENNACL_BUG_REPORT_STRING;
-<a name="l00192"></a>00192       }
-<a name="l00193"></a>00193     };
-<a name="l00194"></a>00194     
-<a name="l00195"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__device.html">00195</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a> : <span class="keyword">public</span> std::exception
-<a name="l00196"></a>00196     {
-<a name="l00197"></a>00197       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00198"></a>00198       {
-<a name="l00199"></a>00199         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_DEVICE."</span>
-<a name="l00200"></a>00200                VIENNACL_BUG_REPORT_STRING;
-<a name="l00201"></a>00201       }
-<a name="l00202"></a>00202     };
-<a name="l00203"></a>00203     
-<a name="l00204"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__context.html">00204</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a> : <span class="keyword">public</span> std::exception
-<a name="l00205"></a>00205     {
-<a name="l00206"></a>00206       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00207"></a>00207       {
-<a name="l00208"></a>00208         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_CONTEXT."</span>
-<a name="l00209"></a>00209                VIENNACL_BUG_REPORT_STRING;
-<a name="l00210"></a>00210       }
-<a name="l00211"></a>00211     };
-<a name="l00212"></a>00212     
-<a name="l00213"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">00213</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a> : <span class="keyword">public</span> std::exception
-<a name="l00214"></a>00214     {
-<a name="l00215"></a>00215       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00216"></a>00216       {
-<a name="l00217"></a>00217         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_QUEUE_PROPERTIES."</span>
-<a name="l00218"></a>00218                VIENNACL_BUG_REPORT_STRING;
-<a name="l00219"></a>00219       }
-<a name="l00220"></a>00220     };
-<a name="l00221"></a>00221     
-<a name="l00222"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">00222</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a> : <span class="keyword">public</span> std::exception
-<a name="l00223"></a>00223     {
-<a name="l00224"></a>00224       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00225"></a>00225       {
-<a name="l00226"></a>00226         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_COMMAND_QUEUE."</span>
-<a name="l00227"></a>00227                VIENNACL_BUG_REPORT_STRING;
-<a name="l00228"></a>00228       }
-<a name="l00229"></a>00229     };
-<a name="l00230"></a>00230     
-<a name="l00231"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">00231</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a> : <span class="keyword">public</span> std::exception
-<a name="l00232"></a>00232     {
-<a name="l00233"></a>00233       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00234"></a>00234       {
-<a name="l00235"></a>00235         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_HOST_PTR."</span>
-<a name="l00236"></a>00236                VIENNACL_BUG_REPORT_STRING;
-<a name="l00237"></a>00237       }
-<a name="l00238"></a>00238     };
-<a name="l00239"></a>00239     
-<a name="l00240"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">00240</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a> : <span class="keyword">public</span> std::exception
-<a name="l00241"></a>00241     {
-<a name="l00242"></a>00242       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00243"></a>00243       {
-<a name="l00244"></a>00244         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_MEM_OBJECT."</span>
-<a name="l00245"></a>00245                VIENNACL_BUG_REPORT_STRING;
-<a name="l00246"></a>00246       }
-<a name="l00247"></a>00247     };
-<a name="l00248"></a>00248     
-<a name="l00249"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">00249</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a> : <span class="keyword">public</span> std::exception
-<a name="l00250"></a>00250     {
-<a name="l00251"></a>00251       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00252"></a>00252       {
-<a name="l00253"></a>00253         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_IMAGE_FORMAT_DESCRIPTOR."</span>
-<a name="l00254"></a>00254                VIENNACL_BUG_REPORT_STRING;
-<a name="l00255"></a>00255       }
-<a name="l00256"></a>00256     };
-<a name="l00257"></a>00257     
-<a name="l00258"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__image__size.html">00258</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a> : <span class="keyword">public</span> std::exception
-<a name="l00259"></a>00259     {
-<a name="l00260"></a>00260       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00261"></a>00261       {
-<a name="l00262"></a>00262         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_IMAGE_SIZE."</span>
-<a name="l00263"></a>00263                VIENNACL_BUG_REPORT_STRING;
-<a name="l00264"></a>00264       }
-<a name="l00265"></a>00265     };
-<a name="l00266"></a>00266     
-<a name="l00267"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__sampler.html">00267</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a> : <span class="keyword">public</span> std::exception
-<a name="l00268"></a>00268     {
-<a name="l00269"></a>00269       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00270"></a>00270       {
-<a name="l00271"></a>00271         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_SAMPLER."</span>
-<a name="l00272"></a>00272                VIENNACL_BUG_REPORT_STRING;
-<a name="l00273"></a>00273       }
-<a name="l00274"></a>00274     };
-<a name="l00275"></a>00275     
-<a name="l00276"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__binary.html">00276</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a> : <span class="keyword">public</span> std::exception
-<a name="l00277"></a>00277     {
-<a name="l00278"></a>00278       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00279"></a>00279       {
-<a name="l00280"></a>00280         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_BINARY."</span>
-<a name="l00281"></a>00281                VIENNACL_BUG_REPORT_STRING;
-<a name="l00282"></a>00282       }
-<a name="l00283"></a>00283     };
-<a name="l00284"></a>00284     
-<a name="l00285"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__build__options.html">00285</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a> : <span class="keyword">public</span> std::exception
-<a name="l00286"></a>00286     {
-<a name="l00287"></a>00287       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00288"></a>00288       {
-<a name="l00289"></a>00289         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_BUILD_OPTIONS."</span>
-<a name="l00290"></a>00290                VIENNACL_BUG_REPORT_STRING;
-<a name="l00291"></a>00291       }
-<a name="l00292"></a>00292     };
-<a name="l00293"></a>00293     
-<a name="l00294"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__program.html">00294</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a> : <span class="keyword">public</span> std::exception
-<a name="l00295"></a>00295     {
-<a name="l00296"></a>00296       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00297"></a>00297       {
-<a name="l00298"></a>00298         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_PROGRAM."</span>
-<a name="l00299"></a>00299                VIENNACL_BUG_REPORT_STRING;
-<a name="l00300"></a>00300       }
-<a name="l00301"></a>00301     };
-<a name="l00302"></a>00302     
-<a name="l00303"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">00303</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a> : <span class="keyword">public</span> std::exception
-<a name="l00304"></a>00304     {
-<a name="l00305"></a>00305       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00306"></a>00306       {
-<a name="l00307"></a>00307         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_PROGRAM_EXECUTABLE."</span>
-<a name="l00308"></a>00308                VIENNACL_BUG_REPORT_STRING;
-<a name="l00309"></a>00309       }
-<a name="l00310"></a>00310     };
-<a name="l00311"></a>00311     
-<a name="l00312"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">00312</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a> : <span class="keyword">public</span> std::exception
-<a name="l00313"></a>00313     {
-<a name="l00314"></a>00314       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00315"></a>00315       {
-<a name="l00316"></a>00316         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_KERNEL_NAME \n The supplied kernel name is invalid. If you have written your own OpenCL kernel, please check that the correct kernel name is used in the initalization of the kernel object."</span>
-<a name="l00317"></a>00317                VIENNACL_BUG_REPORT_STRING;
-<a name="l00318"></a>00318       }
-<a name="l00319"></a>00319     };
-<a name="l00320"></a>00320 
-<a name="l00321"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">00321</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a> : <span class="keyword">public</span> std::exception
-<a name="l00322"></a>00322     {
-<a name="l00323"></a>00323       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00324"></a>00324       {
-<a name="l00325"></a>00325         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_KERNEL_DEFINITION."</span>
-<a name="l00326"></a>00326                VIENNACL_BUG_REPORT_STRING;
-<a name="l00327"></a>00327       }
-<a name="l00328"></a>00328     };
-<a name="l00329"></a>00329 
-<a name="l00330"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel.html">00330</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a> : <span class="keyword">public</span> std::exception
-<a name="l00331"></a>00331     {
-<a name="l00332"></a>00332       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00333"></a>00333       {
-<a name="l00334"></a>00334         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_KERNEL \n The supplied kernel argument is invalid."</span>
-<a name="l00335"></a>00335                VIENNACL_BUG_REPORT_STRING;
-<a name="l00336"></a>00336       }
-<a name="l00337"></a>00337     };
-<a name="l00338"></a>00338     
-<a name="l00339"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">00339</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a> : <span class="keyword">public</span> std::exception
-<a name="l00340"></a>00340     {
-<a name="l00341"></a>00341       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00342"></a>00342       {
-<a name="l00343"></a>00343         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_ARG_INDEX."</span>
-<a name="l00344"></a>00344                VIENNACL_BUG_REPORT_STRING;
-<a name="l00345"></a>00345       }
-<a name="l00346"></a>00346     };
-<a name="l00347"></a>00347     
-<a name="l00348"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">00348</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a> : <span class="keyword">public</span> std::exception
-<a name="l00349"></a>00349     {
-<a name="l00350"></a>00350       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00351"></a>00351       {
-<a name="l00352"></a>00352         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_ARG_VALUE."</span>
-<a name="l00353"></a>00353                VIENNACL_BUG_REPORT_STRING;
-<a name="l00354"></a>00354       }
-<a name="l00355"></a>00355     };
-<a name="l00356"></a>00356 
-<a name="l00357"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">00357</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a> : <span class="keyword">public</span> std::exception
-<a name="l00358"></a>00358     {
-<a name="l00359"></a>00359       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00360"></a>00360       {
-<a name="l00361"></a>00361         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_ARG_SIZE."</span>
-<a name="l00362"></a>00362                VIENNACL_BUG_REPORT_STRING;
-<a name="l00363"></a>00363       }
-<a name="l00364"></a>00364     };
-<a name="l00365"></a>00365     
-<a name="l00366"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">00366</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a> : <span class="keyword">public</span> std::exception
-<a name="l00367"></a>00367     {
-<a name="l00368"></a>00368       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00369"></a>00369       {
-<a name="l00370"></a>00370         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_KERNEL_ARGS \n The supplied kernel arguments do not fit the kernel parameter list. If you have written your own OpenCL kernel, please check that the correct kernel arguments are set in the appropriate order."</span>
-<a name="l00371"></a>00371                VIENNACL_BUG_REPORT_STRING;
-<a name="l00372"></a>00372       }
-<a name="l00373"></a>00373     };
-<a name="l00374"></a>00374     
-<a name="l00375"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">00375</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a> : <span class="keyword">public</span> std::exception
-<a name="l00376"></a>00376     {
-<a name="l00377"></a>00377       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00378"></a>00378       {
-<a name="l00379"></a>00379         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_WORK_DIMENSION"</span>
-<a name="l00380"></a>00380                VIENNACL_BUG_REPORT_STRING;
-<a name="l00381"></a>00381       }
-<a name="l00382"></a>00382     };
-<a name="l00383"></a>00383     
-<a name="l00384"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">00384</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a> : <span class="keyword">public</span> std::exception
-<a name="l00385"></a>00385     {
-<a name="l00386"></a>00386       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00387"></a>00387       {
-<a name="l00388"></a>00388         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_WORK_GROUP_SIZE \n The supplied work group size is invalid. If you have set this value manually, please reconsider your choice."</span>
-<a name="l00389"></a>00389                VIENNACL_BUG_REPORT_STRING;
-<a name="l00390"></a>00390       }
-<a name="l00391"></a>00391     };
-<a name="l00392"></a>00392 
-<a name="l00393"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">00393</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a> : <span class="keyword">public</span> std::exception
-<a name="l00394"></a>00394     {
-<a name="l00395"></a>00395       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00396"></a>00396       {
-<a name="l00397"></a>00397         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_WORK_ITEM_SIZE \n The work item size is invalid. If you have set this value manually, please reconsider your choice."</span>
-<a name="l00398"></a>00398                VIENNACL_BUG_REPORT_STRING;
-<a name="l00399"></a>00399       }
-<a name="l00400"></a>00400     };
-<a name="l00401"></a>00401     
-<a name="l00402"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">00402</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a> : <span class="keyword">public</span> std::exception
-<a name="l00403"></a>00403     {
-<a name="l00404"></a>00404       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00405"></a>00405       {
-<a name="l00406"></a>00406         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_GLOBAL_OFFSET."</span>
-<a name="l00407"></a>00407                VIENNACL_BUG_REPORT_STRING;
-<a name="l00408"></a>00408       }
-<a name="l00409"></a>00409     };
-<a name="l00410"></a>00410     
-<a name="l00411"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">00411</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a> : <span class="keyword">public</span> std::exception
-<a name="l00412"></a>00412     {
-<a name="l00413"></a>00413       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00414"></a>00414       {
-<a name="l00415"></a>00415         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_EVENT_WAIT_LIST."</span>
-<a name="l00416"></a>00416                VIENNACL_BUG_REPORT_STRING;
-<a name="l00417"></a>00417       }
-<a name="l00418"></a>00418     };
-<a name="l00419"></a>00419     
-<a name="l00420"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__event.html">00420</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a> : <span class="keyword">public</span> std::exception
-<a name="l00421"></a>00421     {
-<a name="l00422"></a>00422       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00423"></a>00423       {
-<a name="l00424"></a>00424         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_EVENT."</span>
-<a name="l00425"></a>00425                VIENNACL_BUG_REPORT_STRING;
-<a name="l00426"></a>00426       }
-<a name="l00427"></a>00427     };
-<a name="l00428"></a>00428     
-<a name="l00429"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__operation.html">00429</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a> : <span class="keyword">public</span> std::exception
-<a name="l00430"></a>00430     {
-<a name="l00431"></a>00431       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00432"></a>00432       {
-<a name="l00433"></a>00433         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_OPERATION."</span>
-<a name="l00434"></a>00434                VIENNACL_BUG_REPORT_STRING;
-<a name="l00435"></a>00435       }
-<a name="l00436"></a>00436     };
-<a name="l00437"></a>00437     
-<a name="l00438"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">00438</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a> : <span class="keyword">public</span> std::exception
-<a name="l00439"></a>00439     {
-<a name="l00440"></a>00440       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00441"></a>00441       {
-<a name="l00442"></a>00442         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_GL_OBJECT."</span>
-<a name="l00443"></a>00443                VIENNACL_BUG_REPORT_STRING;
-<a name="l00444"></a>00444       }
-<a name="l00445"></a>00445     };
-<a name="l00446"></a>00446     
-<a name="l00447"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">00447</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a> : <span class="keyword">public</span> std::exception
-<a name="l00448"></a>00448     {
-<a name="l00449"></a>00449       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00450"></a>00450       {
-<a name="l00451"></a>00451         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_BUFFER_SIZE."</span>
-<a name="l00452"></a>00452                VIENNACL_BUG_REPORT_STRING;
-<a name="l00453"></a>00453       }
-<a name="l00454"></a>00454     };
-<a name="l00455"></a>00455     
-<a name="l00456"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">00456</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a> : <span class="keyword">public</span> std::exception
-<a name="l00457"></a>00457     {
-<a name="l00458"></a>00458       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00459"></a>00459       {
-<a name="l00460"></a>00460         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_MIP_LEVEL."</span>
-<a name="l00461"></a>00461                VIENNACL_BUG_REPORT_STRING;
-<a name="l00462"></a>00462       }
-<a name="l00463"></a>00463     };
-<a name="l00464"></a>00464     
-<a name="l00465"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">00465</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a> : <span class="keyword">public</span> std::exception
-<a name="l00466"></a>00466     {
-<a name="l00467"></a>00467       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00468"></a>00468       {
-<a name="l00469"></a>00469         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_GLOBAL_WORK_SIZE."</span>
-<a name="l00470"></a>00470                VIENNACL_BUG_REPORT_STRING;
-<a name="l00471"></a>00471       }
-<a name="l00472"></a>00472     };
-<a name="l00473"></a>00473 
-<a name="l00474"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__property.html">00474</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a> : <span class="keyword">public</span> std::exception
-<a name="l00475"></a>00475     {
-<a name="l00476"></a>00476       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00477"></a>00477       {
-<a name="l00478"></a>00478         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_PROPERTY."</span>
-<a name="l00479"></a>00479                VIENNACL_BUG_REPORT_STRING;
-<a name="l00480"></a>00480       }
-<a name="l00481"></a>00481     };
-<a name="l00482"></a>00482 
-<a name="l00483"></a><a class="code" href="classviennacl_1_1ocl_1_1unknown__error.html">00483</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a> : <span class="keyword">public</span> std::exception
-<a name="l00484"></a>00484     {
-<a name="l00485"></a>00485       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00486"></a>00486       {
-<a name="l00487"></a>00487         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: ViennaCL encountered an unknown OpenCL error. In some cases, this might be due to an invalid global work size, but it can also be due to several compilation errors."</span>
-<a name="l00488"></a>00488                VIENNACL_BUG_REPORT_STRING;
-<a name="l00489"></a>00489       }
-<a name="l00490"></a>00490     };
-<a name="l00491"></a>00491 
-<a name="l00492"></a>00492     
-<a name="l00493"></a><a class="code" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">00493</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> : <span class="keyword">public</span> std::exception
-<a name="l00494"></a>00494     {
-<a name="l00495"></a>00495       <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00496"></a>00496       {
-<a name="l00497"></a>00497         <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: You requested to create a ViennaCL type using double precision. However, double precision is not supported by your device."</span>
-<a name="l00498"></a>00498                VIENNACL_BUG_REPORT_STRING;
-<a name="l00499"></a>00499       }
-<a name="l00500"></a>00500     };
-<a name="l00501"></a>00501     
-<a name="l00502"></a>00502     
-<a name="l00508"></a>00508     <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00509"></a><a class="code" href="structviennacl_1_1ocl_1_1error__checker.html">00509</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1error__checker.html" title="An error reporting class. Template argument is used to avoid problems with external linkage...">error_checker</a>
-<a name="l00510"></a>00510     {
-<a name="l00511"></a>00511       
-<a name="l00513"></a><a class="code" href="structviennacl_1_1ocl_1_1error__checker.html#a66cd47430f5f54a019185f6d21bcb334">00513</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1ocl_1_1error__checker.html#a66cd47430f5f54a019185f6d21bcb334" title="Trows exceptions that reflect OpenCL error codes.">raise_exception</a>(cl_int err)
-<a name="l00514"></a>00514       {
-<a name="l00515"></a>00515         <span class="keywordflow">switch</span> (err)
-<a name="l00516"></a>00516         {
-<a name="l00517"></a>00517           <span class="keywordflow">case</span> CL_DEVICE_NOT_FOUND:               <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a>(); <span class="keywordflow">break</span>;
-<a name="l00518"></a>00518           <span class="keywordflow">case</span> CL_DEVICE_NOT_AVAILABLE:           <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a>(); <span class="keywordflow">break</span>;
-<a name="l00519"></a>00519           <span class="keywordflow">case</span> CL_COMPILER_NOT_AVAILABLE:         <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a>(); <span class="keywordflow">break</span>;
-<a name="l00520"></a>00520           <span class="keywordflow">case</span> CL_MEM_OBJECT_ALLOCATION_FAILURE:  <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a>(); <span class="keywordflow">break</span>;
-<a name="l00521"></a>00521           <span class="keywordflow">case</span> CL_OUT_OF_RESOURCES:               <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a>(); <span class="keywordflow">break</span>;
-<a name="l00522"></a>00522           <span class="keywordflow">case</span> CL_OUT_OF_HOST_MEMORY:             <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a>(); <span class="keywordflow">break</span>;
-<a name="l00523"></a>00523           <span class="keywordflow">case</span> CL_PROFILING_INFO_NOT_AVAILABLE:   <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a>(); <span class="keywordflow">break</span>;
-<a name="l00524"></a>00524           <span class="keywordflow">case</span> CL_MEM_COPY_OVERLAP:               <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a>(); <span class="keywordflow">break</span>;
-<a name="l00525"></a>00525           <span class="keywordflow">case</span> CL_IMAGE_FORMAT_MISMATCH:          <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a>(); <span class="keywordflow">break</span>;
-<a name="l00526"></a>00526           <span class="keywordflow">case</span> CL_IMAGE_FORMAT_NOT_SUPPORTED:     <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a>(); <span class="keywordflow">break</span>;
-<a name="l00527"></a>00527           <span class="keywordflow">case</span> CL_BUILD_PROGRAM_FAILURE:          <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a>(); <span class="keywordflow">break</span>;
-<a name="l00528"></a>00528           <span class="keywordflow">case</span> CL_MAP_FAILURE:                    <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a>(); <span class="keywordflow">break</span>;
-<a name="l00529"></a>00529 
-<a name="l00530"></a>00530           <span class="keywordflow">case</span> CL_INVALID_VALUE:                  <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a>(); <span class="keywordflow">break</span>;
-<a name="l00531"></a>00531           <span class="keywordflow">case</span> CL_INVALID_DEVICE_TYPE:            <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a>(); <span class="keywordflow">break</span>;
-<a name="l00532"></a>00532           <span class="keywordflow">case</span> CL_INVALID_PLATFORM:               <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a>(); <span class="keywordflow">break</span>;
-<a name="l00533"></a>00533           <span class="keywordflow">case</span> CL_INVALID_DEVICE:                 <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a>(); <span class="keywordflow">break</span>;
-<a name="l00534"></a>00534           <span class="keywordflow">case</span> CL_INVALID_CONTEXT:                <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a>(); <span class="keywordflow">break</span>;
-<a name="l00535"></a>00535           <span class="keywordflow">case</span> CL_INVALID_QUEUE_PROPERTIES:       <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a>(); <span class="keywordflow">break</span>;
-<a name="l00536"></a>00536           <span class="keywordflow">case</span> CL_INVALID_COMMAND_QUEUE:          <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a>(); <span class="keywordflow">break</span>;
-<a name="l00537"></a>00537           <span class="keywordflow">case</span> CL_INVALID_HOST_PTR:               <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a>(); <span class="keywordflow">break</span>;
-<a name="l00538"></a>00538           <span class="keywordflow">case</span> CL_INVALID_MEM_OBJECT:             <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a>(); <span class="keywordflow">break</span>;
-<a name="l00539"></a>00539           <span class="keywordflow">case</span> CL_INVALID_IMAGE_FORMAT_DESCRIPTOR: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a>(); <span class="keywordflow">break</span>;
-<a name="l00540"></a>00540           <span class="keywordflow">case</span> CL_INVALID_IMAGE_SIZE:             <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a>(); <span class="keywordflow">break</span>;
-<a name="l00541"></a>00541           <span class="keywordflow">case</span> CL_INVALID_SAMPLER:                <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a>(); <span class="keywordflow">break</span>;
-<a name="l00542"></a>00542           <span class="keywordflow">case</span> CL_INVALID_BINARY:                 <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a>(); <span class="keywordflow">break</span>;
-<a name="l00543"></a>00543           <span class="keywordflow">case</span> CL_INVALID_BUILD_OPTIONS:          <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a>(); <span class="keywordflow">break</span>;
-<a name="l00544"></a>00544           <span class="keywordflow">case</span> CL_INVALID_PROGRAM:                <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a>(); <span class="keywordflow">break</span>;
-<a name="l00545"></a>00545           <span class="keywordflow">case</span> CL_INVALID_PROGRAM_EXECUTABLE:     <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a>(); <span class="keywordflow">break</span>;
-<a name="l00546"></a>00546           <span class="keywordflow">case</span> CL_INVALID_KERNEL_NAME:            <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a>(); <span class="keywordflow">break</span>;
-<a name="l00547"></a>00547           <span class="keywordflow">case</span> CL_INVALID_KERNEL_DEFINITION:      <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a>(); <span class="keywordflow">break</span>;          
-<a name="l00548"></a>00548           <span class="keywordflow">case</span> CL_INVALID_KERNEL:                 <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a>(); <span class="keywordflow">break</span>;
-<a name="l00549"></a>00549           <span class="keywordflow">case</span> CL_INVALID_ARG_INDEX:              <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a>(); <span class="keywordflow">break</span>;
-<a name="l00550"></a>00550           <span class="keywordflow">case</span> CL_INVALID_ARG_VALUE:              <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a>(); <span class="keywordflow">break</span>;
-<a name="l00551"></a>00551           <span class="keywordflow">case</span> CL_INVALID_ARG_SIZE:               <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a>(); <span class="keywordflow">break</span>;
-<a name="l00552"></a>00552           <span class="keywordflow">case</span> CL_INVALID_KERNEL_ARGS:            <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a>(); <span class="keywordflow">break</span>;
-<a name="l00553"></a>00553           <span class="keywordflow">case</span> CL_INVALID_WORK_DIMENSION:         <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a>(); <span class="keywordflow">break</span>;
-<a name="l00554"></a>00554           <span class="keywordflow">case</span> CL_INVALID_WORK_GROUP_SIZE:        <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a>(); <span class="keywordflow">break</span>;
-<a name="l00555"></a>00555           <span class="keywordflow">case</span> CL_INVALID_WORK_ITEM_SIZE:         <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a>(); <span class="keywordflow">break</span>;
-<a name="l00556"></a>00556           <span class="keywordflow">case</span> CL_INVALID_GLOBAL_OFFSET:          <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a>(); <span class="keywordflow">break</span>;
-<a name="l00557"></a>00557           <span class="keywordflow">case</span> CL_INVALID_EVENT_WAIT_LIST:        <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a>(); <span class="keywordflow">break</span>;
-<a name="l00558"></a>00558           <span class="keywordflow">case</span> CL_INVALID_EVENT:                  <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a>(); <span class="keywordflow">break</span>;
-<a name="l00559"></a>00559           <span class="keywordflow">case</span> CL_INVALID_OPERATION:              <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a>(); <span class="keywordflow">break</span>;
-<a name="l00560"></a>00560           <span class="keywordflow">case</span> CL_INVALID_GL_OBJECT:              <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a>(); <span class="keywordflow">break</span>;
-<a name="l00561"></a>00561           <span class="keywordflow">case</span> CL_INVALID_BUFFER_SIZE:            <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a>(); <span class="keywordflow">break</span>;
-<a name="l00562"></a>00562           <span class="keywordflow">case</span> CL_INVALID_MIP_LEVEL:              <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a>(); <span class="keywordflow">break</span>;
-<a name="l00563"></a>00563           <span class="keywordflow">case</span> CL_INVALID_GLOBAL_WORK_SIZE:       <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a>(); <span class="keywordflow">break</span>;
-<a name="l00564"></a>00564 <span class="preprocessor">      #ifdef CL_INVALID_PROPERTY</span>
-<a name="l00565"></a>00565 <span class="preprocessor"></span>          <span class="keywordflow">case</span> CL_INVALID_PROPERTY:               <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a>(); <span class="keywordflow">break</span>;
-<a name="l00566"></a>00566 <span class="preprocessor">      #endif</span>
-<a name="l00567"></a>00567 <span class="preprocessor"></span>          <span class="comment">//  return "CL_INVALID_GLOBAL_WORK_SIZE";</span>
-<a name="l00568"></a>00568             
-<a name="l00569"></a>00569           <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a>();
-<a name="l00570"></a>00570         }
-<a name="l00571"></a>00571 
-<a name="l00572"></a>00572       } <span class="comment">//getErrorString</span>
-<a name="l00573"></a>00573     
-<a name="l00578"></a><a class="code" href="structviennacl_1_1ocl_1_1error__checker.html#af878a7ec14df24a0c55857513cd9555e">00578</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1ocl_1_1error__checker.html#af878a7ec14df24a0c55857513cd9555e" title="Checks whether an OpenCL error has occured.">checkError</a>(cl_int err, <span class="keyword">const</span> std::string & file, <span class="keyword">const</span> std::string & func, <span class="keywordtype">int</span> line)
-<a name="l00579"></a>00579       {
-<a name="l00580"></a>00580         <span class="keywordflow">if</span> (err != CL_SUCCESS)
-<a name="l00581"></a>00581         {
-<a name="l00582"></a>00582 <span class="preprocessor">          #ifdef VIENNACL_DEBUG_ALL</span>
-<a name="l00583"></a>00583 <span class="preprocessor"></span>          std::cerr << <span class="stringliteral">"ViennaCL: Error "</span> << err  << <span class="stringliteral">" in function "</span> << func << <span class="stringliteral">" ( "</span><< file << <span class="stringliteral">":"</span> << line << <span class="stringliteral">" ) "</span> << std::endl;
-<a name="l00584"></a>00584 <span class="preprocessor">          #endif</span>
-<a name="l00585"></a>00585 <span class="preprocessor"></span>          <a class="code" href="structviennacl_1_1ocl_1_1error__checker.html#a66cd47430f5f54a019185f6d21bcb334" title="Trows exceptions that reflect OpenCL error codes.">raise_exception</a>(err);
-<a name="l00586"></a>00586         }
-<a name="l00587"></a>00587       } <span class="comment">//checkError()</span>
-<a name="l00588"></a>00588       
-<a name="l00589"></a>00589     }; <span class="comment">//struct </span>
-<a name="l00590"></a>00590     
-<a name="l00591"></a><a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">00591</a> <span class="preprocessor">    #define VIENNACL_ERR_CHECK(err) viennacl::ocl::error_checker<void>::checkError(err, __FILE__, __FUNCTION__, __LINE__);</span>
-<a name="l00592"></a>00592 <span class="preprocessor"></span>    
-<a name="l00593"></a>00593   } <span class="comment">//namespace ocl</span>
-<a name="l00594"></a>00594 } <span class="comment">//namespace viennacl</span>
-<a name="l00595"></a>00595 
-<a name="l00596"></a>00596 <span class="preprocessor">#endif</span>
-<a name="l00597"></a>00597 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/files.html b/doc/doxygen/html/files.html
deleted file mode 100644
index dba1c74..0000000
--- a/doc/doxygen/html/files.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: File Index</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>File List</h1>  </div>
-</div>
-<div class="contents">
-Here is a list of all files with brief descriptions:<table>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="compressed__matrix_8hpp.html">compressed_matrix.hpp</a> <a href="compressed__matrix_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of the compressed_matrix class </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="coordinate__matrix_8hpp.html">coordinate_matrix.hpp</a> <a href="coordinate__matrix_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of the coordinate_matrix class </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h.html">forwards.h</a> <a href="forwards_8h_source.html">[code]</a></td><td class="indexvalue">This file provides the forward declarations for the main types used within ViennaCL </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp.html">matrix.hpp</a> <a href="matrix_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of the dense matrix class </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="scalar_8hpp.html">scalar.hpp</a> <a href="scalar_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of the ViennaCL scalar class </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="vector_8hpp.html">vector.hpp</a> <a href="vector_8hpp_source.html">[code]</a></td><td class="indexvalue">The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations such as norms and inner products are located in <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">linalg/vector_operations.hpp</a> </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp.html">kernel_parameters.hpp</a> <a href="kernel__parameters_8hpp_source.html">[code]</a></td><td class="indexvalue">This file holds the code necessary for reading kernel parameters from XML files using pugixml </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="matrix__market_8hpp.html">matrix_market.hpp</a> <a href="matrix__market_8hpp_source.html">[code]</a></td><td class="indexvalue">A reader and writer for the matrix market format is implemented here </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="bicgstab_8hpp.html">bicgstab.hpp</a> <a href="bicgstab_8hpp_source.html">[code]</a></td><td class="indexvalue">The stabilized bi-conjugate gradient method is implemented here </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="cg_8hpp.html">cg.hpp</a> <a href="cg_8hpp_source.html">[code]</a></td><td class="indexvalue">The conjugate gradient method is implemented here </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="compressed__matrix__operations_8hpp.html">compressed_matrix_operations.hpp</a> <a href="compressed__matrix__operations_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of operations using compressed_matrix </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="coordinate__matrix__operations_8hpp.html">coordinate_matrix_operations.hpp</a> <a href="coordinate__matrix__operations_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of operations using coordinate_matrix </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="direct__solve_8hpp.html">direct_solve.hpp</a> <a href="direct__solve_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of dense direct solvers are found here </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="gmres_8hpp.html">gmres.hpp</a> <a href="gmres_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of the generalized minimum residual method are in this file </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="ilu_8hpp.html">ilu.hpp</a> <a href="ilu_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of incomplete factorization preconditioners </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="inner__prod_8hpp.html">inner_prod.hpp</a> <a href="inner__prod_8hpp_source.html">[code]</a></td><td class="indexvalue">Generic interface for the computation of inner products. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="jacobi__precond_8hpp.html">jacobi_precond.hpp</a> <a href="jacobi__precond_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of a simple Jacobi preconditioner </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="matrix__operations_8hpp.html">matrix_operations.hpp</a> <a href="matrix__operations_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of dense matrix related operations. also matrix-vector products </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="norm__1_8hpp.html">norm_1.hpp</a> <a href="norm__1_8hpp_source.html">[code]</a></td><td class="indexvalue">Generic interface for the l^1-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="norm__2_8hpp.html">norm_2.hpp</a> <a href="norm__2_8hpp_source.html">[code]</a></td><td class="indexvalue">Generic interface for the l^2-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="norm__inf_8hpp.html">norm_inf.hpp</a> <a href="norm__inf_8hpp_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="prod_8hpp.html">prod.hpp</a> <a href="prod_8hpp_source.html">[code]</a></td><td class="indexvalue">Generic interface for matrix-vector and matrix-matrix products. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a>, <a class="el" href="matrix__operations_8hpp.html" title="Implementations of dense matrix related operations. also matrix-vector products.">viennacl/linalg/matrix_operations.hpp</a>, <a class="el" href="compressed__matrix__operations_8hpp.html" title="Implementations of operations using compressed_matrix.">viennacl/linalg/compressed_matrix_operations.hpp</a> and <a class="el" href="coordinate__matrix__operations_8hpp.html" title="Implementations of operations using coordinate_matrix.">viennacl/linalg/coordinate_matrix_operations.hpp</a> for implementations </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="row__scaling_8hpp.html">row_scaling.hpp</a> <a href="row__scaling_8hpp_source.html">[code]</a></td><td class="indexvalue">A row normalization preconditioner is implemented here </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp.html">tag_of.hpp</a> <a href="tag__of_8hpp_source.html">[code]</a></td><td class="indexvalue">Dispatch facility for distinguishing between ublas, STL and ViennaCL types </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="vector__operations_8hpp.html">vector_operations.hpp</a> <a href="vector__operations_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of vector operations </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h.html">compressed_matrix_kernels.h</a> <a href="compressed__matrix__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__source_8h.html">compressed_matrix_source.h</a> <a href="compressed__matrix__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="coordinate__matrix__kernels_8h.html">coordinate_matrix_kernels.h</a> <a href="coordinate__matrix__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="coordinate__matrix__source_8h.html">coordinate_matrix_source.h</a> <a href="coordinate__matrix__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__col__kernels_8h.html">matrix_col_kernels.h</a> <a href="matrix__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__col__source_8h.html">matrix_col_source.h</a> <a href="matrix__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__col__kernels_8h.html">matrix_prod_col_col_col_kernels.h</a> <a href="matrix__prod__col__col__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__col__source_8h.html">matrix_prod_col_col_col_source.h</a> <a href="matrix__prod__col__col__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__row__kernels_8h.html">matrix_prod_col_col_row_kernels.h</a> <a href="matrix__prod__col__col__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__row__source_8h.html">matrix_prod_col_col_row_source.h</a> <a href="matrix__prod__col__col__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__col__kernels_8h.html">matrix_prod_col_row_col_kernels.h</a> <a href="matrix__prod__col__row__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__col__source_8h.html">matrix_prod_col_row_col_source.h</a> <a href="matrix__prod__col__row__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__row__kernels_8h.html">matrix_prod_col_row_row_kernels.h</a> <a href="matrix__prod__col__row__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__row__source_8h.html">matrix_prod_col_row_row_source.h</a> <a href="matrix__prod__col__row__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__col__kernels_8h.html">matrix_prod_row_col_col_kernels.h</a> <a href="matrix__prod__row__col__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__col__source_8h.html">matrix_prod_row_col_col_source.h</a> <a href="matrix__prod__row__col__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__row__kernels_8h.html">matrix_prod_row_col_row_kernels.h</a> <a href="matrix__prod__row__col__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__row__source_8h.html">matrix_prod_row_col_row_source.h</a> <a href="matrix__prod__row__col__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__col__kernels_8h.html">matrix_prod_row_row_col_kernels.h</a> <a href="matrix__prod__row__row__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__col__source_8h.html">matrix_prod_row_row_col_source.h</a> <a href="matrix__prod__row__row__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__row__kernels_8h.html">matrix_prod_row_row_row_kernels.h</a> <a href="matrix__prod__row__row__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__row__source_8h.html">matrix_prod_row_row_row_source.h</a> <a href="matrix__prod__row__row__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__row__kernels_8h.html">matrix_row_kernels.h</a> <a href="matrix__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__row__source_8h.html">matrix_row_source.h</a> <a href="matrix__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__col__kernels_8h.html">matrix_solve_col_col_kernels.h</a> <a href="matrix__solve__col__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__col__source_8h.html">matrix_solve_col_col_source.h</a> <a href="matrix__solve__col__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__row__kernels_8h.html">matrix_solve_col_row_kernels.h</a> <a href="matrix__solve__col__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__row__source_8h.html">matrix_solve_col_row_source.h</a> <a href="matrix__solve__col__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__col__kernels_8h.html">matrix_solve_row_col_kernels.h</a> <a href="matrix__solve__row__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__col__source_8h.html">matrix_solve_row_col_source.h</a> <a href="matrix__solve__row__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__row__kernels_8h.html">matrix_solve_row_row_kernels.h</a> <a href="matrix__solve__row__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__row__source_8h.html">matrix_solve_row_row_source.h</a> <a href="matrix__solve__row__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="scalar__kernels_8h.html">scalar_kernels.h</a> <a href="scalar__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="scalar__source_8h.html">scalar_source.h</a> <a href="scalar__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h.html">vector_kernels.h</a> <a href="vector__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__source_8h.html">vector_source.h</a> <a href="vector__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="backend_8hpp.html">backend.hpp</a> <a href="backend_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of the OpenCL backend, where all contexts are stored in </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="command__queue_8hpp.html">command_queue.hpp</a> <a href="command__queue_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of command queue representations </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="context_8hpp.html">context.hpp</a> <a href="context_8hpp_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="device_8hpp.html">device.hpp</a> <a href="device_8hpp_source.html">[code]</a></td><td class="indexvalue">Represents an OpenCL device within ViennaCL </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="enqueue_8hpp.html">enqueue.hpp</a> <a href="enqueue_8hpp_source.html">[code]</a></td><td class="indexvalue">Enqueues kernels into command queues </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp.html">error.hpp</a> <a href="error_8hpp_source.html">[code]</a></td><td class="indexvalue">Error handling for the OpenCL layer of ViennaCL </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="ocl_2forwards_8h.html">forwards.h</a> <a href="ocl_2forwards_8h_source.html">[code]</a></td><td class="indexvalue">This file provides the forward declarations for the OpenCL layer of ViennaCL </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp.html">handle.hpp</a> <a href="handle_8hpp_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="kernel_8hpp.html">kernel.hpp</a> <a href="kernel_8hpp_source.html">[code]</a></td><td class="indexvalue">Representation of an OpenCL kernel in ViennaCL </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="local__mem_8hpp.html">local_mem.hpp</a> <a href="local__mem_8hpp_source.html">[code]</a></td><td class="indexvalue">A local (shared) memory object for OpenCL </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="platform_8hpp.html">platform.hpp</a> <a href="platform_8hpp_source.html">[code]</a></td><td class="indexvalue">Implements a OpenCL platform within ViennaCL </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="program_8hpp.html">program.hpp</a> <a href="program_8hpp_source.html">[code]</a></td><td class="indexvalue">Implements an OpenCL program class for ViennaCL </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="utils_8hpp.html">utils.hpp</a> <a href="utils_8hpp_source.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="adapter_8hpp.html">adapter.hpp</a> <a href="adapter_8hpp_source.html">[code]</a></td><td class="indexvalue">Adapter classes for sparse matrices made of the STL type std::vector<std::map<unsigned int, SCALARTYPE> > </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="entry__proxy_8hpp.html">entry_proxy.hpp</a> <a href="entry__proxy_8hpp_source.html">[code]</a></td><td class="indexvalue">A proxy class for entries in a vector </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__kernel__class__deducer_8hpp.html">matrix_kernel_class_deducer.hpp</a> <a href="matrix__kernel__class__deducer_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of a helper meta class for deducing the correct kernels for the supplied matrix </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp.html">matrix_prod_kernel_class_deducer.hpp</a> <a href="matrix__prod__kernel__class__deducer_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of a helper meta class for deducing the correct kernels for matrix-matrix products </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__size__deducer_8hpp.html">matrix_size_deducer.hpp</a> <a href="matrix__size__deducer_8hpp_source.html">[code]</a></td><td class="indexvalue">Helper implementations that deduce the dimensions of the supplied matrix-valued expressions </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__solve__kernel__class__deducer_8hpp.html">matrix_solve_kernel_class_deducer.hpp</a> <a href="matrix__solve__kernel__class__deducer_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of a helper meta class for deducing the correct kernels for the dense matrix solver </td></tr>
-  <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp.html">tools.hpp</a> <a href="tools_8hpp_source.html">[code]</a></td><td class="indexvalue">Various little tools used here and there in ViennaCL </td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/forwards_8h.html b/doc/doxygen/html/forwards_8h.html
deleted file mode 100644
index 71608e8..0000000
--- a/doc/doxygen/html/forwards_8h.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/forwards.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#typedef-members">Typedefs</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/forwards.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>This file provides the forward declarations for the main types used within ViennaCL.  
-<a href="#_details">More...</a></p>
-<code>#include <cstddef></code><br/>
-<code>#include "<a class="el" href="ocl_2forwards_8h_source.html">viennacl/ocl/forwards.h</a>"</code><br/>
-
-<p><a href="forwards_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html">lower_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing a lower triangular matrix.  <a href="structviennacl_1_1linalg_1_1lower__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">upper_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing an upper triangular matrix.  <a href="structviennacl_1_1linalg_1_1upper__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">unit_lower_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing a lower triangular matrix with unit diagonal.  <a href="structviennacl_1_1linalg_1_1unit__lower__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">unit_upper_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing an upper triangular matrix with unit diagonal.  <a href="structviennacl_1_1linalg_1_1unit__upper__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">no_precond</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing the use of no preconditioner.  <a href="classviennacl_1_1linalg_1_1no__precond.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef std::size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">vcl_size_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">vcl_ptrdiff_t</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#afb1db189fa5cd8ee4a8222d8b87f3ab0">copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory.  <a href="#afb1db189fa5cd8ee4a8222d8b87f3ab0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#af638a30a9dd2001143b4c92072c76d48">copy</a> (const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, vector_iterator< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy (parts of a) GPU vector to another GPU vector.  <a href="#af638a30a9dd2001143b4c92072c76d48"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9164bd549b986f39b035c24a426869b9">copy</a> (const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, const_vector_iterator< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy (parts of a) GPU vector to another GPU vector.  <a href="#a9164bd549b986f39b035c24a426869b9"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30">norm_1_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the l^1-norm of a vector.  <a href="#a2479f0743a32118e916cca8edb895c30"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a">norm_2_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the l^2-norm of a vector - implementation.  <a href="#a96a2ee028641ffd7b80e6a1bfad34c6a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca">norm_inf_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the supremum-norm of a vector.  <a href="#a43009c5365c78c81463f54c2848378ca"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication.  <a href="#a5e71c3317fe25d0ce5e31be66597d8bb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa965a1bc156b037f57b6a449dde4c7d1">prod_impl</a> (const compressed_matrix< SCALARTYPE, ALIGNMENT > &mat, const vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#aa965a1bc156b037f57b6a449dde4c7d1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a79ec888c8ac1026f4591179fdd19e0de">prod_impl</a> (const coordinate_matrix< SCALARTYPE, ALIGNMENT > &mat, const vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#a79ec888c8ac1026f4591179fdd19e0de"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT1, unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT1 ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT2 ><br class="typebreak"/>
-, viennacl::op_inner_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b">inner_prod_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT1 > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT2 > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product of two vectors.  <a href="#a23fbff833bbc632131b761e732bce72b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afc191e1a26f0c0037e320a3b7dc831cc">inner_prod_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2).  <a href="#afc191e1a26f0c0037e320a3b7dc831cc"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>This file provides the forward declarations for the main types used within ViennaCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/forwards_8h_source.html b/doc/doxygen/html/forwards_8h_source.html
deleted file mode 100644
index c93d561..0000000
--- a/doc/doxygen/html/forwards_8h_source.html
+++ /dev/null
@@ -1,236 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/forwards.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/forwards.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="forwards_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00028"></a>00028 <span class="preprocessor">#ifndef VIENNACL_FORWARDS_H</span>
-<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define VIENNACL_FORWARDS_H</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span>
-<a name="l00031"></a>00031 <span class="comment">//#include <stddef.h></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include <cstddef></span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="ocl_2forwards_8h.html" title="This file provides the forward declarations for the OpenCL layer of ViennaCL.">viennacl/ocl/forwards.h</a>"</span>
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>viennacl
-<a name="l00036"></a>00036 {
-<a name="l00037"></a><a class="code" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">00037</a>   <span class="keyword">typedef</span> std::size_t                                       vcl_size_t;
-<a name="l00038"></a><a class="code" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">00038</a>   <span class="keyword">typedef</span> std::ptrdiff_t                                    vcl_ptrdiff_t;
-<a name="l00039"></a>00039  
-<a name="l00040"></a>00040   
-<a name="l00042"></a>00042   <span class="keyword">struct </span>op_add;
-<a name="l00044"></a>00044   <span class="keyword">struct </span>op_sub;
-<a name="l00046"></a>00046   <span class="keyword">struct </span>op_div;
-<a name="l00047"></a>00047   
-<a name="l00049"></a>00049   <span class="keyword">struct </span>op_inner_prod;
-<a name="l00050"></a>00050 
-<a name="l00052"></a>00052   <span class="keyword">struct </span>op_norm_1;
-<a name="l00053"></a>00053 
-<a name="l00055"></a>00055   <span class="keyword">struct </span>op_norm_2;
-<a name="l00056"></a>00056 
-<a name="l00058"></a>00058   <span class="keyword">struct </span>op_norm_inf;
-<a name="l00059"></a>00059 
-<a name="l00061"></a>00061   <span class="keyword">struct </span>op_prod;
-<a name="l00062"></a>00062   
-<a name="l00064"></a>00064   <span class="keyword">struct </span>op_trans;
-<a name="l00065"></a>00065   
-<a name="l00066"></a>00066 
-<a name="l00067"></a>00067   <span class="comment">//forward declaration of basic types:</span>
-<a name="l00068"></a>00068   <span class="keyword">template</span><<span class="keyword">class</span> TYPE>
-<a name="l00069"></a>00069   <span class="keyword">class </span><a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar</a>;
-<a name="l00070"></a>00070 
-<a name="l00071"></a>00071   <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00072"></a>00072   <span class="keyword">class </span><a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression</a>;
-<a name="l00073"></a>00073 
-<a name="l00074"></a>00074   <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE>
-<a name="l00075"></a>00075   <span class="keyword">class </span><a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a>;
-<a name="l00076"></a>00076   
-<a name="l00077"></a>00077   <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00078"></a>00078   <span class="keyword">class </span><a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>;
-<a name="l00079"></a>00079 
-<a name="l00080"></a>00080   <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00081"></a>00081   <span class="keyword">class </span><a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator</a>;
-<a name="l00082"></a>00082 
-<a name="l00083"></a>00083   <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00084"></a>00084   <span class="keyword">class </span><a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator</a>;
-<a name="l00085"></a>00085   
-<a name="l00086"></a>00086   <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT = 1>
-<a name="l00087"></a>00087   <span class="keyword">class </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>;
-<a name="l00088"></a>00088   
-<a name="l00089"></a>00089   <span class="comment">//the following forwards are needed for GMRES</span>
-<a name="l00090"></a>00090   <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l00091"></a>00091   <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(CPU_ITERATOR <span class="keyword">const</span> & cpu_begin,
-<a name="l00092"></a>00092             CPU_ITERATOR <span class="keyword">const</span> & cpu_end,
-<a name="l00093"></a>00093             <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a> gpu_begin);
-<a name="l00094"></a>00094 
-<a name="l00095"></a>00095   <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_SRC, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_DEST>
-<a name="l00096"></a>00096   <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_begin,
-<a name="l00097"></a>00097             <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_end,
-<a name="l00098"></a>00098             <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT_DEST></a> gpu_dest_begin);
-<a name="l00099"></a>00099   
-<a name="l00100"></a>00100   <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_SRC, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_DEST>
-<a name="l00101"></a>00101   <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_begin,
-<a name="l00102"></a>00102             <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_end,
-<a name="l00103"></a>00103             <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_DEST></a> gpu_dest_begin);
-<a name="l00104"></a>00104   
-<a name="l00105"></a>00105   
-<a name="l00106"></a>00106   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1row__major.html" title="A tag for row-major storage of a dense matrix.">row_major</a>;    
-<a name="l00107"></a>00107   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1column__major.html">column_major</a>;    
-<a name="l00108"></a>00108   
-<a name="l00109"></a>00109   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1row__iteration.html" title="A tag indicating iteration along increasing row index of a matrix.">row_iteration</a>;
-<a name="l00110"></a>00110   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1col__iteration.html" title="A tag indicating iteration along increasing columns index of a matrix.">col_iteration</a>;
-<a name="l00111"></a>00111 
-<a name="l00112"></a>00112   <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00113"></a>00113   <span class="keyword">class </span><a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>;
-<a name="l00114"></a>00114 
-<a name="l00115"></a>00115   <span class="keyword">template</span> <<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F = row_major, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT = 1>
-<a name="l00116"></a>00116   <span class="keyword">class </span><a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>;
-<a name="l00117"></a>00117 
-<a name="l00118"></a>00118   <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT = 1>
-<a name="l00119"></a>00119   <span class="keyword">class </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>;
-<a name="l00120"></a>00120   
-<a name="l00121"></a>00121   <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT = 128>
-<a name="l00122"></a>00122   <span class="keyword">class </span><a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>;    
-<a name="l00123"></a>00123   
-<a name="l00124"></a><a class="code" href="namespaceviennacl_1_1tools.html">00124</a>   <span class="keyword">namespace </span>tools
-<a name="l00125"></a>00125   {
-<a name="l00126"></a>00126     <span class="comment">//helper for matrix row/col iterators </span>
-<a name="l00127"></a>00127     <span class="comment">//must be specialized for every viennacl matrix type</span>
-<a name="l00128"></a>00128     <span class="keyword">template</span> <<span class="keyword">typename</span> ROWCOL, <span class="keyword">typename</span> MATRIXTYPE>
-<a name="l00129"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">00129</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER</a>
-<a name="l00130"></a>00130     {
-<a name="l00131"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html#a020757b8af66b1f9ba27fd6467ccab00">00131</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html#a020757b8af66b1f9ba27fd6467ccab00">apply</a>(<span class="keyword">const</span> MATRIXTYPE & mat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & row, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & col)
-<a name="l00132"></a>00132       {
-<a name="l00133"></a>00133           <span class="keyword">typedef</span> <span class="keyword">typename</span> MATRIXTYPE::ERROR_SPECIALIZATION_FOR_THIS_MATRIX_TYPE_MISSING          ErrorIndicator;
-<a name="l00134"></a>00134       }
-<a name="l00135"></a>00135     };
-<a name="l00136"></a>00136   }
-<a name="l00137"></a>00137     
-<a name="l00138"></a><a class="code" href="namespaceviennacl_1_1linalg.html">00138</a>   <span class="keyword">namespace </span>linalg
-<a name="l00139"></a>00139   {
-<a name="l00140"></a>00140     <span class="comment">//forward definition of norm_1_impl function</span>
-<a name="l00141"></a>00141     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00142"></a>00142     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30" title="Computes the l^1-norm of a vector.">norm_1_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec,
-<a name="l00143"></a>00143                      <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result);
-<a name="l00144"></a>00144 
-<a name="l00145"></a>00145     <span class="comment">//forward definition of norm_2_impl function</span>
-<a name="l00146"></a>00146     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00147"></a>00147     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a" title="Computes the l^2-norm of a vector - implementation.">norm_2_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec,
-<a name="l00148"></a>00148                      <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result);
-<a name="l00149"></a>00149 
-<a name="l00150"></a>00150     <span class="comment">//forward definition of norm_inf_impl function</span>
-<a name="l00151"></a>00151     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00152"></a>00152     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca" title="Computes the supremum-norm of a vector.">norm_inf_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec,
-<a name="l00153"></a>00153                      <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result);
-<a name="l00154"></a>00154     
-<a name="l00155"></a>00155     <span class="comment">//forward definition of prod_impl functions</span>
-<a name="l00156"></a>00156     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00157"></a>00157     <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00158"></a>00158                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>, 
-<a name="l00159"></a>00159                                 op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> &, 
-<a name="l00160"></a>00160                                                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> &);
-<a name="l00161"></a>00161 
-<a name="l00162"></a>00162     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00163"></a>00163     <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::compressed_matrix<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00164"></a>00164                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>, 
-<a name="l00165"></a>00165                                 op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">viennacl::compressed_matrix<SCALARTYPE, ALIGNMENT></a> & , 
-<a name="l00166"></a>00166                                                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> &);
-<a name="l00167"></a>00167 
-<a name="l00168"></a>00168     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00169"></a>00169     <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::coordinate_matrix<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00170"></a>00170                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>, 
-<a name="l00171"></a>00171                                 op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">viennacl::coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & , 
-<a name="l00172"></a>00172                                                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> &);
-<a name="l00173"></a>00173 
-<a name="l00174"></a>00174                                                     
-<a name="l00175"></a>00175     <span class="comment">//forward definition of inner_prod_impl function</span>
-<a name="l00176"></a>00176     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00177"></a>00177     <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<SCALARTYPE, ALIGNMENT1></a>, 
-<a name="l00178"></a>00178                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT2></a>,
-<a name="l00179"></a>00179                                  viennacl::op_inner_prod >
-<a name="l00180"></a>00180     <a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b" title="Computes the inner product of two vectors.">inner_prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT1></a> &,
-<a name="l00181"></a>00181                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT2></a> &);
-<a name="l00182"></a>00182                     
-<a name="l00183"></a>00183     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00184"></a>00184     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b" title="Computes the inner product of two vectors.">inner_prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00185"></a>00185                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00186"></a>00186                          <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result);
-<a name="l00187"></a>00187                     
-<a name="l00188"></a>00188       
-<a name="l00190"></a><a class="code" href="structviennacl_1_1linalg_1_1lower__tag.html">00190</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1linalg_1_1lower__tag.html" title="A tag class representing a lower triangular matrix.">lower_tag</a> 
-<a name="l00191"></a>00191     {
-<a name="l00192"></a><a class="code" href="structviennacl_1_1linalg_1_1lower__tag.html#a645e1cadcf8551f0f14160001402854a">00192</a>       <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="structviennacl_1_1linalg_1_1lower__tag.html#a645e1cadcf8551f0f14160001402854a">name</a>() { <span class="keywordflow">return</span> <span class="stringliteral">"lower"</span>; }
-<a name="l00193"></a>00193     };      <span class="comment">//lower triangular matrix</span>
-<a name="l00195"></a><a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html">00195</a> <span class="comment"></span>    <span class="keyword">struct </span><a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">upper_tag</a> 
-<a name="l00196"></a>00196     {
-<a name="l00197"></a><a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html#a645e1cadcf8551f0f14160001402854a">00197</a>       <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html#a645e1cadcf8551f0f14160001402854a">name</a>() { <span class="keywordflow">return</span> <span class="stringliteral">"upper"</span>; }
-<a name="l00198"></a>00198     };      <span class="comment">//upper triangular matrix</span>
-<a name="l00200"></a><a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">00200</a> <span class="comment"></span>    <span class="keyword">struct </span><a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">unit_lower_tag</a>
-<a name="l00201"></a>00201     {
-<a name="l00202"></a><a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html#a645e1cadcf8551f0f14160001402854a">00202</a>       <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html#a645e1cadcf8551f0f14160001402854a">name</a>() { <span class="keywordflow">return</span> <span class="stringliteral">"unit_lower"</span>; }
-<a name="l00203"></a>00203     }; <span class="comment">//unit lower triangular matrix</span>
-<a name="l00205"></a><a class="code" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">00205</a> <span class="comment"></span>    <span class="keyword">struct </span><a class="code" href="structviennacl_1_1linalg_1_1unit__upper__tag.html" title="A tag class representing an upper triangular matrix with unit diagonal.">unit_upper_tag</a>
-<a name="l00206"></a>00206     {
-<a name="l00207"></a><a class="code" href="structviennacl_1_1linalg_1_1unit__upper__tag.html#a645e1cadcf8551f0f14160001402854a">00207</a>       <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="structviennacl_1_1linalg_1_1unit__upper__tag.html#a645e1cadcf8551f0f14160001402854a">name</a>() { <span class="keywordflow">return</span> <span class="stringliteral">"unit_upper"</span>; }
-<a name="l00208"></a>00208     }; <span class="comment">//unit upper triangular matrix</span>
-<a name="l00209"></a>00209     
-<a name="l00210"></a>00210     <span class="comment">//preconditioner tags</span>
-<a name="l00211"></a>00211     <span class="keyword">class </span>ilut_tag;
-<a name="l00212"></a>00212     
-<a name="l00214"></a><a class="code" href="classviennacl_1_1linalg_1_1no__precond.html">00214</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1no__precond.html" title="A tag class representing the use of no preconditioner.">no_precond</a>
-<a name="l00215"></a>00215     {
-<a name="l00216"></a>00216       <span class="keyword">public</span>:
-<a name="l00217"></a>00217         <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00218"></a><a class="code" href="classviennacl_1_1linalg_1_1no__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">00218</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1no__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a>(VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const </span>{}
-<a name="l00219"></a>00219     };
-<a name="l00220"></a>00220     
-<a name="l00221"></a>00221     
-<a name="l00222"></a>00222   } <span class="comment">//namespace linalg</span>
-<a name="l00223"></a>00223 } <span class="comment">//namespace viennacl</span>
-<a name="l00224"></a>00224 
-<a name="l00225"></a>00225 <span class="preprocessor">#endif</span>
-<a name="l00226"></a>00226 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions.html b/doc/doxygen/html/functions.html
deleted file mode 100644
index ef87596..0000000
--- a/doc/doxygen/html/functions.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>add_data_node()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">parameter_database</a>
-</li>
-<li>add_device()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5">context</a>
-, <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a94640ee3f014f43e802e3bb26e40bc19">parameter_database</a>
-</li>
-<li>add_kernel()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ad95fb4cdb80c4e90c51a031b77302711">parameter_database</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92">program</a>
-</li>
-<li>add_parameter()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a36e505990b93973addc58a7ea20b2c0d">parameter_database</a>
-</li>
-<li>add_program()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb">context</a>
-</li>
-<li>add_queue()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a52bf0f755d6ac169258502c22b179d3f">context</a>
-</li>
-<li>add_test()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ad8c7260fd6a9b708e5da662b295206b8">parameter_database</a>
-</li>
-<li>apply()
-: <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">jacobi_precond< MatrixType ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#acd62521bdbf7f991a885f126413e6f89">DOUBLE_PRECISION_CHECKER< ScalarType ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1no__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">no_precond</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">ilut_precond< MatrixType ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a14dbb6add8cf6b44cf240ba3020404be">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html#ae352c09bbded2dde5b8e14b174a52d9f">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html#a58cb0bc6ab58fc3b770c91cc15362d0a">row_scaling< MatrixType ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#ae352c09bbded2dde5b8e14b174a52d9f">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html#acd62521bdbf7f991a885f126413e6f89">DOUBLE_PRECISION_CHECKER< double ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html#a020757b8af66b1f9ba27fd6467ccab00">MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>arg()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4">kernel</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x62.html b/doc/doxygen/html/functions_0x62.html
deleted file mode 100644
index bcdf31f..0000000
--- a/doc/doxygen/html/functions_0x62.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li class="current"><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
-<li>begin()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ab48a06d327e6296423955301ede64223">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aca3adf2f1528779c11d9abde704c2e69">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1vector.html#aa4b02d4f1a8500fb07a551069060709f">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>begin1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a5b9dc1969b4f2a110d0cec988eb4b1ea">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a61247f52ba999959dea8c58d3e8bc9a6">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>begin2()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a0fc615f1d97d2b19550357e227f85485">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8799eeb54a7eccddce5661c438d535f3">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>bicgstab_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a5bc5a824cc4327c98fba2137408743e5">bicgstab_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x63.html b/doc/doxygen/html/functions_0x63.html
deleted file mode 100644
index ae7b976..0000000
--- a/doc/doxygen/html/functions_0x63.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li class="current"><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>cg_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a987be47faf08698e2775045a23de5abe">cg_tag</a>
-</li>
-<li>checkError()
-: <a class="el" href="structviennacl_1_1ocl_1_1error__checker.html#af878a7ec14df24a0c55857513cd9555e">error_checker< T ></a>
-</li>
-<li>clear()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ac8bb3912a3ce86b15842e79d0b421204">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac8bb3912a3ce86b15842e79d0b421204">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>command_queue()
-: <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a8d0b958ef5c2d71eceeccafc994ef5d6">command_queue</a>
-</li>
-<li>compressed_matrix()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>compute_units()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ae641ec7369f4552b2d0bfcdd62ce9204">device</a>
-</li>
-<li>const_iterator
-: <a class="el" href="classviennacl_1_1vector.html#a5b0cecdbbf962357b5dc5f79dcae2d66">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>const_iterator1
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa5359de96982fcefb8902889e90cd009">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_iterator2
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adf83e37907ef2d594f62e4b05b9425bd">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_reverse_iterator1
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#abb7af69bf0142c0d643bc87bb93c458c">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_sparse_matrix_adapted_iterator()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a7e6adc520f4881192216bb7352aa3eb9">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>const_sparse_matrix_adapter()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adc6d39eae2e1a492baf46df00aefbbd4">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_vector_iterator()
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#aa8e2e53d1a9740dc9a7e5dc30b03734b">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>context()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a23a1f7bd41068b622c4015f5654ee3f3">context</a>
-</li>
-<li>coordinate_matrix()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#ab6d3264162d39010d13f24c98eaeb528">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>copy
-: <a class="el" href="classviennacl_1_1matrix.html#a16f29c7064c0aa97dfbf324336c5176a">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>create_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5">context</a>
-</li>
-<li>current_context()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#a672f8aadf6dc07b765887b69d4ebbf7d">backend< dummy ></a>
-</li>
-<li>current_device()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#ad1be9bca91f95427bc2875827baadab4">context</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x64.html b/doc/doxygen/html/functions_0x64.html
deleted file mode 100644
index c6796f0..0000000
--- a/doc/doxygen/html/functions_0x64.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li class="current"><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>dec()
-: <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#a7e9e140199f7ba174f62477b2fb90366">handle_inc_dec_helper< cl_mem ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#a8a5c0f9dc62b768106e52e66b79aa4b9">handle_inc_dec_helper< cl_program ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#abd0ea0583c2413dbfd45c14d33044258">handle_inc_dec_helper< cl_command_queue ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a4bae375e232db0bdcd4a202b39c19816">handle_inc_dec_helper< cl_context ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#a0fc901ecaa7b205e0e051c2f5d43d9f4">handle_inc_dec_helper< cl_kernel ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a">handle< OCL_TYPE ></a>
-</li>
-<li>default_device_type()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#aa52e297b2bed0c1bda1d7ca8ecdd0620">context</a>
-</li>
-<li>device()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">device</a>
-</li>
-<li>device_num()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a2921a13758255386f686ba24ebc86140">context</a>
-</li>
-<li>devices()
-: <a class="el" href="classviennacl_1_1ocl_1_1platform.html#a257844d23a69f95c6a6572631ffa5995">platform</a>
-, <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">parameter_database</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#acd464974135d4def89834832207da4b9">context</a>
-</li>
-<li>devices_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">parameter_database</a>
-</li>
-<li>difference_type
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a1d7ed47a15fea60d02986112826f40bc">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>doc
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">parameter_database</a>
-</li>
-<li>double_support()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ab61c1a1216e3f4a8537c6b7bd8a36634">device</a>
-</li>
-<li>double_support_extension()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">device</a>
-</li>
-<li>driver_version()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a662b75f96a75aad23ec28c7c55b64d88">device</a>
-</li>
-<li>dump()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#afd80b88d872b6d3dec066c52f2ccc5de">parameter_database</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x65.html b/doc/doxygen/html/functions_0x65.html
deleted file mode 100644
index 43a6f9d..0000000
--- a/doc/doxygen/html/functions_0x65.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li class="current"><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
-<li>elements_
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>empty()
-: <a class="el" href="classviennacl_1_1vector.html#a3f37b042a1e7cd4bd38fc564de81f0da">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>end()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a94a6ed7c67c72c74986b98e1b1343cd1">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#afda31b300997d15900344226c403b540">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a350132543d80a1c1e5be844e6d2878ea">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>end1()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad76ba25f213ed92724da42386c401417">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa29369f210d72e323561ef2f45c82e85">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>end2()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#afe8212a7238c7a15a2731c5f47f775ec">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac9c68d7fd4173418872d2233f894630c">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>enqueue
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a46527eb5023de820b1f1c16ec5a11084">kernel</a>
-</li>
-<li>entry_proxy()
-: <a class="el" href="classviennacl_1_1entry__proxy.html#a969b706bdf3d3ab2ae15cb24085b0b81">entry_proxy< SCALARTYPE ></a>
-</li>
-<li>error()
-: <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a086bf00d9923c3f80f62de3f8491a322">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f">gmres_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a086bf00d9923c3f80f62de3f8491a322">gmres_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a086bf00d9923c3f80f62de3f8491a322">cg_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x66.html b/doc/doxygen/html/functions_0x66.html
deleted file mode 100644
index a179497..0000000
--- a/doc/doxygen/html/functions_0x66.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li class="current"><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fast_copy
-: <a class="el" href="classviennacl_1_1matrix.html#a482880bc796727f4dcb859a2ceb64c6d">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>fast_swap()
-: <a class="el" href="classviennacl_1_1vector.html#a3f3c31234d9a1c823383bd6e8c2c9222">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>finish()
-: <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b">command_queue</a>
-</li>
-<li>flush()
-: <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#ab7e40dfa63aeb29fa6078d04795dffed">command_queue</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x67.html b/doc/doxygen/html/functions_0x67.html
deleted file mode 100644
index e2d5899..0000000
--- a/doc/doxygen/html/functions_0x67.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li class="current"><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
-<li>get()
-: <a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html#aa44c884075e7f0158bc2c09528227af0">first_letter_of_type< T ></a>
-, <a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html#aa44c884075e7f0158bc2c09528227af0">first_letter_of_type< float ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< T ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html#a8eb62a380fed2d733fde5168170eea12">to_string< float ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html#a8eb62a380fed2d733fde5168170eea12">to_string< double ></a>
-, <a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html#aa44c884075e7f0158bc2c09528227af0">first_letter_of_type< double ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a>
-</li>
-<li>get_drop_tolerance()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">ilut_tag</a>
-</li>
-<li>get_entries_per_row()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">ilut_tag</a>
-</li>
-<li>get_kernel()
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#a593fbca8c511a382654582513faf24fb">program</a>
-</li>
-<li>get_lhs()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>get_program()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a">context</a>
-</li>
-<li>get_queue()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#a825af6f15ffeb9448de160661e5bb377">backend< dummy ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">context</a>
-</li>
-<li>get_rhs()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a039558d10a125ddba366e099b72c7b01">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>global_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a3b0090b08cd59decfbc5d27a5865ec88">device</a>
-</li>
-<li>global_work_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456">kernel</a>
-</li>
-<li>gmres_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a83b42e2a7d307fb4d23a039027904fab">gmres_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x68.html b/doc/doxygen/html/functions_0x68.html
deleted file mode 100644
index 7bf70a3..0000000
--- a/doc/doxygen/html/functions_0x68.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li class="current"><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
-<li>handle()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">command_queue</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a0221469d9ed43a30b1663b0cd63ffc9d">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90">context</a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#af4d4001df29df561a0c46de3a8b87566">handle< OCL_TYPE ></a>
-</li>
-<li>handle1()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>handle12()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>handle2()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>handle3()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#a3a2d3ce95e8cd635a285c7584c8691a0">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x69.html b/doc/doxygen/html/functions_0x69.html
deleted file mode 100644
index 8e87c47..0000000
--- a/doc/doxygen/html/functions_0x69.html
+++ /dev/null
@@ -1,210 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li class="current"><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>id()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1platform.html#ab35e9ce3172db05c073d481fce1e26c4">platform</a>
-</li>
-<li>ilut_precond()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond< MatrixType ></a>
-</li>
-<li>ilut_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a9308c6447d14308fcfac1f83f456108a">ilut_tag</a>
-</li>
-<li>inc()
-: <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#afb9dc7b00575004c1144b3a990497a87">handle_inc_dec_helper< cl_kernel ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#addb17e263480ba044f2c38997192344c">handle_inc_dec_helper< cl_command_queue ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a006046d51819d0443dbf6426c4c89bd2">handle_inc_dec_helper< cl_context ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd">handle< OCL_TYPE ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#ae60134f01033d6efe66718eaf8435296">handle_inc_dec_helper< cl_mem ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#aea5d3b62ea9f881b45651e6a7d842fed">handle_inc_dec_helper< cl_program ></a>
-</li>
-<li>index()
-: <a class="el" href="classviennacl_1_1entry__proxy.html#a5a79972f223067007dcfd4350cbad30f">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>index1()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a48c62d5afba1616ab8081dc78b276075">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a4c13e5b96cb010e538968b7c330dbfbd">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a722f0ccc3f96fb85034a8f00a3860470">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>index2()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#a3b437ced850483c2d50f888a33463c95">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a64b95ec918c78480532aa4578eac805f">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a5193f8c88b303f9ebf91c0368be0139b">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-</li>
-<li>index_
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>info()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a2e1e4e2742b910c44558f9cf8e4add62">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1platform.html#a2e1e4e2742b910c44558f9cf8e4add62">platform</a>
-</li>
-<li>init()
-: <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">scalar< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">scalar< double, 1 ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a22330fee3e871b4f8467c8952a94597c">context</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< double, 1 ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a02fd73d861ef2e4aabb38c0c9ff82947">context</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< float, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< double, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< double, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< float, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_row< double, 1 ></a>
-</li>
-<li>init_gpu()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-</li>
-<li>internal_nnz()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>internal_size()
-: <a class="el" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>internal_size1()
-: <a class="el" href="structviennacl_1_1row__major.html#a285614b7315f207587dd60ebcc1e56e5">row_major</a>
-, <a class="el" href="structviennacl_1_1column__major.html#a285614b7315f207587dd60ebcc1e56e5">column_major</a>
-, <a class="el" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>internal_size2()
-: <a class="el" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="structviennacl_1_1row__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">row_major</a>
-, <a class="el" href="structviennacl_1_1column__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">column_major</a>
-</li>
-<li>iterator
-: <a class="el" href="classviennacl_1_1vector.html#a589223a5e682b4a61d57bb8742b1cec9">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>iterator1
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac726b43e88eee76bc8d8eb9dcd8a5fb4">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a9aa7f7547cc95c129d669a1e1bc552d9">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>iterator2
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#af9d07e03f84bf020e29667219e4c2ad8">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac85ff703941f442ef2b38ce83b71d808">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-</li>
-<li>iters()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a0643bc87331b97f3a90e71ec54ff205b">gmres_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a0643bc87331b97f3a90e71ec54ff205b">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">cg_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x6a.html b/doc/doxygen/html/functions_0x6a.html
deleted file mode 100644
index 1a54380..0000000
--- a/doc/doxygen/html/functions_0x6a.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li class="current"><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_j"></a>- j -</h3><ul>
-<li>jacobi_precond()
-: <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond< MatrixType ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x6b.html b/doc/doxygen/html/functions_0x6b.html
deleted file mode 100644
index ca9ea02..0000000
--- a/doc/doxygen/html/functions_0x6b.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li class="current"><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
-<li>kernel
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#aaae51189d6e1e8b24b5654e3704ff50b">program</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">kernel</a>
-</li>
-<li>kernels
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">parameter_database</a>
-</li>
-<li>kernels_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">parameter_database</a>
-</li>
-<li>krylov_dim()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89">gmres_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x6c.html b/doc/doxygen/html/functions_0x6c.html
deleted file mode 100644
index 29ce116..0000000
--- a/doc/doxygen/html/functions_0x6c.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li class="current"><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>last
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">parameter_database</a>
-</li>
-<li>lhs()
-: <a class="el" href="classviennacl_1_1matrix__expression.html#abb680866089de4e937ddc6ce6f1f1830">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1vector__expression.html#abb680866089de4e937ddc6ce6f1f1830">vector_expression< LHS, RHS, OP ></a>
-</li>
-<li>load()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a8e1b7829ae19153197f38719ce73fb67">parameter_database</a>
-</li>
-<li>local_mem()
-: <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a33c50a9e8dcc7fbeeda4b6cadc0e7d53">local_mem</a>
-</li>
-<li>local_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ae9bd44c2f4e9167a2b839af9f109712c">device</a>
-</li>
-<li>local_work_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#af38f6ba2df03771a43aacc275b64fc1c">kernel</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x6d.html b/doc/doxygen/html/functions_0x6d.html
deleted file mode 100644
index 1453368..0000000
--- a/doc/doxygen/html/functions_0x6d.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li class="current"><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
-<li>matrix()
-: <a class="el" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>matrix_expression()
-: <a class="el" href="classviennacl_1_1matrix__expression.html#a466edf19960e38ab2eecab2109956c53">matrix_expression< LHS, RHS, OP ></a>
-</li>
-<li>matrix_iterator()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#af0a6ccd186d6da5fae3227b45fbfcf5a">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>max_allocable_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a8d0a43b183ce09a94af13b4d73250280">device</a>
-</li>
-<li>max_compute_units()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ab2a44bd7f2d691fa15460928af757d99">device</a>
-</li>
-<li>max_iterations()
-: <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">gmres_tag</a>
-</li>
-<li>max_restarts()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a16290e7b3ac1b41c490bbcf2837937a8">gmres_tag</a>
-</li>
-<li>max_size()
-: <a class="el" href="classviennacl_1_1vector.html#a0ab5ce862c0331d9e45a6e1774fca131">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>max_work_group_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a49dafae1d5a718f0825eefd245b14683">device</a>
-</li>
-<li>max_workgroup_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a8c087fde68553db31903df7efd9c033f">device</a>
-</li>
-<li>mem_index()
-: <a class="el" href="structviennacl_1_1column__major.html#abf70953c0d567f696a5dc4d3a75d9881">column_major</a>
-, <a class="el" href="structviennacl_1_1row__major.html#abf70953c0d567f696a5dc4d3a75d9881">row_major</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x6e.html b/doc/doxygen/html/functions_0x6e.html
deleted file mode 100644
index 61f13df..0000000
--- a/doc/doxygen/html/functions_0x6e.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li class="current"><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>name()
-: <a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html#a645e1cadcf8551f0f14160001402854a">lower_tag</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html#a645e1cadcf8551f0f14160001402854a">upper_tag</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html#a645e1cadcf8551f0f14160001402854a">unit_upper_tag</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1program.html#a836b9d82daf374fab15aac8c87eb1133">program</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a836b9d82daf374fab15aac8c87eb1133">kernel</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html#a645e1cadcf8551f0f14160001402854a">unit_lower_tag</a>
-</li>
-<li>nnz()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>norm()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687">row_scaling_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x6f.html b/doc/doxygen/html/functions_0x6f.html
deleted file mode 100644
index e7ab7dd..0000000
--- a/doc/doxygen/html/functions_0x6f.html
+++ /dev/null
@@ -1,218 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li class="current"><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>operator base_type()
-: <a class="el" href="classviennacl_1_1vector__iterator.html#a327ab3f759dae4072bfabbef27d7a981">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator OCL_TYPE()
-: <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a0617dee4fea8b9ca2a668b73b6814a52">handle< OCL_TYPE ></a>
-</li>
-<li>operator ScalarType()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a0da7f7ae214746d5b37ea6c28855155c">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>operator SCALARTYPE()
-: <a class="el" href="classviennacl_1_1entry__proxy.html#accf19b79da67d458fb38880c7a055f8d">entry_proxy< SCALARTYPE ></a>
-</li>
-<li>operator TYPE()
-: <a class="el" href="classviennacl_1_1scalar.html#aeeb8591dc2b4252a62d89522f583c9b3">scalar< TYPE ></a>
-</li>
-<li>operator!=()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a111e186f57ea74111730a997ba77ea17">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>operator()()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a60905cb2b6bc0d97fbab6f92cac9b018">kernel</a>
-, <a class="el" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a17608b63381196929a0b6a2cb5de5422">kernel</a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a472f3f82844b2d229acbd12e34d6764b">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a77fdda461fb386657622e1946b5dce51">kernel</a>
-, <a class="el" href="classviennacl_1_1matrix.html#aee035c6150315c1511e4abfda4b17571">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a919003007befe589d506987dcd582f1b">kernel</a>
-, <a class="el" href="classviennacl_1_1matrix.html#a85566d47047a4d034c6f5afcb3411b33">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#af0e290a2eba1f9bf7c0a6bed69915487">kernel</a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aebaa6cb9a0b72e0792005b58205f2073">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aafa6b6148eaffc7fb4518f473a5432ec">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>operator*()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#a94001b4941ee37e508c3442528389b16">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a46c279075bb75ded776ba3f280e0e38a">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#af2633ec1341d109e979b949d533ff1a2">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a832e184e247b97ecb752bf291d814dff">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector__iterator.html#aca896a4673a17317ad7068e8b769a6c8">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a0273e98b77b6a89e60116358fe27cc9d">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator*=()
-: <a class="el" href="classviennacl_1_1matrix.html#af9d2e9edda2d1896fcbcf2d6068bd90f">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a9b5f86e060ae258394d0333cff946b08">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#ac1c79eb6f521714145802e095d2063a5">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#adad7d33d0bb340be923ded4b7050867b">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator+()
-: <a class="el" href="classviennacl_1_1vector.html#a735ecd24c5432dbf339e9bf6a4bfefb6">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a7693f9e5a4310f9f89ab8c5fadc2c5c0">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a63fe5e79738641bc4c5fd1f07740e3c7">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator++()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#aa5055e4100b53acad1be8697088ff1dc">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a0b50df67a5cd6493e8839fd8990500a7">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator+=()
-: <a class="el" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a54ddb6fd129bd75c57e27007c37a6ed9">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#ae111ad2b2148ff97982f897adb9f03a1">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator-()
-: <a class="el" href="classviennacl_1_1vector.html#a7b6c480cbd1da3812d587a729983fc4f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#aec7de6121b5440524976b3baf978fb5c">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ada8b83b6ead4dfed5ec3c087580cf6b9">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator-=()
-: <a class="el" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#abf94aa936b88e8840684fdcb71c975af">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a32ebaa055c897b1a6f3ea49e3b7022dd">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a67a75928643713bf283d1bdce350589c">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a2255068fb4a338c350ceb6c5a933097b">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a42a2bea8b973e703dc74e7ad0a21ad75">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator/()
-: <a class="el" href="classviennacl_1_1scalar.html#affd5ad0c4067234e832db130cea14288">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ad309219e4080cb6a6427f3321d159b2c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ad87b95d3c182effc15136d7c610200af">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator/=()
-: <a class="el" href="classviennacl_1_1scalar.html#a5bb32c06b69bc99ab13df93be2f262f4">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a0eb65cfaa5a879f33d9c389ad9595b0c">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a3ffe49fc9f161ce2ea1fb130cd0195ca">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a613b5b6e9bc337aea80d09e92179c204">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#af6ba5ebda72ab395ad1a1e5504088976">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator<()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#ae03a1e8a810ded73e6a457729f02a6fe">context</a>
-</li>
-<li>operator=()
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#ab38d1becd4cb60e89dd0b11f3f4e3fe4">program</a>
-, <a class="el" href="classviennacl_1_1scalar.html#a11b85e1905ff83211365912d4d5c3d48">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a6d7884311926bdd52601f636e82d3562">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a77b68e4bfde82a92f70728c40b652f03">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#aaa1fd1f887b588b66d3eae3a264b09cb">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a2a7d2a919692ddc123ebd1452d374d5b">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a83a54825c25a4ec0cbe40577a24beb6c">kernel</a>
-, <a class="el" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a24e0667388106b9f4150ade71c219b29">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a4989aaec23a5611beaa87e1653824aa6">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a896fd9035e7735fd9fb3ea18fbae225e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a4a926e47e610c69c69d0f37a858cc69b">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a1fe82cd71bef5d14642c9ab3d205fd94">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a7b7ff8ec9039215d41042fb6dff8b24e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a9591491bc69f66f82202a86f054ef7ac">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#acea2777143dac0b71bfa981adbdf0fc5">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#abf65c6fc9600970e4ac00b693e0d04fb">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a4de3e801606700dc657414c0634ad46e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#adc76eef234678aba57478ab41b5880f1">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a5bcfcbcb1d03f00ee8942a39e881207f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a0cbf9009ed0ae2f832646cc41a843a72">command_queue</a>
-, <a class="el" href="classviennacl_1_1scalar.html#a2d72be42c42830b4e6f5426dc385daca">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a276192f199fd2252c7296bd57dbb1a39">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#ac8c16c2f06f9b8407963c8d5b627cd44">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ae91c07bfd48f22c8ea54d42583c3611f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#afe71aac8199101eb7e5f83a8a08e196b">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a0acfd903198ff1e36ff67f62d67d7189">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a2f070f408c1f475ffb38ee82f59276c2">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a2cb54ea322ec4f89df8b798350c84f1b">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a601bfbe9d4b4f0a5136649f6b6f2062e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ac4770655192f11ccca15bbd39219d725">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator==()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a42bb548ced469dc5714f1816603a4d35">device</a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#ad25b9ad360f06fda1535074b749cf023">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>operator[]()
-: <a class="el" href="classviennacl_1_1vector.html#acd1666d8bd98191443b3b62f0944a822">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x70.html b/doc/doxygen/html/functions_0x70.html
deleted file mode 100644
index e3ebe2e..0000000
--- a/doc/doxygen/html/functions_0x70.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li class="current"><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>parameter_database()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab4a2fcf734630c9363badbfd4205053a">parameter_database</a>
-</li>
-<li>parameters
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameter_database</a>
-</li>
-<li>parameters_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameter_database</a>
-</li>
-<li>platform()
-: <a class="el" href="classviennacl_1_1ocl_1_1platform.html#ad69bddb2ba31b27415484b3da4213ba8">platform</a>
-</li>
-<li>program()
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#ac22da204c9d1580d094bc37b41ee6a5a">program</a>
-</li>
-<li>program_name()
-: <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">scalar< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">scalar< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< float, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< double, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< float, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< double, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< float, 4 ></a>
-</li>
-<li>program_num()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a05252a29e4e6aa036db1e8b784ed28ec">context</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x72.html b/doc/doxygen/html/functions_0x72.html
deleted file mode 100644
index 828fb5a..0000000
--- a/doc/doxygen/html/functions_0x72.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li class="current"><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>raise_exception()
-: <a class="el" href="structviennacl_1_1ocl_1_1error__checker.html#a66cd47430f5f54a019185f6d21bcb334">error_checker< T ></a>
-</li>
-<li>rbegin1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8883d4e54ffd15ae74873f3ada1ad43b">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>rend1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a88d31c317316b533e580da19c1a625e0">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>reserve()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>resize()
-: <a class="el" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ab49c1922c02e19737b2330be0b76e455">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#a72c98b8dba1f78661da5d71f20550d25">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#a72c98b8dba1f78661da5d71f20550d25">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>ResultType
-: <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html#a3fe128220ee8ae489e1fdc1ec248c74a">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">CPU_SCALAR_TYPE_DEDUCER< float ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html#ae695f3958fa24d64fdbaf3e978e0ea1c">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html#ae695f3958fa24d64fdbaf3e978e0ea1c">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html#a041d7c18583a2b96a0b43bb0c0c185fe">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html#ae695f3958fa24d64fdbaf3e978e0ea1c">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#a9939181a319c04ab48a0d60cbe6e7dd9">VECTOR_EXTRACTOR_IMPL< LHS, RHS ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html#a13d3ccc8836027e5b399582861553350">CONST_REMOVER< const T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#a13d3ccc8836027e5b399582861553350">CONST_REMOVER< T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#a465b19472e9fa1cbd9bbd334947c6042">CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">VECTOR_EXTRACTOR< LHS, RHS ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html#a565860d7eec92d6d3bf47c191f2b9935">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html#a0a0f393da391149f6db6d56f5f763838">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html#a6a870d032c93af230efb9a2585d0d8fe">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html#a12f59df85ae233bdb473e7826811972c">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">CPU_SCALAR_TYPE_DEDUCER< double ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html#a98c8263eaa3a4bc70fd346d1737f0f71">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html#a4a44006b05b679a3af93ea6fa03560b5">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html#a318762097ca7212b82ae6ab04cbfa2d7">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html#a4a11371fee17337eb321c3ff824787c8">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html#a3eb764b159bfae3b099eabbb99c418fe">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html#a7dbff6faccea0ad583517deda3c2b7de">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html#a6b4b25d7fd5078c59d141209050779f3">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html#a9d7293574efd24702391c77e7e3971d0">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a>
-</li>
-<li>rhs()
-: <a class="el" href="classviennacl_1_1vector__expression.html#a563f5aecaa0755006225235e44a11a82">vector_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1matrix__expression.html#a563f5aecaa0755006225235e44a11a82">matrix_expression< LHS, RHS, OP ></a>
-</li>
-<li>root
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">parameter_database</a>
-</li>
-<li>row_scaling()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a505b14065ba3fd81710d349907a73334">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html#a505b14065ba3fd81710d349907a73334">row_scaling< MatrixType ></a>
-</li>
-<li>row_scaling_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a12412041036e5beed6c8c1e0f2fade5e">row_scaling_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x73.html b/doc/doxygen/html/functions_0x73.html
deleted file mode 100644
index fdcbe50..0000000
--- a/doc/doxygen/html/functions_0x73.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li class="current"><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>scalar()
-: <a class="el" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e">scalar< TYPE ></a>
-</li>
-<li>scalar_expression()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#ae0f765f70db16af7c6d8763b8316c17c">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>ScalarType
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a009d628c069d36ec739ad659e1846413">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>set()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a30594c885d58e3372b44a4e358715483">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>set_context_device_type()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#a4c8905ac7d2b12cdb0d3582561d78eff">backend< dummy ></a>
-</li>
-<li>set_drop_tolerance()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a146cc7a6b6e8ebb052f057416f7d356d">ilut_tag</a>
-</li>
-<li>set_entries_per_row()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#af01a20f9ca9bdd5264128ef2f57b0b11">ilut_tag</a>
-</li>
-<li>setup_context()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734">backend< dummy ></a>
-</li>
-<li>size()
-: <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a262aef9302860b3cb5f8fc4bee1531da">local_mem</a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html#ada291f3a68989aac52d341b8d8e396b3">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html#ada291f3a68989aac52d341b8d8e396b3">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html#ad135912731852cebdfa2c996d57dd4a5">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html#aba827ef7d82c4a95c0293eac77a9a495">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html#aa843af9061cf09ded02f2c5c5edb93e0">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html#afafa70095b248b947c523711ff4cd357">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812">vector_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a90ca964ebcc1b02bbcde225edd49e812">local_mem</a>
-</li>
-<li>size1()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a5dc0d7ea09d7bebc57839beeae58a3f7">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a09398ed02392ac3d11157533353a8f31">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a618c0d75593fe1fe328adc6eb422bc93">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#a1cdacb8e14a2f56cbc0abf2927b27a2b">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__expression.html#a890ed2f6c982169c737bd4f68b2a5db7">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad851ae3af7f4c7b7441b653963dc434a">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>size2()
-: <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a8c9fa937480c316bd57a1c3254d00292">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa1ab613bf0ce7b0cc370306d7425ffa2">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__expression.html#aacffdea3e049b0080b6fa4ac4c2fd881">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a65cfc5b2cfed688bed410fe6f983586d">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#adc37fe885156acbab596641f515a0f82">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad5be0755605e62a9b2ca912ba0c6032e">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>size_type
-: <a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>sparse_matrix_adapted_iterator()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a28ab748b9c7783bdf3aa8fa02203a85c">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-</li>
-<li>sparse_matrix_adapter()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa97338a4e54ded964e4d45a623adbf30">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>swap()
-: <a class="el" href="classviennacl_1_1ocl_1_1handle.html#aca2a2fe50e9519f31c07e34d56a2a5eb">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#af5a080ddc0576cfba4c7494ff8eccb09">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>switch_context()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#ab476349b4b424527038f7484c1f0097b">backend< dummy ></a>
-</li>
-<li>switch_device()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a9f74ed0d416018dc2825ddc6f4d8101e">context</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x74.html b/doc/doxygen/html/functions_0x74.html
deleted file mode 100644
index d203876..0000000
--- a/doc/doxygen/html/functions_0x74.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li class="current"><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>tests
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">parameter_database</a>
-</li>
-<li>tests_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">parameter_database</a>
-</li>
-<li>tolerance()
-: <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3">gmres_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3">bicgstab_tag</a>
-</li>
-<li>type
-: <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::compressed_matrix< T, I > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::matrix< T, F, alignment > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::vector< T, alignment > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html#a0ecdaf62bedc425d949e0fc84941ea59">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">tag_of< std::vector< std::vector< T, A >, A > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">tag_of< std::vector< T, A > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of.html#aa4b62e36b82735fe7680dffa115650a9">tag_of< Sequence, Active ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1enable__if.html#a565429e62c1d4fd084335146ba778e17">enable_if< b, T ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1device.html#a30cb8b6361720dfb6c7ce63d1c347e41">device</a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::coordinate_matrix< T, I > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">value_type< T ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x76.html b/doc/doxygen/html/functions_0x76.html
deleted file mode 100644
index 6441a31..0000000
--- a/doc/doxygen/html/functions_0x76.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li class="current"><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
-<li>value
-: <a class="el" href="structviennacl_1_1is__mtl4.html#a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9">is_mtl4< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html#adf764cbdea00d65edcd07bb9953ad2b7a97de9ab6885342a574053b8f64a563a9">is_mtl4< viennacl::tag_mtl4 ></a>
-, <a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html#abc6126af1d45847bc59afa0aa3216b04a97de9ab6885342a574053b8f64a563a9">is_eigen< viennacl::tag_eigen ></a>
-, <a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html#a0411cd49bb5b71852cecd93bcbf0ca2da97de9ab6885342a574053b8f64a563a9">is_stl< viennacl::tag_stl ></a>
-, <a class="el" href="structviennacl_1_1is__viennacl.html#abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9">is_viennacl< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__ublas.html#adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9">is_ublas< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html#ab04a0655cd1e3bcac5e8f48c18df1a57a97de9ab6885342a574053b8f64a563a9">is_viennacl< viennacl::tag_viennacl ></a>
-, <a class="el" href="structviennacl_1_1is__eigen.html#a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9">is_eigen< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html#a61dadd085c1777f559549e05962b2c9ea97de9ab6885342a574053b8f64a563a9">is_ublas< viennacl::tag_ublas ></a>
-, <a class="el" href="structviennacl_1_1is__stl.html#a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9">is_stl< Tag ></a>
-</li>
-<li>value_type
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#ab2ccf246e378a3df6f7a4d9da121f832">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#ae59e37ebbe3a193fa2dd307e94d99518">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#aed985c700866b1bae61cb8bcd5d322fe">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a46dcdd29c175f21b173b96ae4dd0a46e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#aed985c700866b1bae61cb8bcd5d322fe">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>vector()
-: <a class="el" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>vector_expression()
-: <a class="el" href="classviennacl_1_1vector__expression.html#a47b51aeee8120fa441f37d71f56b12c7">vector_expression< LHS, RHS, OP ></a>
-</li>
-<li>vector_iterator()
-: <a class="el" href="classviennacl_1_1vector__iterator.html#a870d4c95600057004f7f4022a87bcf2a">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>VectorType
-: <a class="el" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067">vector_expression< LHS, RHS, OP ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x7e.html b/doc/doxygen/html/functions_0x7e.html
deleted file mode 100644
index e8a90b0..0000000
--- a/doc/doxygen/html/functions_0x7e.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li class="current"><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_0x7e"></a>- ~ -</h3><ul>
-<li>~handle()
-: <a class="el" href="classviennacl_1_1ocl_1_1handle.html#acf40b88db4c738c2b2a7f791cf978414">handle< OCL_TYPE ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_eval.html b/doc/doxygen/html/functions_eval.html
deleted file mode 100644
index 9238477..0000000
--- a/doc/doxygen/html/functions_eval.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Enumerator</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li class="current"><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- <ul>
-<li>value
-: <a class="el" href="structviennacl_1_1is__mtl4.html#a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9">is_mtl4< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html#ab04a0655cd1e3bcac5e8f48c18df1a57a97de9ab6885342a574053b8f64a563a9">is_viennacl< viennacl::tag_viennacl ></a>
-, <a class="el" href="structviennacl_1_1is__viennacl.html#abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9">is_viennacl< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html#a0411cd49bb5b71852cecd93bcbf0ca2da97de9ab6885342a574053b8f64a563a9">is_stl< viennacl::tag_stl ></a>
-, <a class="el" href="structviennacl_1_1is__stl.html#a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9">is_stl< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html#a61dadd085c1777f559549e05962b2c9ea97de9ab6885342a574053b8f64a563a9">is_ublas< viennacl::tag_ublas ></a>
-, <a class="el" href="structviennacl_1_1is__ublas.html#adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9">is_ublas< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html#abc6126af1d45847bc59afa0aa3216b04a97de9ab6885342a574053b8f64a563a9">is_eigen< viennacl::tag_eigen ></a>
-, <a class="el" href="structviennacl_1_1is__eigen.html#a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9">is_eigen< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html#adf764cbdea00d65edcd07bb9953ad2b7a97de9ab6885342a574053b8f64a563a9">is_mtl4< viennacl::tag_mtl4 ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func.html b/doc/doxygen/html/functions_func.html
deleted file mode 100644
index 0185231..0000000
--- a/doc/doxygen/html/functions_func.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li class="current"><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>add_data_node()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">parameter_database</a>
-</li>
-<li>add_device()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5">context</a>
-, <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a94640ee3f014f43e802e3bb26e40bc19">parameter_database</a>
-</li>
-<li>add_kernel()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ad95fb4cdb80c4e90c51a031b77302711">parameter_database</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92">program</a>
-</li>
-<li>add_parameter()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a36e505990b93973addc58a7ea20b2c0d">parameter_database</a>
-</li>
-<li>add_program()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb">context</a>
-</li>
-<li>add_queue()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a52bf0f755d6ac169258502c22b179d3f">context</a>
-</li>
-<li>add_test()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ad8c7260fd6a9b708e5da662b295206b8">parameter_database</a>
-</li>
-<li>apply()
-: <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">jacobi_precond< MatrixType ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#acd62521bdbf7f991a885f126413e6f89">DOUBLE_PRECISION_CHECKER< ScalarType ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1no__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">no_precond</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">ilut_precond< MatrixType ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a14dbb6add8cf6b44cf240ba3020404be">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html#ae352c09bbded2dde5b8e14b174a52d9f">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html#a58cb0bc6ab58fc3b770c91cc15362d0a">row_scaling< MatrixType ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#ae352c09bbded2dde5b8e14b174a52d9f">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html#acd62521bdbf7f991a885f126413e6f89">DOUBLE_PRECISION_CHECKER< double ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html#a020757b8af66b1f9ba27fd6467ccab00">MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>arg()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4">kernel</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x62.html b/doc/doxygen/html/functions_func_0x62.html
deleted file mode 100644
index 3d65937..0000000
--- a/doc/doxygen/html/functions_func_0x62.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li class="current"><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
-<li>begin()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ab48a06d327e6296423955301ede64223">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aca3adf2f1528779c11d9abde704c2e69">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1vector.html#aa4b02d4f1a8500fb07a551069060709f">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>begin1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a5b9dc1969b4f2a110d0cec988eb4b1ea">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a61247f52ba999959dea8c58d3e8bc9a6">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>begin2()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a0fc615f1d97d2b19550357e227f85485">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8799eeb54a7eccddce5661c438d535f3">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>bicgstab_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a5bc5a824cc4327c98fba2137408743e5">bicgstab_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x63.html b/doc/doxygen/html/functions_func_0x63.html
deleted file mode 100644
index 9b27ef7..0000000
--- a/doc/doxygen/html/functions_func_0x63.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li class="current"><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>cg_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a987be47faf08698e2775045a23de5abe">cg_tag</a>
-</li>
-<li>checkError()
-: <a class="el" href="structviennacl_1_1ocl_1_1error__checker.html#af878a7ec14df24a0c55857513cd9555e">error_checker< T ></a>
-</li>
-<li>clear()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ac8bb3912a3ce86b15842e79d0b421204">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac8bb3912a3ce86b15842e79d0b421204">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>command_queue()
-: <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a8d0b958ef5c2d71eceeccafc994ef5d6">command_queue</a>
-</li>
-<li>compressed_matrix()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>compute_units()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ae641ec7369f4552b2d0bfcdd62ce9204">device</a>
-</li>
-<li>const_sparse_matrix_adapted_iterator()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a7e6adc520f4881192216bb7352aa3eb9">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>const_sparse_matrix_adapter()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adc6d39eae2e1a492baf46df00aefbbd4">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_vector_iterator()
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#ac6a7762dba62eaf3d6379fc12481b559">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>context()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a23a1f7bd41068b622c4015f5654ee3f3">context</a>
-</li>
-<li>coordinate_matrix()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#ab6d3264162d39010d13f24c98eaeb528">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>create_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a1e038c8113ae2ce29ce49264573aaad3">context</a>
-</li>
-<li>current_context()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#a672f8aadf6dc07b765887b69d4ebbf7d">backend< dummy ></a>
-</li>
-<li>current_device()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#ad1be9bca91f95427bc2875827baadab4">context</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x64.html b/doc/doxygen/html/functions_func_0x64.html
deleted file mode 100644
index 83a0404..0000000
--- a/doc/doxygen/html/functions_func_0x64.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li class="current"><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>dec()
-: <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#a7e9e140199f7ba174f62477b2fb90366">handle_inc_dec_helper< cl_mem ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#a8a5c0f9dc62b768106e52e66b79aa4b9">handle_inc_dec_helper< cl_program ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#abd0ea0583c2413dbfd45c14d33044258">handle_inc_dec_helper< cl_command_queue ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a4bae375e232db0bdcd4a202b39c19816">handle_inc_dec_helper< cl_context ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#a0fc901ecaa7b205e0e051c2f5d43d9f4">handle_inc_dec_helper< cl_kernel ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a">handle< OCL_TYPE ></a>
-</li>
-<li>default_device_type()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#aa52e297b2bed0c1bda1d7ca8ecdd0620">context</a>
-</li>
-<li>device()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">device</a>
-</li>
-<li>device_num()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a2921a13758255386f686ba24ebc86140">context</a>
-</li>
-<li>devices()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#acd464974135d4def89834832207da4b9">context</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1platform.html#a257844d23a69f95c6a6572631ffa5995">platform</a>
-</li>
-<li>double_support()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ab61c1a1216e3f4a8537c6b7bd8a36634">device</a>
-</li>
-<li>double_support_extension()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">device</a>
-</li>
-<li>driver_version()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a662b75f96a75aad23ec28c7c55b64d88">device</a>
-</li>
-<li>dump()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#afe9b5c984fb20d9be09fb29c01afb21d">parameter_database</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x65.html b/doc/doxygen/html/functions_func_0x65.html
deleted file mode 100644
index bde6e57..0000000
--- a/doc/doxygen/html/functions_func_0x65.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li class="current"><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
-<li>empty()
-: <a class="el" href="classviennacl_1_1vector.html#a3f37b042a1e7cd4bd38fc564de81f0da">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>end()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#afda31b300997d15900344226c403b540">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a94a6ed7c67c72c74986b98e1b1343cd1">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-</li>
-<li>end1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa29369f210d72e323561ef2f45c82e85">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad76ba25f213ed92724da42386c401417">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>end2()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#afe8212a7238c7a15a2731c5f47f775ec">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac9c68d7fd4173418872d2233f894630c">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>entry_proxy()
-: <a class="el" href="classviennacl_1_1entry__proxy.html#a969b706bdf3d3ab2ae15cb24085b0b81">entry_proxy< SCALARTYPE ></a>
-</li>
-<li>error()
-: <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a086bf00d9923c3f80f62de3f8491a322">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f">gmres_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a086bf00d9923c3f80f62de3f8491a322">gmres_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x66.html b/doc/doxygen/html/functions_func_0x66.html
deleted file mode 100644
index 9adecd7..0000000
--- a/doc/doxygen/html/functions_func_0x66.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li class="current"><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fast_swap()
-: <a class="el" href="classviennacl_1_1vector.html#a3f3c31234d9a1c823383bd6e8c2c9222">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>finish()
-: <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b">command_queue</a>
-</li>
-<li>flush()
-: <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#ab7e40dfa63aeb29fa6078d04795dffed">command_queue</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x67.html b/doc/doxygen/html/functions_func_0x67.html
deleted file mode 100644
index 23eda1d..0000000
--- a/doc/doxygen/html/functions_func_0x67.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li class="current"><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
-<li>get()
-: <a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html#aa44c884075e7f0158bc2c09528227af0">first_letter_of_type< T ></a>
-, <a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html#aa44c884075e7f0158bc2c09528227af0">first_letter_of_type< float ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< T ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html#a8eb62a380fed2d733fde5168170eea12">to_string< float ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html#a8eb62a380fed2d733fde5168170eea12">to_string< double ></a>
-, <a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html#aa44c884075e7f0158bc2c09528227af0">first_letter_of_type< double ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a>
-</li>
-<li>get_drop_tolerance()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">ilut_tag</a>
-</li>
-<li>get_entries_per_row()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">ilut_tag</a>
-</li>
-<li>get_kernel()
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#a593fbca8c511a382654582513faf24fb">program</a>
-</li>
-<li>get_lhs()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>get_program()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a">context</a>
-</li>
-<li>get_queue()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#a825af6f15ffeb9448de160661e5bb377">backend< dummy ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">context</a>
-</li>
-<li>get_rhs()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a039558d10a125ddba366e099b72c7b01">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>global_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a3b0090b08cd59decfbc5d27a5865ec88">device</a>
-</li>
-<li>global_work_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456">kernel</a>
-</li>
-<li>gmres_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a83b42e2a7d307fb4d23a039027904fab">gmres_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x68.html b/doc/doxygen/html/functions_func_0x68.html
deleted file mode 100644
index 7fa6378..0000000
--- a/doc/doxygen/html/functions_func_0x68.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li class="current"><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
-<li>handle()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">command_queue</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a0221469d9ed43a30b1663b0cd63ffc9d">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90">context</a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#af4d4001df29df561a0c46de3a8b87566">handle< OCL_TYPE ></a>
-</li>
-<li>handle1()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>handle12()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>handle2()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>handle3()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#a3a2d3ce95e8cd635a285c7584c8691a0">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x69.html b/doc/doxygen/html/functions_func_0x69.html
deleted file mode 100644
index 4310568..0000000
--- a/doc/doxygen/html/functions_func_0x69.html
+++ /dev/null
@@ -1,193 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li class="current"><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>id()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1platform.html#ab35e9ce3172db05c073d481fce1e26c4">platform</a>
-</li>
-<li>ilut_precond()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond< MatrixType ></a>
-</li>
-<li>ilut_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a9308c6447d14308fcfac1f83f456108a">ilut_tag</a>
-</li>
-<li>inc()
-: <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#afb9dc7b00575004c1144b3a990497a87">handle_inc_dec_helper< cl_kernel ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#addb17e263480ba044f2c38997192344c">handle_inc_dec_helper< cl_command_queue ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a006046d51819d0443dbf6426c4c89bd2">handle_inc_dec_helper< cl_context ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd">handle< OCL_TYPE ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#ae60134f01033d6efe66718eaf8435296">handle_inc_dec_helper< cl_mem ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#aea5d3b62ea9f881b45651e6a7d842fed">handle_inc_dec_helper< cl_program ></a>
-</li>
-<li>index()
-: <a class="el" href="classviennacl_1_1entry__proxy.html#a5a79972f223067007dcfd4350cbad30f">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>index1()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a48c62d5afba1616ab8081dc78b276075">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a4c13e5b96cb010e538968b7c330dbfbd">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a722f0ccc3f96fb85034a8f00a3860470">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>index2()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#a3b437ced850483c2d50f888a33463c95">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a64b95ec918c78480532aa4578eac805f">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a5193f8c88b303f9ebf91c0368be0139b">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-</li>
-<li>info()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a2e1e4e2742b910c44558f9cf8e4add62">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1platform.html#a2e1e4e2742b910c44558f9cf8e4add62">platform</a>
-</li>
-<li>init()
-: <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">scalar< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">scalar< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_col< float, 1 ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a02fd73d861ef2e4aabb38c0c9ff82947">context</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_col< double, 1 ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a22330fee3e871b4f8467c8952a94597c">context</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_row< double, 1 ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6">device</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< float, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< double, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< float, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< double, 128 ></a>
-</li>
-<li>init_gpu()
-: <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-</li>
-<li>internal_nnz()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>internal_size()
-: <a class="el" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>internal_size1()
-: <a class="el" href="structviennacl_1_1column__major.html#a285614b7315f207587dd60ebcc1e56e5">column_major</a>
-, <a class="el" href="structviennacl_1_1row__major.html#a285614b7315f207587dd60ebcc1e56e5">row_major</a>
-, <a class="el" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>internal_size2()
-: <a class="el" href="structviennacl_1_1column__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">column_major</a>
-, <a class="el" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="structviennacl_1_1row__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">row_major</a>
-</li>
-<li>iters()
-: <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a0643bc87331b97f3a90e71ec54ff205b">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a0643bc87331b97f3a90e71ec54ff205b">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a0643bc87331b97f3a90e71ec54ff205b">gmres_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">cg_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x6a.html b/doc/doxygen/html/functions_func_0x6a.html
deleted file mode 100644
index 18bd1bb..0000000
--- a/doc/doxygen/html/functions_func_0x6a.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li class="current"><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_j"></a>- j -</h3><ul>
-<li>jacobi_precond()
-: <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond< MatrixType ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x6b.html b/doc/doxygen/html/functions_func_0x6b.html
deleted file mode 100644
index dfc85dc..0000000
--- a/doc/doxygen/html/functions_func_0x6b.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li class="current"><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
-<li>kernel()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">kernel</a>
-</li>
-<li>krylov_dim()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89">gmres_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x6c.html b/doc/doxygen/html/functions_func_0x6c.html
deleted file mode 100644
index 6800480..0000000
--- a/doc/doxygen/html/functions_func_0x6c.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li class="current"><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>lhs()
-: <a class="el" href="classviennacl_1_1matrix__expression.html#abb680866089de4e937ddc6ce6f1f1830">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1vector__expression.html#abb680866089de4e937ddc6ce6f1f1830">vector_expression< LHS, RHS, OP ></a>
-</li>
-<li>load()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a8e1b7829ae19153197f38719ce73fb67">parameter_database</a>
-</li>
-<li>local_mem()
-: <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a33c50a9e8dcc7fbeeda4b6cadc0e7d53">local_mem</a>
-</li>
-<li>local_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ae9bd44c2f4e9167a2b839af9f109712c">device</a>
-</li>
-<li>local_work_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9">kernel</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x6d.html b/doc/doxygen/html/functions_func_0x6d.html
deleted file mode 100644
index 25faab8..0000000
--- a/doc/doxygen/html/functions_func_0x6d.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li class="current"><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
-<li>matrix()
-: <a class="el" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>matrix_expression()
-: <a class="el" href="classviennacl_1_1matrix__expression.html#a466edf19960e38ab2eecab2109956c53">matrix_expression< LHS, RHS, OP ></a>
-</li>
-<li>matrix_iterator()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#af0a6ccd186d6da5fae3227b45fbfcf5a">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>max_allocable_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a8d0a43b183ce09a94af13b4d73250280">device</a>
-</li>
-<li>max_compute_units()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ab2a44bd7f2d691fa15460928af757d99">device</a>
-</li>
-<li>max_iterations()
-: <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">gmres_tag</a>
-</li>
-<li>max_restarts()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a16290e7b3ac1b41c490bbcf2837937a8">gmres_tag</a>
-</li>
-<li>max_size()
-: <a class="el" href="classviennacl_1_1vector.html#a0ab5ce862c0331d9e45a6e1774fca131">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>max_work_group_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a49dafae1d5a718f0825eefd245b14683">device</a>
-</li>
-<li>max_workgroup_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a8c087fde68553db31903df7efd9c033f">device</a>
-</li>
-<li>mem_index()
-: <a class="el" href="structviennacl_1_1column__major.html#abf70953c0d567f696a5dc4d3a75d9881">column_major</a>
-, <a class="el" href="structviennacl_1_1row__major.html#abf70953c0d567f696a5dc4d3a75d9881">row_major</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x6e.html b/doc/doxygen/html/functions_func_0x6e.html
deleted file mode 100644
index fec0268..0000000
--- a/doc/doxygen/html/functions_func_0x6e.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li class="current"><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>name()
-: <a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html#a645e1cadcf8551f0f14160001402854a">lower_tag</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html#a645e1cadcf8551f0f14160001402854a">upper_tag</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html#a645e1cadcf8551f0f14160001402854a">unit_upper_tag</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1program.html#a836b9d82daf374fab15aac8c87eb1133">program</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a836b9d82daf374fab15aac8c87eb1133">kernel</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html#a645e1cadcf8551f0f14160001402854a">unit_lower_tag</a>
-</li>
-<li>nnz()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>norm()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687">row_scaling_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x6f.html b/doc/doxygen/html/functions_func_0x6f.html
deleted file mode 100644
index 19e3faf..0000000
--- a/doc/doxygen/html/functions_func_0x6f.html
+++ /dev/null
@@ -1,218 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li class="current"><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>operator base_type()
-: <a class="el" href="classviennacl_1_1vector__iterator.html#a327ab3f759dae4072bfabbef27d7a981">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator OCL_TYPE()
-: <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a0617dee4fea8b9ca2a668b73b6814a52">handle< OCL_TYPE ></a>
-</li>
-<li>operator ScalarType()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a0da7f7ae214746d5b37ea6c28855155c">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>operator SCALARTYPE()
-: <a class="el" href="classviennacl_1_1entry__proxy.html#accf19b79da67d458fb38880c7a055f8d">entry_proxy< SCALARTYPE ></a>
-</li>
-<li>operator TYPE()
-: <a class="el" href="classviennacl_1_1scalar.html#aeeb8591dc2b4252a62d89522f583c9b3">scalar< TYPE ></a>
-</li>
-<li>operator!=()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a111e186f57ea74111730a997ba77ea17">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>operator()()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a60905cb2b6bc0d97fbab6f92cac9b018">kernel</a>
-, <a class="el" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a17608b63381196929a0b6a2cb5de5422">kernel</a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a472f3f82844b2d229acbd12e34d6764b">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a77fdda461fb386657622e1946b5dce51">kernel</a>
-, <a class="el" href="classviennacl_1_1matrix.html#aee035c6150315c1511e4abfda4b17571">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a919003007befe589d506987dcd582f1b">kernel</a>
-, <a class="el" href="classviennacl_1_1matrix.html#a85566d47047a4d034c6f5afcb3411b33">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#af0e290a2eba1f9bf7c0a6bed69915487">kernel</a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aebaa6cb9a0b72e0792005b58205f2073">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aafa6b6148eaffc7fb4518f473a5432ec">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>operator*()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#a94001b4941ee37e508c3442528389b16">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a46c279075bb75ded776ba3f280e0e38a">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#af2633ec1341d109e979b949d533ff1a2">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a832e184e247b97ecb752bf291d814dff">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector__iterator.html#aca896a4673a17317ad7068e8b769a6c8">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a0273e98b77b6a89e60116358fe27cc9d">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator*=()
-: <a class="el" href="classviennacl_1_1matrix.html#af9d2e9edda2d1896fcbcf2d6068bd90f">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a9b5f86e060ae258394d0333cff946b08">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#ac1c79eb6f521714145802e095d2063a5">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#adad7d33d0bb340be923ded4b7050867b">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator+()
-: <a class="el" href="classviennacl_1_1vector.html#a735ecd24c5432dbf339e9bf6a4bfefb6">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a7693f9e5a4310f9f89ab8c5fadc2c5c0">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a63fe5e79738641bc4c5fd1f07740e3c7">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator++()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#aa5055e4100b53acad1be8697088ff1dc">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a0b50df67a5cd6493e8839fd8990500a7">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator+=()
-: <a class="el" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a54ddb6fd129bd75c57e27007c37a6ed9">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#ae111ad2b2148ff97982f897adb9f03a1">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator-()
-: <a class="el" href="classviennacl_1_1vector.html#a7b6c480cbd1da3812d587a729983fc4f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#aec7de6121b5440524976b3baf978fb5c">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ada8b83b6ead4dfed5ec3c087580cf6b9">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator-=()
-: <a class="el" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#abf94aa936b88e8840684fdcb71c975af">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a32ebaa055c897b1a6f3ea49e3b7022dd">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a67a75928643713bf283d1bdce350589c">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a2255068fb4a338c350ceb6c5a933097b">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a42a2bea8b973e703dc74e7ad0a21ad75">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator/()
-: <a class="el" href="classviennacl_1_1scalar.html#affd5ad0c4067234e832db130cea14288">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ad309219e4080cb6a6427f3321d159b2c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ad87b95d3c182effc15136d7c610200af">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator/=()
-: <a class="el" href="classviennacl_1_1scalar.html#a5bb32c06b69bc99ab13df93be2f262f4">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a0eb65cfaa5a879f33d9c389ad9595b0c">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a3ffe49fc9f161ce2ea1fb130cd0195ca">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a613b5b6e9bc337aea80d09e92179c204">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#af6ba5ebda72ab395ad1a1e5504088976">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator<()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#ae03a1e8a810ded73e6a457729f02a6fe">context</a>
-</li>
-<li>operator=()
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#ab38d1becd4cb60e89dd0b11f3f4e3fe4">program</a>
-, <a class="el" href="classviennacl_1_1scalar.html#a11b85e1905ff83211365912d4d5c3d48">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a6d7884311926bdd52601f636e82d3562">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a77b68e4bfde82a92f70728c40b652f03">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#aaa1fd1f887b588b66d3eae3a264b09cb">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a2a7d2a919692ddc123ebd1452d374d5b">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a83a54825c25a4ec0cbe40577a24beb6c">kernel</a>
-, <a class="el" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a24e0667388106b9f4150ade71c219b29">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a4989aaec23a5611beaa87e1653824aa6">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a896fd9035e7735fd9fb3ea18fbae225e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a4a926e47e610c69c69d0f37a858cc69b">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a1fe82cd71bef5d14642c9ab3d205fd94">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a7b7ff8ec9039215d41042fb6dff8b24e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a9591491bc69f66f82202a86f054ef7ac">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#acea2777143dac0b71bfa981adbdf0fc5">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#abf65c6fc9600970e4ac00b693e0d04fb">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a4de3e801606700dc657414c0634ad46e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#adc76eef234678aba57478ab41b5880f1">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a5bcfcbcb1d03f00ee8942a39e881207f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a0cbf9009ed0ae2f832646cc41a843a72">command_queue</a>
-, <a class="el" href="classviennacl_1_1scalar.html#a2d72be42c42830b4e6f5426dc385daca">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a276192f199fd2252c7296bd57dbb1a39">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#ac8c16c2f06f9b8407963c8d5b627cd44">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ae91c07bfd48f22c8ea54d42583c3611f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#afe71aac8199101eb7e5f83a8a08e196b">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a0acfd903198ff1e36ff67f62d67d7189">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a2f070f408c1f475ffb38ee82f59276c2">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a2cb54ea322ec4f89df8b798350c84f1b">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a601bfbe9d4b4f0a5136649f6b6f2062e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ac4770655192f11ccca15bbd39219d725">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator==()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a42bb548ced469dc5714f1816603a4d35">device</a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#ad25b9ad360f06fda1535074b749cf023">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>operator[]()
-: <a class="el" href="classviennacl_1_1vector.html#acd1666d8bd98191443b3b62f0944a822">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x70.html b/doc/doxygen/html/functions_func_0x70.html
deleted file mode 100644
index 69d7077..0000000
--- a/doc/doxygen/html/functions_func_0x70.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li class="current"><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>parameter_database()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab4a2fcf734630c9363badbfd4205053a">parameter_database</a>
-</li>
-<li>platform()
-: <a class="el" href="classviennacl_1_1ocl_1_1platform.html#ad69bddb2ba31b27415484b3da4213ba8">platform</a>
-</li>
-<li>program()
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#a396823275fb41e9a64fff458b6b4415d">program</a>
-</li>
-<li>program_name()
-: <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">scalar< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">scalar< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< float, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< double, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< float, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< double, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< double, 16 ></a>
-</li>
-<li>program_num()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a05252a29e4e6aa036db1e8b784ed28ec">context</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x72.html b/doc/doxygen/html/functions_func_0x72.html
deleted file mode 100644
index 5edb163..0000000
--- a/doc/doxygen/html/functions_func_0x72.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li class="current"><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>raise_exception()
-: <a class="el" href="structviennacl_1_1ocl_1_1error__checker.html#a66cd47430f5f54a019185f6d21bcb334">error_checker< T ></a>
-</li>
-<li>rbegin1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8883d4e54ffd15ae74873f3ada1ad43b">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>rend1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a88d31c317316b533e580da19c1a625e0">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>reserve()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>resize()
-: <a class="el" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ab49c1922c02e19737b2330be0b76e455">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#a72c98b8dba1f78661da5d71f20550d25">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#a72c98b8dba1f78661da5d71f20550d25">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>rhs()
-: <a class="el" href="classviennacl_1_1matrix__expression.html#a563f5aecaa0755006225235e44a11a82">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1vector__expression.html#a563f5aecaa0755006225235e44a11a82">vector_expression< LHS, RHS, OP ></a>
-</li>
-<li>row_scaling()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a505b14065ba3fd81710d349907a73334">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html#a505b14065ba3fd81710d349907a73334">row_scaling< MatrixType ></a>
-</li>
-<li>row_scaling_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a12412041036e5beed6c8c1e0f2fade5e">row_scaling_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x73.html b/doc/doxygen/html/functions_func_0x73.html
deleted file mode 100644
index 90ac6a0..0000000
--- a/doc/doxygen/html/functions_func_0x73.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li class="current"><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>scalar()
-: <a class="el" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e">scalar< TYPE ></a>
-</li>
-<li>scalar_expression()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#ae0f765f70db16af7c6d8763b8316c17c">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>set()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a30594c885d58e3372b44a4e358715483">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>set_context_device_type()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#a4c8905ac7d2b12cdb0d3582561d78eff">backend< dummy ></a>
-</li>
-<li>set_drop_tolerance()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a146cc7a6b6e8ebb052f057416f7d356d">ilut_tag</a>
-</li>
-<li>set_entries_per_row()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#af01a20f9ca9bdd5264128ef2f57b0b11">ilut_tag</a>
-</li>
-<li>setup_context()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734">backend< dummy ></a>
-</li>
-<li>size()
-: <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html#ada291f3a68989aac52d341b8d8e396b3">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html#ada291f3a68989aac52d341b8d8e396b3">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html#ad135912731852cebdfa2c996d57dd4a5">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html#aba827ef7d82c4a95c0293eac77a9a495">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html#aa843af9061cf09ded02f2c5c5edb93e0">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html#afafa70095b248b947c523711ff4cd357">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812">vector_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a90ca964ebcc1b02bbcde225edd49e812">local_mem</a>
-</li>
-<li>size1()
-: <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a09398ed02392ac3d11157533353a8f31">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a618c0d75593fe1fe328adc6eb422bc93">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#a1cdacb8e14a2f56cbc0abf2927b27a2b">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__expression.html#a890ed2f6c982169c737bd4f68b2a5db7">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad851ae3af7f4c7b7441b653963dc434a">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>size2()
-: <a class="el" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad5be0755605e62a9b2ca912ba0c6032e">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a65cfc5b2cfed688bed410fe6f983586d">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#adc37fe885156acbab596641f515a0f82">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix__expression.html#aacffdea3e049b0080b6fa4ac4c2fd881">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa1ab613bf0ce7b0cc370306d7425ffa2">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a8c9fa937480c316bd57a1c3254d00292">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a>
-</li>
-<li>sparse_matrix_adapted_iterator()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a28ab748b9c7783bdf3aa8fa02203a85c">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-</li>
-<li>sparse_matrix_adapter()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa97338a4e54ded964e4d45a623adbf30">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>swap()
-: <a class="el" href="classviennacl_1_1ocl_1_1handle.html#aca2a2fe50e9519f31c07e34d56a2a5eb">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#af5a080ddc0576cfba4c7494ff8eccb09">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>switch_context()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#ab476349b4b424527038f7484c1f0097b">backend< dummy ></a>
-</li>
-<li>switch_device()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a3d316253d55eade417eee44bb38b127c">context</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x74.html b/doc/doxygen/html/functions_func_0x74.html
deleted file mode 100644
index a5489b8..0000000
--- a/doc/doxygen/html/functions_func_0x74.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li class="current"><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>tolerance()
-: <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3">gmres_tag</a>
-</li>
-<li>type()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a30cb8b6361720dfb6c7ce63d1c347e41">device</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x76.html b/doc/doxygen/html/functions_func_0x76.html
deleted file mode 100644
index f91999f..0000000
--- a/doc/doxygen/html/functions_func_0x76.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li class="current"><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
-<li>vector()
-: <a class="el" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>vector_expression()
-: <a class="el" href="classviennacl_1_1vector__expression.html#a47b51aeee8120fa441f37d71f56b12c7">vector_expression< LHS, RHS, OP ></a>
-</li>
-<li>vector_iterator()
-: <a class="el" href="classviennacl_1_1vector__iterator.html#ab2e550b8717745228f53d20fa8cd4a88">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x7e.html b/doc/doxygen/html/functions_func_0x7e.html
deleted file mode 100644
index 397ca98..0000000
--- a/doc/doxygen/html/functions_func_0x7e.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="functions_func.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
-      <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
-      <li class="current"><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_0x7e"></a>- ~ -</h3><ul>
-<li>~handle()
-: <a class="el" href="classviennacl_1_1ocl_1_1handle.html#acf40b88db4c738c2b2a7f791cf978414">handle< OCL_TYPE ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_rela.html b/doc/doxygen/html/functions_rela.html
deleted file mode 100644
index 9795029..0000000
--- a/doc/doxygen/html/functions_rela.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Related Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li class="current"><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- <ul>
-<li>copy
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a16f29c7064c0aa97dfbf324336c5176a">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>enqueue
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a46527eb5023de820b1f1c16ec5a11084">kernel</a>
-</li>
-<li>fast_copy
-: <a class="el" href="classviennacl_1_1matrix.html#a482880bc796727f4dcb859a2ceb64c6d">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>kernel
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#aaae51189d6e1e8b24b5654e3704ff50b">program</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_type.html b/doc/doxygen/html/functions_type.html
deleted file mode 100644
index 945300f..0000000
--- a/doc/doxygen/html/functions_type.html
+++ /dev/null
@@ -1,178 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Typedefs</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li class="current"><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index_c"><span>c</span></a></li>
-      <li><a href="#index_d"><span>d</span></a></li>
-      <li><a href="#index_i"><span>i</span></a></li>
-      <li><a href="#index_r"><span>r</span></a></li>
-      <li><a href="#index_s"><span>s</span></a></li>
-      <li><a href="#index_t"><span>t</span></a></li>
-      <li><a href="#index_v"><span>v</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>const_iterator
-: <a class="el" href="classviennacl_1_1vector.html#a5b0cecdbbf962357b5dc5f79dcae2d66">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>const_iterator1
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa5359de96982fcefb8902889e90cd009">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_iterator2
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adf83e37907ef2d594f62e4b05b9425bd">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_reverse_iterator1
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#abb7af69bf0142c0d643bc87bb93c458c">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>difference_type
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a1d7ed47a15fea60d02986112826f40bc">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>iterator
-: <a class="el" href="classviennacl_1_1vector.html#a589223a5e682b4a61d57bb8742b1cec9">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>iterator1
-: <a class="el" href="classviennacl_1_1matrix.html#ac726b43e88eee76bc8d8eb9dcd8a5fb4">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a9aa7f7547cc95c129d669a1e1bc552d9">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>iterator2
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#af9d07e03f84bf020e29667219e4c2ad8">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac85ff703941f442ef2b38ce83b71d808">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>ResultType
-: <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html#a6b4b25d7fd5078c59d141209050779f3">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">CPU_SCALAR_TYPE_DEDUCER< double ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">CPU_SCALAR_TYPE_DEDUCER< float ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">VECTOR_EXTRACTOR< LHS, RHS ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html#ae695f3958fa24d64fdbaf3e978e0ea1c">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html#ae695f3958fa24d64fdbaf3e978e0ea1c">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html#ae695f3958fa24d64fdbaf3e978e0ea1c">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#a9939181a319c04ab48a0d60cbe6e7dd9">VECTOR_EXTRACTOR_IMPL< LHS, RHS ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html#a13d3ccc8836027e5b399582861553350">CONST_REMOVER< const T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#a13d3ccc8836027e5b399582861553350">CONST_REMOVER< T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#a465b19472e9fa1cbd9bbd334947c6042">CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html#a7dbff6faccea0ad583517deda3c2b7de">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html#a565860d7eec92d6d3bf47c191f2b9935">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html#a0a0f393da391149f6db6d56f5f763838">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html#a6a870d032c93af230efb9a2585d0d8fe">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html#a4a44006b05b679a3af93ea6fa03560b5">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html#a98c8263eaa3a4bc70fd346d1737f0f71">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html#a12f59df85ae233bdb473e7826811972c">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html#a041d7c18583a2b96a0b43bb0c0c185fe">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html#a3fe128220ee8ae489e1fdc1ec248c74a">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html#a318762097ca7212b82ae6ab04cbfa2d7">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html#a4a11371fee17337eb321c3ff824787c8">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html#a3eb764b159bfae3b099eabbb99c418fe">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html#a9d7293574efd24702391c77e7e3971d0">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>ScalarType
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a009d628c069d36ec739ad659e1846413">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>size_type
-: <a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>type
-: <a class="el" href="structviennacl_1_1traits_1_1tag__of.html#aa4b62e36b82735fe7680dffa115650a9">tag_of< Sequence, Active ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1enable__if.html#a565429e62c1d4fd084335146ba778e17">enable_if< b, T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">value_type< T ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::coordinate_matrix< T, I > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::compressed_matrix< T, I > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::matrix< T, F, alignment > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::vector< T, alignment > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html#a0ecdaf62bedc425d949e0fc84941ea59">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">tag_of< std::vector< std::vector< T, A >, A > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">tag_of< std::vector< T, A > ></a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
-<li>value_type
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#aed985c700866b1bae61cb8bcd5d322fe">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#ae59e37ebbe3a193fa2dd307e94d99518">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#ab2ccf246e378a3df6f7a4d9da121f832">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a46dcdd29c175f21b173b96ae4dd0a46e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#aed985c700866b1bae61cb8bcd5d322fe">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>VectorType
-: <a class="el" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067">vector_expression< LHS, RHS, OP ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_vars.html b/doc/doxygen/html/functions_vars.html
deleted file mode 100644
index 45864f4..0000000
--- a/doc/doxygen/html/functions_vars.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-      <li><a href="functions_type.html"><span>Typedefs</span></a></li>
-      <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- <ul>
-<li>devices
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">parameter_database</a>
-</li>
-<li>devices_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">parameter_database</a>
-</li>
-<li>doc
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">parameter_database</a>
-</li>
-<li>elements_
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>index_
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>kernels
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">parameter_database</a>
-</li>
-<li>kernels_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">parameter_database</a>
-</li>
-<li>last
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">parameter_database</a>
-</li>
-<li>parameters
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameter_database</a>
-</li>
-<li>parameters_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameter_database</a>
-</li>
-<li>root
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">parameter_database</a>
-</li>
-<li>tests
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">parameter_database</a>
-</li>
-<li>tests_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">parameter_database</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/globals.html b/doc/doxygen/html/globals.html
deleted file mode 100644
index 33e474d..0000000
--- a/doc/doxygen/html/globals.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:<ul>
-<li>VIENNACL_BUG_REPORT_STRING
-: <a class="el" href="error_8hpp.html#a6d42757cdf0e944ebe5236aa4f96b6aa">error.hpp</a>
-</li>
-<li>VIENNACL_ERR_CHECK
-: <a class="el" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">error.hpp</a>
-</li>
-<li>VIENNACL_OCL_MAX_DEVICE_NUM
-: <a class="el" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">forwards.h</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/globals_defs.html b/doc/doxygen/html/globals_defs.html
deleted file mode 100644
index 63d5efb..0000000
--- a/doc/doxygen/html/globals_defs.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- <ul>
-<li>VIENNACL_BUG_REPORT_STRING
-: <a class="el" href="error_8hpp.html#a6d42757cdf0e944ebe5236aa4f96b6aa">error.hpp</a>
-</li>
-<li>VIENNACL_ERR_CHECK
-: <a class="el" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">error.hpp</a>
-</li>
-<li>VIENNACL_OCL_MAX_DEVICE_NUM
-: <a class="el" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">forwards.h</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/gmres_8hpp.html b/doc/doxygen/html/gmres_8hpp.html
deleted file mode 100644
index af88671..0000000
--- a/doc/doxygen/html/gmres_8hpp.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/gmres.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/gmres.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementations of the generalized minimum residual method are in this file.  
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <cmath></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="norm__2_8hpp_source.html">viennacl/linalg/norm_2.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="prod_8hpp_source.html">viennacl/linalg/prod.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="inner__prod_8hpp_source.html">viennacl/linalg/inner_prod.hpp</a>"</code><br/>
-
-<p><a href="gmres_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function.  <a href="classviennacl_1_1linalg_1_1gmres__tag.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType , typename PreconditionerType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a76b4d001b76edd2253dc7d3a2852b391">solve</a> (const MatrixType &matrix, VectorType const &rhs, gmres_tag const &tag, PreconditionerType const &precond)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the GMRES solver.  <a href="#a76b4d001b76edd2253dc7d3a2852b391"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad590c4eadb76eea1a806c3c4c026ba66">solve</a> (const MatrixType &matrix, VectorType const &rhs, gmres_tag const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience overload of the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function using GMRES. Per default, no preconditioner is used.  <a href="#ad590c4eadb76eea1a806c3c4c026ba66"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of the generalized minimum residual method are in this file. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/gmres_8hpp_source.html b/doc/doxygen/html/gmres_8hpp_source.html
deleted file mode 100644
index 6d5b158..0000000
--- a/doc/doxygen/html/gmres_8hpp_source.html
+++ /dev/null
@@ -1,295 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/gmres.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/gmres.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="gmres_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_GMRES_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_GMRES_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <cmath></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="norm__2_8hpp.html" title="Generic interface for the l^2-norm. See viennacl/linalg/vector_operations.hpp for implementations...">viennacl/linalg/norm_2.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="prod_8hpp.html" title="Generic interface for matrix-vector and matrix-matrix products. See viennacl/linalg/vector_operations...">viennacl/linalg/prod.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="inner__prod_8hpp.html" title="Generic interface for the computation of inner products. See viennacl/linalg/vector_operations.hpp for implementations.">viennacl/linalg/inner_prod.hpp</a>"</span>
-<a name="l00029"></a>00029 
-<a name="l00030"></a>00030 <span class="keyword">namespace </span>viennacl
-<a name="l00031"></a>00031 {
-<a name="l00032"></a>00032   <span class="keyword">namespace </span>linalg
-<a name="l00033"></a>00033   {
-<a name="l00034"></a>00034     
-<a name="l00037"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html">00037</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html" title="A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the solve() func...">gmres_tag</a>       <span class="comment">//generalized minimum residual</span>
-<a name="l00038"></a>00038     {
-<a name="l00039"></a>00039       <span class="keyword">public</span>:
-<a name="l00046"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a83b42e2a7d307fb4d23a039027904fab">00046</a>         <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a83b42e2a7d307fb4d23a039027904fab" title="The constructor.">gmres_tag</a>(<span class="keywordtype">double</span> tol = 1e-10, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a> = 300, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89" title="Returns the maximum dimension of the Krylov space before restart.">krylov_dim</a> = 20) 
-<a name="l00047"></a>00047          : _tol(tol), _iterations(<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>), _krylov_dim(<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89" title="Returns the maximum dimension of the Krylov space before restart.">krylov_dim</a>), iters_taken_(0) {};
-<a name="l00048"></a>00048         
-<a name="l00050"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3">00050</a>         <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _tol; }
-<a name="l00052"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">00052</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _iterations; }
-<a name="l00054"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89">00054</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89" title="Returns the maximum dimension of the Krylov space before restart.">krylov_dim</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _krylov_dim; }
-<a name="l00056"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a16290e7b3ac1b41c490bbcf2837937a8">00056</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a16290e7b3ac1b41c490bbcf2837937a8" title="Returns the maximum number of GMRES restarts.">max_restarts</a>()<span class="keyword"> const</span>
-<a name="l00057"></a>00057 <span class="keyword">        </span>{ 
-<a name="l00058"></a>00058           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ret = _iterations / _krylov_dim;
-<a name="l00059"></a>00059           <span class="keywordflow">if</span> (ret > 0 && (ret * _krylov_dim == _iterations) )
-<a name="l00060"></a>00060             <span class="keywordflow">return</span> ret - 1;
-<a name="l00061"></a>00061           <span class="keywordflow">return</span> ret;
-<a name="l00062"></a>00062         }
-<a name="l00063"></a>00063         
-<a name="l00065"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">00065</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> iters_taken_; }
-<a name="l00067"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a0643bc87331b97f3a90e71ec54ff205b">00067</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a0643bc87331b97f3a90e71ec54ff205b" title="Set the number of solver iterations (should only be modified by the solver).">iters</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ iters_taken_ = i; }
-<a name="l00068"></a>00068         
-<a name="l00070"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f">00070</a>         <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> last_error_; }
-<a name="l00072"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a086bf00d9923c3f80f62de3f8491a322">00072</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a086bf00d9923c3f80f62de3f8491a322" title="Sets the estimated relative error at the end of the solver run.">error</a>(<span class="keywordtype">double</span> e)<span class="keyword"> const </span>{ last_error_ = e; }
-<a name="l00073"></a>00073         
-<a name="l00074"></a>00074       <span class="keyword">private</span>:
-<a name="l00075"></a>00075         <span class="keywordtype">double</span> _tol;
-<a name="l00076"></a>00076         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _iterations;
-<a name="l00077"></a>00077         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _krylov_dim;
-<a name="l00078"></a>00078         
-<a name="l00079"></a>00079         <span class="comment">//return values from solver</span>
-<a name="l00080"></a>00080         <span class="keyword">mutable</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iters_taken_;
-<a name="l00081"></a>00081         <span class="keyword">mutable</span> <span class="keywordtype">double</span> last_error_;
-<a name="l00082"></a>00082     };
-<a name="l00083"></a>00083     
-<a name="l00084"></a>00084     <span class="keyword">namespace</span>
-<a name="l00085"></a>00085     {
-<a name="l00086"></a>00086       
-<a name="l00087"></a>00087       <span class="keyword">template</span> <<span class="keyword">typename</span> SRC_VECTOR, <span class="keyword">typename</span> DEST_VECTOR>
-<a name="l00088"></a>00088       <span class="keywordtype">void</span> gmres_copy_helper(SRC_VECTOR <span class="keyword">const</span> & src, DEST_VECTOR & dest, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len)
-<a name="l00089"></a>00089       {
-<a name="l00090"></a>00090         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i<len; ++i)
-<a name="l00091"></a>00091           dest[i] = src[i];
-<a name="l00092"></a>00092       }
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094       <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> DEST_VECTOR>
-<a name="l00095"></a>00095       <span class="keywordtype">void</span> gmres_copy_helper(<a class="code" href="classviennacl_1_1vector.html">viennacl::vector<ScalarType></a> <span class="keyword">const</span> & src, DEST_VECTOR & dest, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len)
-<a name="l00096"></a>00096       {
-<a name="l00097"></a>00097         <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">viennacl::copy</a>(src.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>(), src.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>() + len, dest.begin());
-<a name="l00098"></a>00098       }
-<a name="l00099"></a>00099 
-<a name="l00100"></a>00100       <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00101"></a>00101       <span class="keywordtype">void</span> gmres_copy_helper(<a class="code" href="classviennacl_1_1vector.html">viennacl::vector<ScalarType></a> <span class="keyword">const</span> & src, <a class="code" href="classviennacl_1_1vector.html">viennacl::vector<ScalarType></a> & dest, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len)
-<a name="l00102"></a>00102       {
-<a name="l00103"></a>00103         <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">viennacl::copy</a>(src.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>(), src.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>() + len, dest.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>());
-<a name="l00104"></a>00104       }
-<a name="l00105"></a>00105 
-<a name="l00106"></a>00106     }
-<a name="l00107"></a>00107 
-<a name="l00118"></a>00118     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType, <span class="keyword">typename</span> PreconditionerType>
-<a name="l00119"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a76b4d001b76edd2253dc7d3a2852b391">00119</a>     VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html" title="A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the solve() func...">gmres_tag</a> <span class="keyword">const</span> & tag, PreconditionerType <span class="keyword">const</span> & precond)
-<a name="l00120"></a>00120     {
-<a name="l00121"></a>00121       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">viennacl::tools::result_of::value_type<VectorType>::type</a>            ScalarType;
-<a name="l00122"></a>00122       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType</a>    CPU_ScalarType;
-<a name="l00123"></a>00123       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> problem_size = <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits::size</a>(rhs);
-<a name="l00124"></a>00124       VectorType result(problem_size);
-<a name="l00125"></a>00125       <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(result);
-<a name="l00126"></a>00126       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> krylov_dim = tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89" title="Returns the maximum dimension of the Krylov space before restart.">krylov_dim</a>();
-<a name="l00127"></a>00127       <span class="keywordflow">if</span> (problem_size < tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89" title="Returns the maximum dimension of the Krylov space before restart.">krylov_dim</a>())
-<a name="l00128"></a>00128         krylov_dim = problem_size; <span class="comment">//A Krylov space larger than the matrix would lead to seg-faults (mathematically, error is certain to be zero already)</span>
-<a name="l00129"></a>00129       
-<a name="l00130"></a>00130       VectorType res(problem_size);
-<a name="l00131"></a>00131       VectorType v_k_tilde(problem_size);
-<a name="l00132"></a>00132       VectorType v_k_tilde_temp(problem_size);
-<a name="l00133"></a>00133       
-<a name="l00134"></a>00134       std::vector< std::vector<CPU_ScalarType> > R(krylov_dim);
-<a name="l00135"></a>00135       std::vector<CPU_ScalarType> projection_rhs(krylov_dim);
-<a name="l00136"></a>00136       std::vector<VectorType> U(krylov_dim);
-<a name="l00137"></a>00137 
-<a name="l00138"></a>00138       <span class="keyword">const</span> CPU_ScalarType gpu_scalar_minus_1 = <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(-1);    <span class="comment">//representing the scalar '-1' on the GPU. Prevents blocking write operations</span>
-<a name="l00139"></a>00139       <span class="keyword">const</span> CPU_ScalarType gpu_scalar_1 = <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(1);    <span class="comment">//representing the scalar '1' on the GPU. Prevents blocking write operations</span>
-<a name="l00140"></a>00140       <span class="keyword">const</span> CPU_ScalarType gpu_scalar_2 = <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(2);    <span class="comment">//representing the scalar '2' on the GPU. Prevents blocking write operations</span>
-<a name="l00141"></a>00141       
-<a name="l00142"></a>00142       CPU_ScalarType norm_rhs = <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">viennacl::linalg::norm_2</a>(rhs);
-<a name="l00143"></a>00143       
-<a name="l00144"></a>00144       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k;
-<a name="l00145"></a>00145       <span class="keywordflow">for</span> (k = 0; k < krylov_dim; ++k)
-<a name="l00146"></a>00146       {
-<a name="l00147"></a>00147         R[k].resize(tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89" title="Returns the maximum dimension of the Krylov space before restart.">krylov_dim</a>()); 
-<a name="l00148"></a>00148         <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">viennacl::tools::traits::resize</a>(U[k], problem_size);
-<a name="l00149"></a>00149       }
-<a name="l00150"></a>00150 
-<a name="l00151"></a>00151       <span class="comment">//std::cout << "Starting GMRES..." << std::endl;</span>
-<a name="l00152"></a>00152       tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>(0);
-<a name="l00153"></a>00153 
-<a name="l00154"></a>00154       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> it = 0; it <= tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a16290e7b3ac1b41c490bbcf2837937a8" title="Returns the maximum number of GMRES restarts.">max_restarts</a>(); ++it)
-<a name="l00155"></a>00155       {
-<a name="l00156"></a>00156         res = rhs;
-<a name="l00157"></a>00157         res -= <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, result);  <span class="comment">//initial guess zero</span>
-<a name="l00158"></a>00158         precond.apply(res);
-<a name="l00159"></a>00159         
-<a name="l00160"></a>00160         CPU_ScalarType rho_0 = <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">viennacl::linalg::norm_2</a>(res); 
-<a name="l00161"></a>00161         CPU_ScalarType rho = <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(1.0);
-<a name="l00162"></a>00162 
-<a name="l00163"></a>00163         <span class="keywordflow">if</span> (rho_0 / norm_rhs < tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>())
-<a name="l00164"></a>00164         {
-<a name="l00165"></a>00165           <span class="comment">//std::cout << "Allowed Error reached at begin of loop" << std::endl;</span>
-<a name="l00166"></a>00166           tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(rho_0 / norm_rhs);
-<a name="l00167"></a>00167           <span class="keywordflow">return</span> result;
-<a name="l00168"></a>00168         }
-<a name="l00169"></a>00169 
-<a name="l00170"></a>00170         res /= rho_0;
-<a name="l00171"></a>00171         <span class="keywordflow">for</span> (k=0; k<krylov_dim; ++k)
-<a name="l00172"></a>00172         {
-<a name="l00173"></a>00173           <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(R[k]);
-<a name="l00174"></a>00174           <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(U[k]);
-<a name="l00175"></a>00175           R[k].resize(krylov_dim); 
-<a name="l00176"></a>00176           <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">viennacl::tools::traits::resize</a>(U[k], problem_size);
-<a name="l00177"></a>00177         }
-<a name="l00178"></a>00178 
-<a name="l00179"></a>00179         <span class="keywordflow">for</span> (k = 0; k < krylov_dim; ++k)
-<a name="l00180"></a>00180         {
-<a name="l00181"></a>00181           tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>( tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>() + 1 ); <span class="comment">//increase iteration counter</span>
-<a name="l00182"></a>00182 
-<a name="l00183"></a>00183           <span class="comment">//compute v_k = A * v_{k-1} via Householder matrices</span>
-<a name="l00184"></a>00184           <span class="keywordflow">if</span> (k == 0)
-<a name="l00185"></a>00185           {
-<a name="l00186"></a>00186             v_k_tilde = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, res);
-<a name="l00187"></a>00187             precond.apply(v_k_tilde);
-<a name="l00188"></a>00188           }
-<a name="l00189"></a>00189           <span class="keywordflow">else</span>
-<a name="l00190"></a>00190           {
-<a name="l00191"></a>00191             <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(v_k_tilde);
-<a name="l00192"></a>00192             v_k_tilde[k-1] = gpu_scalar_1;
-<a name="l00193"></a>00193             <span class="comment">//Householder rotations part 1</span>
-<a name="l00194"></a>00194             <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = k-1; i > -1; --i)
-<a name="l00195"></a>00195               v_k_tilde -= U[i] * (<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(U[i], v_k_tilde) * gpu_scalar_2);
-<a name="l00196"></a>00196 
-<a name="l00197"></a>00197             v_k_tilde_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, v_k_tilde);
-<a name="l00198"></a>00198             precond.apply(v_k_tilde_temp);
-<a name="l00199"></a>00199             v_k_tilde = v_k_tilde_temp;
-<a name="l00200"></a>00200 
-<a name="l00201"></a>00201             <span class="comment">//Householder rotations part 2</span>
-<a name="l00202"></a>00202             <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < k; ++i)
-<a name="l00203"></a>00203               v_k_tilde -= U[i] * (<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(U[i], v_k_tilde) * gpu_scalar_2);
-<a name="l00204"></a>00204           }
-<a name="l00205"></a>00205 
-<a name="l00206"></a>00206           <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(U[k]);
-<a name="l00207"></a>00207           <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">viennacl::tools::traits::resize</a>(U[k], problem_size);
-<a name="l00208"></a>00208           <span class="comment">//copy first k entries from v_k_tilde to U[k]:</span>
-<a name="l00209"></a>00209           gmres_copy_helper(v_k_tilde, U[k], k);
-<a name="l00210"></a>00210           
-<a name="l00211"></a>00211           U[k][k] = std::sqrt( <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(v_k_tilde, v_k_tilde) - <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(U[k], U[k]) );
-<a name="l00212"></a>00212 
-<a name="l00213"></a>00213           <span class="comment">//copy first k+1 entries from U[k] to R[k]</span>
-<a name="l00214"></a>00214           gmres_copy_helper(U[k], R[k], k+1);
-<a name="l00215"></a>00215           
-<a name="l00216"></a>00216           U[k] -= v_k_tilde;
-<a name="l00217"></a>00217           U[k] *= gpu_scalar_minus_1 / <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">viennacl::linalg::norm_2</a>( U[k] );
-<a name="l00218"></a>00218 
-<a name="l00219"></a>00219           res -= U[k] * (<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>( U[k], res ) * gpu_scalar_2);
-<a name="l00220"></a>00220 
-<a name="l00221"></a>00221           projection_rhs[k] = res[k];
-<a name="l00222"></a>00222           rho *= std::sin( std::acos(projection_rhs[k] / rho) );
-<a name="l00223"></a>00223 
-<a name="l00224"></a>00224           <span class="keywordflow">if</span> (std::fabs(rho * rho_0 / norm_rhs) < tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>())
-<a name="l00225"></a>00225           {
-<a name="l00226"></a>00226             <span class="comment">//std::cout << "Krylov space big enough" << endl;</span>
-<a name="l00227"></a>00227             tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>( std::fabs(rho*rho_0 / norm_rhs) );
-<a name="l00228"></a>00228             <span class="keywordflow">break</span>;
-<a name="l00229"></a>00229           }
-<a name="l00230"></a>00230           
-<a name="l00231"></a>00231         } <span class="comment">// for k</span>
-<a name="l00232"></a>00232         
-<a name="l00233"></a>00233         <span class="comment">//inplace solution of the upper triangular matrix:</span>
-<a name="l00234"></a>00234         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=k-1; i>-1; --i)
-<a name="l00235"></a>00235         {
-<a name="l00236"></a>00236           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j=i+1; j<k; ++j)
-<a name="l00237"></a>00237             <span class="comment">//temp_rhs[i] -= R[i][j] * temp_rhs[j];   //if R is not transposed</span>
-<a name="l00238"></a>00238             projection_rhs[i] -= R[j][i] * projection_rhs[j];     <span class="comment">//R is transposed</span>
-<a name="l00239"></a>00239             
-<a name="l00240"></a>00240           projection_rhs[i] /= R[i][i];
-<a name="l00241"></a>00241         }
-<a name="l00242"></a>00242         
-<a name="l00243"></a>00243         res *= projection_rhs[0];
-<a name="l00244"></a>00244         
-<a name="l00245"></a>00245         <span class="keywordflow">if</span> (k > 0)
-<a name="l00246"></a>00246         {
-<a name="l00247"></a>00247           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < k-1; ++i)
-<a name="l00248"></a>00248           {
-<a name="l00249"></a>00249             res[i] += projection_rhs[i+1];
-<a name="l00250"></a>00250           }
-<a name="l00251"></a>00251         }
-<a name="l00252"></a>00252 
-<a name="l00253"></a>00253         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = k-1; i > -1; --i)
-<a name="l00254"></a>00254           res -= U[i] * (<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(U[i], res) * gpu_scalar_2);
-<a name="l00255"></a>00255 
-<a name="l00256"></a>00256         res *= rho_0;
-<a name="l00257"></a>00257         result += res;
-<a name="l00258"></a>00258 
-<a name="l00259"></a>00259         <span class="keywordflow">if</span> ( std::fabs(rho*rho_0 / norm_rhs) < tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>() )
-<a name="l00260"></a>00260         {
-<a name="l00261"></a>00261           <span class="comment">//std::cout << "Allowed Error reached at end of loop" << std::endl;</span>
-<a name="l00262"></a>00262           tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(std::fabs(rho*rho_0 / norm_rhs));
-<a name="l00263"></a>00263           <span class="keywordflow">return</span> result;
-<a name="l00264"></a>00264         }
-<a name="l00265"></a>00265 
-<a name="l00266"></a>00266         res = rhs;
-<a name="l00267"></a>00267         res -= <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, result);
-<a name="l00268"></a>00268         <span class="comment">//std::cout << "norm_2(r)=" << norm_2(r) << std::endl;</span>
-<a name="l00269"></a>00269         <span class="comment">//std::cout << "std::abs(rho*rho_0)=" << std::abs(rho*rho_0) << std::endl;</span>
-<a name="l00270"></a>00270         <span class="comment">//std::cout << r << std::endl; </span>
-<a name="l00271"></a>00271 
-<a name="l00272"></a>00272         tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(std::fabs(rho*rho_0));
-<a name="l00273"></a>00273       }
-<a name="l00274"></a>00274 
-<a name="l00275"></a>00275       <span class="keywordflow">return</span> result;
-<a name="l00276"></a>00276     }
-<a name="l00277"></a>00277 
-<a name="l00280"></a>00280     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00281"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ad590c4eadb76eea1a806c3c4c026ba66">00281</a>     VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html" title="A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the solve() func...">gmres_tag</a> <span class="keyword">const</span> & tag)
-<a name="l00282"></a>00282     {
-<a name="l00283"></a>00283       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(matrix, rhs, tag, <a class="code" href="classviennacl_1_1linalg_1_1no__precond.html" title="A tag class representing the use of no preconditioner.">no_precond</a>());
-<a name="l00284"></a>00284     }
-<a name="l00285"></a>00285 
-<a name="l00286"></a>00286 
-<a name="l00287"></a>00287   }
-<a name="l00288"></a>00288 }
-<a name="l00289"></a>00289 
-<a name="l00290"></a>00290 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/handle_8hpp.html b/doc/doxygen/html/handle_8hpp.html
deleted file mode 100644
index 38833aa..0000000
--- a/doc/doxygen/html/handle_8hpp.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/handle.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/handle.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include <CL/cl.h></code><br/>
-<code>#include <assert.h></code><br/>
-<code>#include <string></code><br/>
-<code>#include <iostream></code><br/>
-<code>#include "<a class="el" href="error_8hpp_source.html">viennacl/ocl/error.hpp</a>"</code><br/>
-
-<p><a href="handle_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">handle_inc_dec_helper< OCL_TYPE ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper for OpenCL reference counting used by class handle.  <a href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">handle_inc_dec_helper< cl_mem ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">handle_inc_dec_helper< cl_program ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">handle_inc_dec_helper< cl_kernel ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">handle_inc_dec_helper< cl_command_queue ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">handle_inc_dec_helper< cl_context ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle< OCL_TYPE ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Handle class the effectively represents a smart pointer for OpenCL handles.  <a href="classviennacl_1_1ocl_1_1handle.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/handle_8hpp_source.html b/doc/doxygen/html/handle_8hpp_source.html
deleted file mode 100644
index fd51009..0000000
--- a/doc/doxygen/html/handle_8hpp_source.html
+++ /dev/null
@@ -1,214 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/handle.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/handle.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="handle_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_HANDLE_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_HANDLE_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00018"></a>00018 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#else</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#endif</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <assert.h></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <string></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <iostream></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="error_8hpp.html" title="Error handling for the OpenCL layer of ViennaCL.">viennacl/ocl/error.hpp</a>"</span>
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>viennacl
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031   <span class="keyword">namespace </span>ocl
-<a name="l00032"></a>00032   {
-<a name="l00036"></a>00036     <span class="keyword">template</span><<span class="keyword">class</span> OCL_TYPE>
-<a name="l00037"></a><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">00037</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html" title="Helper for OpenCL reference counting used by class handle.">handle_inc_dec_helper</a>
-<a name="l00038"></a>00038     {
-<a name="l00039"></a>00039       <span class="keyword">typedef</span> <span class="keyword">typename</span> OCL_TYPE::ERROR_TEMPLATE_ARGUMENT_FOR_CLASS_INVALID   ErrorType;
-<a name="l00040"></a>00040     };
-<a name="l00041"></a>00041     
-<a name="l00042"></a>00042     
-<a name="l00043"></a>00043     <span class="comment">//cl_mem:</span>
-<a name="l00044"></a>00044     <span class="keyword">template</span> <>
-<a name="l00045"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">00045</a>     <span class="keyword">struct </span><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html" title="Helper for OpenCL reference counting used by class handle.">handle_inc_dec_helper</a><cl_mem>
-<a name="l00046"></a>00046     {
-<a name="l00047"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#ae60134f01033d6efe66718eaf8435296">00047</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> inc(cl_mem & something)
-<a name="l00048"></a>00048       {
-<a name="l00049"></a>00049         cl_int err = clRetainMemObject(something);
-<a name="l00050"></a>00050         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00051"></a>00051       }
-<a name="l00052"></a>00052       
-<a name="l00053"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#a7e9e140199f7ba174f62477b2fb90366">00053</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> dec(cl_mem & something)
-<a name="l00054"></a>00054       {
-<a name="l00055"></a>00055 <span class="preprocessor">        #ifndef __APPLE__</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span>        cl_int err = clReleaseMemObject(something);
-<a name="l00057"></a>00057         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00058"></a>00058 <span class="preprocessor">        #endif</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span>      }
-<a name="l00060"></a>00060     };
-<a name="l00061"></a>00061     
-<a name="l00062"></a>00062     <span class="comment">//cl_program:</span>
-<a name="l00063"></a>00063     <span class="keyword">template</span> <>
-<a name="l00064"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">00064</a>     <span class="keyword">struct </span><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html" title="Helper for OpenCL reference counting used by class handle.">handle_inc_dec_helper</a><cl_program>
-<a name="l00065"></a>00065     {
-<a name="l00066"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#aea5d3b62ea9f881b45651e6a7d842fed">00066</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> inc(cl_program & something)
-<a name="l00067"></a>00067       {
-<a name="l00068"></a>00068         cl_int err = clRetainProgram(something);
-<a name="l00069"></a>00069         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00070"></a>00070       }
-<a name="l00071"></a>00071       
-<a name="l00072"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#a8a5c0f9dc62b768106e52e66b79aa4b9">00072</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> dec(cl_program & something)
-<a name="l00073"></a>00073       {
-<a name="l00074"></a>00074 <span class="preprocessor">        #ifndef __APPLE__</span>
-<a name="l00075"></a>00075 <span class="preprocessor"></span>        cl_int err = clReleaseProgram(something);
-<a name="l00076"></a>00076         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00077"></a>00077 <span class="preprocessor">        #endif</span>
-<a name="l00078"></a>00078 <span class="preprocessor"></span>      }
-<a name="l00079"></a>00079     };
-<a name="l00080"></a>00080     
-<a name="l00081"></a>00081     <span class="comment">//cl_kernel:</span>
-<a name="l00082"></a>00082     <span class="keyword">template</span> <>
-<a name="l00083"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">00083</a>     <span class="keyword">struct </span><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html" title="Helper for OpenCL reference counting used by class handle.">handle_inc_dec_helper</a><cl_kernel>
-<a name="l00084"></a>00084     {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#afb9dc7b00575004c1144b3a990497a87">00085</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> inc(cl_kernel & something)
-<a name="l00086"></a>00086       {
-<a name="l00087"></a>00087         cl_int err = clRetainKernel(something);
-<a name="l00088"></a>00088         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00089"></a>00089       }
-<a name="l00090"></a>00090       
-<a name="l00091"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#a0fc901ecaa7b205e0e051c2f5d43d9f4">00091</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> dec(cl_kernel & something)
-<a name="l00092"></a>00092       {
-<a name="l00093"></a>00093 <span class="preprocessor">        #ifndef __APPLE__</span>
-<a name="l00094"></a>00094 <span class="preprocessor"></span>        cl_int err = clReleaseKernel(something);
-<a name="l00095"></a>00095         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00096"></a>00096 <span class="preprocessor">        #endif</span>
-<a name="l00097"></a>00097 <span class="preprocessor"></span>      }
-<a name="l00098"></a>00098     };
-<a name="l00099"></a>00099 
-<a name="l00100"></a>00100     <span class="comment">//cl_command_queue:</span>
-<a name="l00101"></a>00101     <span class="keyword">template</span> <>
-<a name="l00102"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">00102</a>     <span class="keyword">struct </span><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html" title="Helper for OpenCL reference counting used by class handle.">handle_inc_dec_helper</a><cl_command_queue>
-<a name="l00103"></a>00103     {
-<a name="l00104"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#addb17e263480ba044f2c38997192344c">00104</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> inc(cl_command_queue & something)
-<a name="l00105"></a>00105       {
-<a name="l00106"></a>00106         cl_int err = clRetainCommandQueue(something);
-<a name="l00107"></a>00107         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00108"></a>00108       }
-<a name="l00109"></a>00109       
-<a name="l00110"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#abd0ea0583c2413dbfd45c14d33044258">00110</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> dec(cl_command_queue & something)
-<a name="l00111"></a>00111       {
-<a name="l00112"></a>00112 <span class="preprocessor">        #ifndef __APPLE__</span>
-<a name="l00113"></a>00113 <span class="preprocessor"></span>        cl_int err = clReleaseCommandQueue(something);
-<a name="l00114"></a>00114         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00115"></a>00115 <span class="preprocessor">        #endif</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span>      }
-<a name="l00117"></a>00117     };
-<a name="l00118"></a>00118     
-<a name="l00119"></a>00119     <span class="comment">//cl_context:</span>
-<a name="l00120"></a>00120     <span class="keyword">template</span> <>
-<a name="l00121"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">00121</a>     <span class="keyword">struct </span><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html" title="Helper for OpenCL reference counting used by class handle.">handle_inc_dec_helper</a><cl_context>
-<a name="l00122"></a>00122     {
-<a name="l00123"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a006046d51819d0443dbf6426c4c89bd2">00123</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> inc(cl_context & something)
-<a name="l00124"></a>00124       {
-<a name="l00125"></a>00125         cl_int err = clRetainContext(something);
-<a name="l00126"></a>00126         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00127"></a>00127       }
-<a name="l00128"></a>00128       
-<a name="l00129"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a4bae375e232db0bdcd4a202b39c19816">00129</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> dec(cl_context & something)
-<a name="l00130"></a>00130       {
-<a name="l00131"></a>00131 <span class="preprocessor">        #ifndef __APPLE__</span>
-<a name="l00132"></a>00132 <span class="preprocessor"></span>        cl_int err = clReleaseContext(something);
-<a name="l00133"></a>00133         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00134"></a>00134 <span class="preprocessor">        #endif</span>
-<a name="l00135"></a>00135 <span class="preprocessor"></span>      }
-<a name="l00136"></a>00136     };
-<a name="l00137"></a>00137     
-<a name="l00139"></a>00139     <span class="keyword">template</span><<span class="keyword">class</span> OCL_TYPE>
-<a name="l00140"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html">00140</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a>
-<a name="l00141"></a>00141     {
-<a name="l00142"></a>00142     <span class="keyword">public</span>:
-<a name="l00143"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">00143</a>       <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>() : something(0) {}
-<a name="l00144"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#af4d4001df29df561a0c46de3a8b87566">00144</a>       <a class="code" href="classviennacl_1_1ocl_1_1handle.html#af4d4001df29df561a0c46de3a8b87566">handle</a>(<span class="keyword">const</span> OCL_TYPE & _something) : something(_something) {}
-<a name="l00145"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#a0221469d9ed43a30b1663b0cd63ffc9d">00145</a>       <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a0221469d9ed43a30b1663b0cd63ffc9d">handle</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a> & h) : something(h.something) { <span class="keywordflow">if</span> (something != 0) <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>(); }
-<a name="l00146"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#acf40b88db4c738c2b2a7f791cf978414">00146</a>       <a class="code" href="classviennacl_1_1ocl_1_1handle.html#acf40b88db4c738c2b2a7f791cf978414">~handle</a>() { <span class="keywordflow">if</span> (something != 0) <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a" title="Manually decrement the OpenCL reference count. Typically called automatically, but might be useful wi...">dec</a>(); }
-<a name="l00147"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#ac8c16c2f06f9b8407963c8d5b627cd44">00147</a>       <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a> & <a class="code" href="classviennacl_1_1ocl_1_1handle.html#ac8c16c2f06f9b8407963c8d5b627cd44">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a> & h)
-<a name="l00148"></a>00148       {
-<a name="l00149"></a>00149         <span class="keywordflow">if</span> (something != 0) <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a" title="Manually decrement the OpenCL reference count. Typically called automatically, but might be useful wi...">dec</a>();
-<a name="l00150"></a>00150         something = h.something;
-<a name="l00151"></a>00151         <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>();
-<a name="l00152"></a>00152         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00153"></a>00153       }
-<a name="l00154"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#afe71aac8199101eb7e5f83a8a08e196b">00154</a>       <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a> & <a class="code" href="classviennacl_1_1ocl_1_1handle.html#ac8c16c2f06f9b8407963c8d5b627cd44">operator=</a>(<span class="keyword">const</span> OCL_TYPE & _something)
-<a name="l00155"></a>00155       {
-<a name="l00156"></a>00156         <span class="keywordflow">if</span> (something != 0) <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a" title="Manually decrement the OpenCL reference count. Typically called automatically, but might be useful wi...">dec</a>();
-<a name="l00157"></a>00157         something = _something;
-<a name="l00158"></a>00158         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00159"></a>00159       }
-<a name="l00160"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#a0617dee4fea8b9ca2a668b73b6814a52">00160</a>       <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a0617dee4fea8b9ca2a668b73b6814a52">operator OCL_TYPE</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> something; }
-<a name="l00161"></a>00161       <span class="comment">//const OCL_TYPE & get() const { return something; }</span>
-<a name="l00162"></a>00162       
-<a name="l00164"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#aca2a2fe50e9519f31c07e34d56a2a5eb">00164</a>       <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a> & <a class="code" href="classviennacl_1_1ocl_1_1handle.html#aca2a2fe50e9519f31c07e34d56a2a5eb" title="Swaps the OpenCL handle of two handle objects.">swap</a>(<a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a> & other)
-<a name="l00165"></a>00165       {
-<a name="l00166"></a>00166         OCL_TYPE tmp = other.something;
-<a name="l00167"></a>00167         other.something = this->something;
-<a name="l00168"></a>00168         this->something = tmp;
-<a name="l00169"></a>00169         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00170"></a>00170       }
-<a name="l00171"></a>00171       
-<a name="l00173"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd">00173</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>() { <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">handle_inc_dec_helper<OCL_TYPE>::inc</a>(something); };
-<a name="l00175"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a">00175</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a" title="Manually decrement the OpenCL reference count. Typically called automatically, but might be useful wi...">dec</a>() { <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a" title="Manually decrement the OpenCL reference count. Typically called automatically, but might be useful wi...">handle_inc_dec_helper<OCL_TYPE>::dec</a>(something); };
-<a name="l00176"></a>00176     <span class="keyword">private</span>:
-<a name="l00177"></a>00177       OCL_TYPE something;
-<a name="l00178"></a>00178     };
-<a name="l00179"></a>00179 
-<a name="l00180"></a>00180     
-<a name="l00181"></a>00181   } <span class="comment">//namespace ocl</span>
-<a name="l00182"></a>00182 } <span class="comment">//namespace viennacl</span>
-<a name="l00183"></a>00183 
-<a name="l00184"></a>00184 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/hierarchy.html b/doc/doxygen/html/hierarchy.html
deleted file mode 100644
index d646843..0000000
--- a/doc/doxygen/html/hierarchy.html
+++ /dev/null
@@ -1,290 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Hierarchical Index</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>Class Hierarchy</h1>  </div>
-</div>
-<div class="contents">
-This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
-<li><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1backend.html">backend< dummy ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a></li>
-<li><a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a></li>
-<li><a class="el" href="structviennacl_1_1column__major.html">column_major</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a></li>
-<li><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix< SCALARTYPE, ALIGNMENT ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">compressed_matrix< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">compressed_matrix< double, 4 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">compressed_matrix< double, 8 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">compressed_matrix< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">compressed_matrix< float, 4 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">compressed_matrix< float, 8 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER< T ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">CONST_REMOVER< const T ></a></li>
-<li><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a></li>
-<li><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter< SCALARTYPE ></a><ul>
-<li><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter< SCALARTYPE ></a></li>
-</ul>
-</li>
-<li><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a><ul>
-<li><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator< SCALARTYPE, ALIGNMENT ></a></li>
-</ul>
-</li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a></li>
-<li><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">coordinate_matrix< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">coordinate_matrix< double, 128 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">coordinate_matrix< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">coordinate_matrix< float, 128 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">CPU_SCALAR_TYPE_DEDUCER< T ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">CPU_SCALAR_TYPE_DEDUCER< double ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">CPU_SCALAR_TYPE_DEDUCER< float ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">DOUBLE_PRECISION_CHECKER< ScalarType ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">DOUBLE_PRECISION_CHECKER< double ></a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1enable__if.html">enable_if< b, T ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">enable_if< false, T ></a></li>
-<li><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy< SCALARTYPE ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">error_checker< T ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html">first_letter_of_type< T ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">first_letter_of_type< double ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">first_letter_of_type< float ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle< OCL_TYPE ></a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">handle_inc_dec_helper< OCL_TYPE ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">handle_inc_dec_helper< cl_command_queue ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">handle_inc_dec_helper< cl_context ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">handle_inc_dec_helper< cl_kernel ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">handle_inc_dec_helper< cl_mem ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">handle_inc_dec_helper< cl_program ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond< MatrixType ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a></li>
-<li><a class="el" href="structviennacl_1_1is__eigen.html">is_eigen< Tag ></a></li>
-<li><a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">is_eigen< viennacl::tag_eigen ></a></li>
-<li><a class="el" href="structviennacl_1_1is__mtl4.html">is_mtl4< Tag ></a></li>
-<li><a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">is_mtl4< viennacl::tag_mtl4 ></a></li>
-<li><a class="el" href="structviennacl_1_1is__stl.html">is_stl< Tag ></a></li>
-<li><a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">is_stl< viennacl::tag_stl ></a></li>
-<li><a class="el" href="structviennacl_1_1is__ublas.html">is_ublas< Tag ></a></li>
-<li><a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">is_ublas< viennacl::tag_ublas ></a></li>
-<li><a class="el" href="structviennacl_1_1is__viennacl.html">is_viennacl< Tag ></a></li>
-<li><a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">is_viennacl< viennacl::tag_viennacl ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond< MatrixType ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html">lower_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a></li>
-<li><a class="el" href="classviennacl_1_1matrix.html">matrix< SCALARTYPE, F, ALIGNMENT ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">matrix_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">matrix_col< double, 16 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">matrix_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">matrix_col< float, 16 ></a></li>
-<li><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression< LHS, RHS, OP ></a></li>
-<li><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator< ROWCOL, MATRIXTYPE ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">matrix_prod_col_col_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">matrix_prod_col_col_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">matrix_prod_col_col_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">matrix_prod_col_col_row< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">matrix_prod_col_row_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">matrix_prod_col_row_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">matrix_prod_col_row_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">matrix_prod_col_row_row< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">matrix_prod_row_col_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">matrix_prod_row_col_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">matrix_prod_row_col_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">matrix_prod_row_col_row< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">matrix_prod_row_row_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">matrix_prod_row_row_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">matrix_prod_row_row_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">matrix_prod_row_row_row< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">matrix_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">matrix_row< double, 16 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">matrix_row< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">matrix_row< float, 16 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">matrix_solve_col_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">matrix_solve_col_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">matrix_solve_col_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">matrix_solve_col_row< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">matrix_solve_row_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">matrix_solve_row_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">matrix_solve_row_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">matrix_solve_row_row< float, 1 ></a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">no_precond</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype< T ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a></li>
-<li><a class="el" href="structviennacl_1_1row__major.html">row_major</a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling< MatrixType ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a></li>
-<li><a class="el" href="classviennacl_1_1scalar.html">scalar< TYPE ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">scalar< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">scalar< float, 1 ></a></li>
-<li><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression< LHS, RHS, OP ></a></li>
-<li><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a></li>
-<li><a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a></li>
-<li><a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a></li>
-<li><a class="el" href="structviennacl_1_1tag__none.html">tag_none</a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of.html">tag_of< Sequence, Active ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">tag_of< std::vector< std::vector< T, A >, A > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">tag_of< std::vector< T, A > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::compressed_matrix< T, I > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::coordinate_matrix< T, I > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">tag_of< viennacl::matrix< T, F, alignment > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">tag_of< viennacl::vector< T, alignment > ></a></li>
-<li><a class="el" href="structviennacl_1_1tag__stl.html">tag_stl</a></li>
-<li><a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a></li>
-<li><a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1to__string.html">to_string< T ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">to_string< double ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">to_string< float ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">unit_lower_tag</a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">unit_upper_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">upper_tag</a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type< T ></a></li>
-<li><a class="el" href="classviennacl_1_1vector.html">vector< SCALARTYPE, ALIGNMENT ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">vector< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">vector< double, 16 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">vector< double, 4 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">vector< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">vector< float, 16 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">vector< float, 4 ></a></li>
-<li><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression< LHS, RHS, OP ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR< LHS, RHS ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL< LHS, RHS ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">VECTOR_SIZE_DEDUCER< LHS, RHS, OP ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/ilu_8hpp.html b/doc/doxygen/html/ilu_8hpp.html
deleted file mode 100644
index cde1d13..0000000
--- a/doc/doxygen/html/ilu_8hpp.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/ilu.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/ilu.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementations of incomplete factorization preconditioners.  
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <cmath></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="ilu_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for incomplete LU factorization with threshold (ILUT).  <a href="classviennacl_1_1linalg_1_1ilut__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond< MatrixType ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  <a href="classviennacl_1_1linalg_1_1ilut__precond.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  <a href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817">ilut_inc_row_iterator_to_row_index</a> (T &row_iter, unsigned int k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments a row iterator (iteration along increasing row indices) up to a certain row index k.  <a href="#ad81c044903c3d571c5fa1354e94ce817"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a8564080fc80b938370442ac4b9ba748f">ilut_inc_row_iterator_to_row_index</a> (<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">viennacl::tools::sparse_matrix_adapter</a>< ScalarType > &row_iter, unsigned int k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments a row iterator (iteration along increasing row indices) up to a certain row index k.  <a href="#a8564080fc80b938370442ac4b9ba748f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a85b825153bda885996e0e2986854ab77">ilut_inc_row_iterator_to_row_index</a> (<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">viennacl::tools::const_sparse_matrix_adapter</a>< ScalarType > &row_iter, unsigned int k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments a row iterator (iteration along increasing row indices) up to a certain row index k.  <a href="#a85b825153bda885996e0e2986854ab77"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename LUType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578">precondition</a> (MatrixType const &input, LUType &output, ilut_tag const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of a ILU-preconditioner with threshold.  <a href="#aa1642cbf74be37d2ae455606506dc578"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb">ilu_inplace_solve</a> (MatrixType const &mat, VectorType &vec, <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generic inplace solution of a unit lower triangular system.  <a href="#ab0726586b403c9538056414240f973eb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a8160c457245b80c37acc7f3cfcc81a8f">ilu_inplace_solve</a> (MatrixType const &mat, VectorType &vec, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generic inplace solution of a upper triangular system.  <a href="#a8160c457245b80c37acc7f3cfcc81a8f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0">ilu_lu_substitute</a> (MatrixType const &mat, VectorType &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generic LU substitution.  <a href="#afe44b3505a4625dad0b551e648f3aff0"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of incomplete factorization preconditioners. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/ilu_8hpp_source.html b/doc/doxygen/html/ilu_8hpp_source.html
deleted file mode 100644
index 838fc3a..0000000
--- a/doc/doxygen/html/ilu_8hpp_source.html
+++ /dev/null
@@ -1,370 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/ilu.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/ilu.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="ilu_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_ILU_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_ILU_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <cmath></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00026"></a>00026 
-<a name="l00027"></a>00027 <span class="preprocessor">#include <map></span>
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>viennacl
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031   <span class="keyword">namespace </span>linalg
-<a name="l00032"></a>00032   {
-<a name="l00033"></a>00033     
-<a name="l00036"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html">00036</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html" title="A tag for incomplete LU factorization with threshold (ILUT).">ilut_tag</a>
-<a name="l00037"></a>00037     {
-<a name="l00038"></a>00038       <span class="keyword">public</span>:
-<a name="l00044"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a9308c6447d14308fcfac1f83f456108a">00044</a>         <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a9308c6447d14308fcfac1f83f456108a" title="The constructor.">ilut_tag</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> entries_per_row = 10,
-<a name="l00045"></a>00045                  <span class="keywordtype">double</span> drop_tolerance = 1e-3) : _entries_per_row(entries_per_row), _drop_tolerance(drop_tolerance) {}; 
-<a name="l00046"></a>00046 
-<a name="l00047"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a146cc7a6b6e8ebb052f057416f7d356d">00047</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a146cc7a6b6e8ebb052f057416f7d356d">set_drop_tolerance</a>(<span class="keywordtype">double</span> tol)
-<a name="l00048"></a>00048         {
-<a name="l00049"></a>00049           <span class="keywordflow">if</span> (tol > 0)
-<a name="l00050"></a>00050             _drop_tolerance = tol;
-<a name="l00051"></a>00051         }
-<a name="l00052"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">00052</a>         <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">get_drop_tolerance</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _drop_tolerance; }
-<a name="l00053"></a>00053         
-<a name="l00054"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#af01a20f9ca9bdd5264128ef2f57b0b11">00054</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#af01a20f9ca9bdd5264128ef2f57b0b11">set_entries_per_row</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> e)
-<a name="l00055"></a>00055         {
-<a name="l00056"></a>00056           <span class="keywordflow">if</span> (e > 0)
-<a name="l00057"></a>00057             _entries_per_row = e;
-<a name="l00058"></a>00058         }
-<a name="l00059"></a>00059 
-<a name="l00060"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">00060</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">get_entries_per_row</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _entries_per_row; }
-<a name="l00061"></a>00061 
-<a name="l00062"></a>00062       <span class="keyword">private</span>:
-<a name="l00063"></a>00063         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _entries_per_row;
-<a name="l00064"></a>00064         <span class="keywordtype">double</span> _drop_tolerance;
-<a name="l00065"></a>00065     };
-<a name="l00066"></a>00066     
-<a name="l00067"></a>00067     
-<a name="l00075"></a>00075     <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00076"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817">00076</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817" title="Increments a row iterator (iteration along increasing row indices) up to a certain row index k...">ilut_inc_row_iterator_to_row_index</a>(T & row_iter, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k)
-<a name="l00077"></a>00077     {
-<a name="l00078"></a>00078       <span class="keywordflow">while</span> (row_iter.index1() < k)
-<a name="l00079"></a>00079         ++row_iter;
-<a name="l00080"></a>00080     }
-<a name="l00081"></a>00081     
-<a name="l00089"></a>00089     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00090"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a8564080fc80b938370442ac4b9ba748f">00090</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817" title="Increments a row iterator (iteration along increasing row indices) up to a certain row index k...">ilut_inc_row_iterator_to_row_index</a>(<a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">viennacl::tools::sparse_matrix_adapter<ScalarType></a> & row_iter, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k)
-<a name="l00091"></a>00091     {
-<a name="l00092"></a>00092       row_iter += k - row_iter.index1();
-<a name="l00093"></a>00093     }
-<a name="l00094"></a>00094     
-<a name="l00102"></a>00102     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00103"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a85b825153bda885996e0e2986854ab77">00103</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817" title="Increments a row iterator (iteration along increasing row indices) up to a certain row index k...">ilut_inc_row_iterator_to_row_index</a>(<a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">viennacl::tools::const_sparse_matrix_adapter<ScalarType></a> & row_iter, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k)
-<a name="l00104"></a>00104     {
-<a name="l00105"></a>00105       row_iter += k - row_iter.index1();
-<a name="l00106"></a>00106     }
-<a name="l00107"></a>00107     
-<a name="l00108"></a>00108     
-<a name="l00117"></a>00117     <span class="keyword">template</span><<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> LUType>
-<a name="l00118"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578">00118</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578" title="Implementation of a ILU-preconditioner with threshold.">precondition</a>(MatrixType <span class="keyword">const</span> & input, LUType & output, <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html" title="A tag for incomplete LU factorization with threshold (ILUT).">ilut_tag</a> <span class="keyword">const</span> & tag)
-<a name="l00119"></a>00119     {
-<a name="l00120"></a>00120       <span class="keyword">typedef</span> std::map<unsigned int, double>          SparseVector;
-<a name="l00121"></a>00121       <span class="keyword">typedef</span> <span class="keyword">typename</span> SparseVector::iterator         SparseVectorIterator;
-<a name="l00122"></a>00122       <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::const_iterator1    InputRowIterator;  <span class="comment">//iterate along increasing row index</span>
-<a name="l00123"></a>00123       <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::const_iterator2    InputColIterator;  <span class="comment">//iterate along increasing column index</span>
-<a name="l00124"></a>00124       <span class="keyword">typedef</span> <span class="keyword">typename</span> LUType::iterator1              OutputRowIterator;  <span class="comment">//iterate along increasing row index</span>
-<a name="l00125"></a>00125       <span class="keyword">typedef</span> <span class="keyword">typename</span> LUType::iterator2              OutputColIterator;  <span class="comment">//iterate along increasing column index</span>
-<a name="l00126"></a>00126 
-<a name="l00127"></a>00127       output.clear();
-<a name="l00128"></a>00128       assert(input.size1() == output.size1());
-<a name="l00129"></a>00129       assert(input.size2() == output.size2());
-<a name="l00130"></a>00130       output.resize(static_cast<unsigned int>(input.size1()), static_cast<unsigned int>(input.size2()), <span class="keyword">false</span>);
-<a name="l00131"></a>00131       SparseVector w;
-<a name="l00132"></a>00132       
-<a name="l00133"></a>00133       std::map<double, unsigned int> temp_map;
-<a name="l00134"></a>00134       
-<a name="l00135"></a>00135       <span class="keywordflow">for</span> (InputRowIterator row_iter = input.begin1(); row_iter != input.end1(); ++row_iter)
-<a name="l00136"></a>00136       {
-<a name="l00137"></a>00137     <span class="comment">/*    if (i%10 == 0)</span>
-<a name="l00138"></a>00138 <span class="comment">      std::cout << i << std::endl;*/</span>
-<a name="l00139"></a>00139         
-<a name="l00140"></a>00140         <span class="comment">//line 2:</span>
-<a name="l00141"></a>00141         w.clear();
-<a name="l00142"></a>00142         <span class="keywordflow">for</span> (InputColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
-<a name="l00143"></a>00143           w[static_cast<unsigned int>(col_iter.index2())] = *col_iter;
-<a name="l00144"></a>00144 
-<a name="l00145"></a>00145         <span class="comment">//line 3:</span>
-<a name="l00146"></a>00146         OutputRowIterator row_iter_out = output.begin1();
-<a name="l00147"></a>00147         <span class="keywordflow">for</span> (SparseVectorIterator k = w.begin(); k != w.end();)
-<a name="l00148"></a>00148         {
-<a name="l00149"></a>00149           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index_k = k->first;
-<a name="l00150"></a>00150           <span class="keywordflow">if</span> (index_k >= static_cast<unsigned int>(row_iter.index1()))
-<a name="l00151"></a>00151             <span class="keywordflow">break</span>;
-<a name="l00152"></a>00152           
-<a name="l00153"></a>00153           
-<a name="l00154"></a>00154           <span class="comment">//while (row_iter_out.index1() < index_k)</span>
-<a name="l00155"></a>00155           <span class="comment">//  ++row_iter_out;</span>
-<a name="l00156"></a>00156           <span class="comment">//if (row_iter_out.index1() < index_k)</span>
-<a name="l00157"></a>00157           <span class="comment">//  row_iter_out += index_k - row_iter_out.index1();</span>
-<a name="l00158"></a>00158           <a class="code" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817" title="Increments a row iterator (iteration along increasing row indices) up to a certain row index k...">ilut_inc_row_iterator_to_row_index</a>(row_iter_out, index_k);
-<a name="l00159"></a>00159           
-<a name="l00160"></a>00160           <span class="comment">//line 4:</span>
-<a name="l00161"></a>00161           <span class="keywordtype">double</span> temp = k->second / output(index_k, index_k);
-<a name="l00162"></a>00162           <span class="keywordflow">if</span> (output(index_k, index_k) == 0.0)
-<a name="l00163"></a>00163           {
-<a name="l00164"></a>00164             std::cerr << <span class="stringliteral">"ViennaCL: FATAL ERROR in ILUT(): Diagonal entry is zero in row "</span> << index_k << <span class="stringliteral">"!"</span> << std::endl;
-<a name="l00165"></a>00165           }
-<a name="l00166"></a>00166           
-<a name="l00167"></a>00167           <span class="comment">//line 5: (dropping rule to w_k)</span>
-<a name="l00168"></a>00168           <span class="keywordflow">if</span> ( fabs(temp) > tag.<a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">get_drop_tolerance</a>())
-<a name="l00169"></a>00169           {
-<a name="l00170"></a>00170             <span class="comment">//line 7:</span>
-<a name="l00171"></a>00171             <span class="keywordflow">for</span> (OutputColIterator j = row_iter_out.begin(); j != row_iter_out.end(); ++j)
-<a name="l00172"></a>00172             {
-<a name="l00173"></a>00173               <span class="keywordflow">if</span> (j.index2() > index_k) <span class="comment">//attention: manipulation of w(k->first) would invalidate iterator!</span>
-<a name="l00174"></a>00174               {
-<a name="l00175"></a>00175                 w[j.index2()] -= temp * *j;
-<a name="l00176"></a>00176               }
-<a name="l00177"></a>00177             }
-<a name="l00178"></a>00178             ++k;  <span class="comment">//attention: manipulation of w(k->first) would invalidate iterator!</span>
-<a name="l00179"></a>00179             w[index_k] = temp;<span class="comment">// - temp * A(index_k, index_k);</span>
-<a name="l00180"></a>00180           }
-<a name="l00181"></a>00181           <span class="keywordflow">else</span>
-<a name="l00182"></a>00182             ++k;
-<a name="l00183"></a>00183         } <span class="comment">//for k</span>
-<a name="l00184"></a>00184         
-<a name="l00185"></a>00185         <span class="comment">//Line 10: Apply a dropping rule to w</span>
-<a name="l00186"></a>00186         <span class="comment">//Step 1: Sort all entries:</span>
-<a name="l00187"></a>00187         temp_map.clear();
-<a name="l00188"></a>00188         <span class="keywordflow">for</span> (SparseVectorIterator k = w.begin(); k != w.end(); )
-<a name="l00189"></a>00189         {
-<a name="l00190"></a>00190           <span class="keywordflow">if</span> (fabs(k->second) < tag.<a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">get_drop_tolerance</a>())
-<a name="l00191"></a>00191           { 
-<a name="l00192"></a>00192             <span class="keywordtype">long</span> index = k->first;
-<a name="l00193"></a>00193             ++k;
-<a name="l00194"></a>00194             w.erase(index);
-<a name="l00195"></a>00195           }
-<a name="l00196"></a>00196           <span class="keywordflow">else</span>
-<a name="l00197"></a>00197           {
-<a name="l00198"></a>00198             <span class="keywordtype">double</span> temp = fabs(k->second);
-<a name="l00199"></a>00199             <span class="keywordflow">while</span> (temp_map.find(temp) != temp_map.end())
-<a name="l00200"></a>00200               temp *= 1.00000001; <span class="comment">//make entry slightly larger to maintain uniqueness of the entry</span>
-<a name="l00201"></a>00201             temp_map[temp] = k->first;
-<a name="l00202"></a>00202             ++k;
-<a name="l00203"></a>00203           }
-<a name="l00204"></a>00204         }
-<a name="l00205"></a>00205 
-<a name="l00206"></a>00206         <span class="comment">//Lines 10-12: write the largest p values to L and U</span>
-<a name="l00207"></a>00207         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> written_L = 0;
-<a name="l00208"></a>00208         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> written_U = 0;
-<a name="l00209"></a>00209         <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::map<double, unsigned int>::reverse_iterator iter = temp_map.rbegin(); iter != temp_map.rend(); ++iter)
-<a name="l00210"></a>00210         {
-<a name="l00211"></a>00211           <span class="keywordflow">if</span> (iter->second > static_cast<unsigned int>(row_iter.index1())) <span class="comment">//entry for U</span>
-<a name="l00212"></a>00212           {
-<a name="l00213"></a>00213             <span class="keywordflow">if</span> (written_U < tag.<a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">get_entries_per_row</a>())
-<a name="l00214"></a>00214             {
-<a name="l00215"></a>00215               output(static_cast<unsigned int>(row_iter.index1()), iter->second) = <span class="keyword">static_cast<</span>typename LUType::value_type<span class="keyword">></span>(w[iter->second]);
-<a name="l00216"></a>00216               ++written_U;
-<a name="l00217"></a>00217             }
-<a name="l00218"></a>00218           }
-<a name="l00219"></a>00219           <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iter->second == static_cast<unsigned int>(row_iter.index1()))
-<a name="l00220"></a>00220           {
-<a name="l00221"></a>00221             output(iter->second, iter->second) = <span class="keyword">static_cast<</span>typename LUType::value_type<span class="keyword">></span>(w[<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(row_iter.index1())]);
-<a name="l00222"></a>00222           }
-<a name="l00223"></a>00223           <span class="keywordflow">else</span> <span class="comment">//entry for L</span>
-<a name="l00224"></a>00224           {
-<a name="l00225"></a>00225             <span class="keywordflow">if</span> (written_L < tag.<a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">get_entries_per_row</a>())
-<a name="l00226"></a>00226             {
-<a name="l00227"></a>00227               output(static_cast<unsigned int>(row_iter.index1()), iter->second) = <span class="keyword">static_cast<</span>typename LUType::value_type<span class="keyword">></span>(w[iter->second]);
-<a name="l00228"></a>00228               ++written_L;
-<a name="l00229"></a>00229             }
-<a name="l00230"></a>00230           }
-<a name="l00231"></a>00231         }
-<a name="l00232"></a>00232       } <span class="comment">//for i</span>
-<a name="l00233"></a>00233     }
-<a name="l00234"></a>00234 
-<a name="l00235"></a>00235 
-<a name="l00241"></a>00241     <span class="keyword">template</span><<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00242"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb">00242</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb" title="Generic inplace solution of a unit lower triangular system.">ilu_inplace_solve</a>(MatrixType <span class="keyword">const</span> & mat, VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">viennacl::linalg::unit_lower_tag</a>)
-<a name="l00243"></a>00243     {
-<a name="l00244"></a>00244       <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::const_iterator1    InputRowIterator;  <span class="comment">//iterate along increasing row index</span>
-<a name="l00245"></a>00245       <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::const_iterator2    InputColIterator;  <span class="comment">//iterate along increasing column index</span>
-<a name="l00246"></a>00246       
-<a name="l00247"></a>00247       <span class="keywordflow">for</span> (InputRowIterator row_iter = mat.begin1(); row_iter != mat.end1(); ++row_iter)
-<a name="l00248"></a>00248       {
-<a name="l00249"></a>00249         <span class="keywordflow">for</span> (InputColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
-<a name="l00250"></a>00250         {
-<a name="l00251"></a>00251           <span class="keywordflow">if</span> (col_iter.index2() < col_iter.index1())
-<a name="l00252"></a>00252             vec[col_iter.index1()] -= *col_iter * vec[col_iter.index2()];
-<a name="l00253"></a>00253         }
-<a name="l00254"></a>00254       }
-<a name="l00255"></a>00255     }
-<a name="l00256"></a>00256 
-<a name="l00262"></a>00262     <span class="keyword">template</span><<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00263"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a8160c457245b80c37acc7f3cfcc81a8f">00263</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb" title="Generic inplace solution of a unit lower triangular system.">ilu_inplace_solve</a>(MatrixType <span class="keyword">const</span> & mat, VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">viennacl::linalg::upper_tag</a>)
-<a name="l00264"></a>00264     {
-<a name="l00265"></a>00265       <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::const_reverse_iterator1    InputRowIterator;  <span class="comment">//iterate along increasing row index</span>
-<a name="l00266"></a>00266       <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::const_iterator2            InputColIterator;  <span class="comment">//iterate along increasing column index</span>
-<a name="l00267"></a>00267       <span class="keyword">typedef</span> <span class="keyword">typename</span> VectorType::value_type                 ScalarType;
-<a name="l00268"></a>00268       
-<a name="l00269"></a>00269       ScalarType diagonal_entry = 1.0;
-<a name="l00270"></a>00270       
-<a name="l00271"></a>00271       <span class="keywordflow">for</span> (InputRowIterator row_iter = mat.rbegin1(); row_iter != mat.rend1(); ++row_iter)
-<a name="l00272"></a>00272       {
-<a name="l00273"></a>00273         <span class="keywordflow">for</span> (InputColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
-<a name="l00274"></a>00274         {
-<a name="l00275"></a>00275           <span class="keywordflow">if</span> (col_iter.index2() > col_iter.index1())
-<a name="l00276"></a>00276             vec[col_iter.index1()] -= *col_iter * vec[col_iter.index2()];
-<a name="l00277"></a>00277           <span class="keywordflow">if</span> (col_iter.index2() == col_iter.index1())
-<a name="l00278"></a>00278             diagonal_entry = *col_iter;
-<a name="l00279"></a>00279         }
-<a name="l00280"></a>00280         vec[row_iter.index1()] /= diagonal_entry;
-<a name="l00281"></a>00281       }
-<a name="l00282"></a>00282     }
-<a name="l00283"></a>00283 
-<a name="l00289"></a>00289     <span class="keyword">template</span><<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00290"></a><a class="code" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0">00290</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0" title="Generic LU substitution.">ilu_lu_substitute</a>(MatrixType <span class="keyword">const</span> & mat, VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00291"></a>00291     {
-<a name="l00292"></a>00292       <a class="code" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb" title="Generic inplace solution of a unit lower triangular system.">ilu_inplace_solve</a>(mat, vec, <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">unit_lower_tag</a>());
-<a name="l00293"></a>00293       <a class="code" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb" title="Generic inplace solution of a unit lower triangular system.">ilu_inplace_solve</a>(mat, vec, <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">upper_tag</a>());
-<a name="l00294"></a>00294     }
-<a name="l00295"></a>00295 
-<a name="l00296"></a>00296 
-<a name="l00299"></a>00299     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00300"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html">00300</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html" title="ILUT preconditioner class, can be supplied to solve()-routines.">ilut_precond</a>
-<a name="l00301"></a>00301     {
-<a name="l00302"></a>00302       <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::value_type      ScalarType;
-<a name="l00303"></a>00303       
-<a name="l00304"></a>00304       <span class="keyword">public</span>:
-<a name="l00305"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html#a1961e282ec4851df696e3d6808d1fcbe">00305</a>         <a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond</a>(MatrixType <span class="keyword">const</span> & mat, <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html" title="A tag for incomplete LU factorization with threshold (ILUT).">ilut_tag</a> <span class="keyword">const</span> & tag) : _tag(tag), LU(mat.size1())
-<a name="l00306"></a>00306         {
-<a name="l00307"></a>00307           <span class="comment">//initialize preconditioner:</span>
-<a name="l00308"></a>00308           <span class="comment">//std::cout << "Start CPU precond" << std::endl;</span>
-<a name="l00309"></a>00309           init(mat);          
-<a name="l00310"></a>00310           <span class="comment">//std::cout << "End CPU precond" << std::endl;</span>
-<a name="l00311"></a>00311         }
-<a name="l00312"></a>00312         
-<a name="l00313"></a>00313         <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00314"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">00314</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a>(VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00315"></a>00315 <span class="keyword">        </span>{
-<a name="l00316"></a>00316           <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">viennacl::tools::const_sparse_matrix_adapter<ScalarType></a> LU_const_adapter(LU);
-<a name="l00317"></a>00317           <a class="code" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0" title="Generic LU substitution.">viennacl::linalg::ilu_lu_substitute</a>(LU_const_adapter, vec);
-<a name="l00318"></a>00318         }
-<a name="l00319"></a>00319         
-<a name="l00320"></a>00320       <span class="keyword">private</span>:
-<a name="l00321"></a>00321         <span class="keywordtype">void</span> init(MatrixType <span class="keyword">const</span> & mat)
-<a name="l00322"></a>00322         {
-<a name="l00323"></a>00323           <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">viennacl::tools::sparse_matrix_adapter<ScalarType></a>       LU_adapter(LU);
-<a name="l00324"></a>00324           <a class="code" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578" title="Implementation of a ILU-preconditioner with threshold.">viennacl::linalg::precondition</a>(mat, LU_adapter, _tag);
-<a name="l00325"></a>00325         }
-<a name="l00326"></a>00326         
-<a name="l00327"></a>00327         ilut_tag <span class="keyword">const</span> & _tag;
-<a name="l00328"></a>00328         std::vector< std::map<unsigned int, ScalarType> > LU;
-<a name="l00329"></a>00329     };
-<a name="l00330"></a>00330 
-<a name="l00331"></a>00331     
-<a name="l00336"></a>00336     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00337"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">00337</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html" title="ILUT preconditioner class, can be supplied to solve()-routines.">ilut_precond</a>< <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><ScalarType, MAT_ALIGNMENT> >
-<a name="l00338"></a>00338     {
-<a name="l00339"></a>00339       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<ScalarType, MAT_ALIGNMENT></a>   <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">MatrixType</a>;
-<a name="l00340"></a>00340       
-<a name="l00341"></a>00341       <span class="keyword">public</span>:
-<a name="l00342"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a1961e282ec4851df696e3d6808d1fcbe">00342</a>         <a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">MatrixType</a> <span class="keyword">const</span> & mat, <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html" title="A tag for incomplete LU factorization with threshold (ILUT).">ilut_tag</a> <span class="keyword">const</span> & tag) : _tag(tag), LU(mat.size1())
-<a name="l00343"></a>00343         {
-<a name="l00344"></a>00344           <span class="comment">//initialize preconditioner:</span>
-<a name="l00345"></a>00345           <span class="comment">//std::cout << "Start GPU precond" << std::endl;</span>
-<a name="l00346"></a>00346           init(mat);          
-<a name="l00347"></a>00347           <span class="comment">//std::cout << "End GPU precond" << std::endl;</span>
-<a name="l00348"></a>00348         }
-<a name="l00349"></a>00349         
-<a name="l00350"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a14dbb6add8cf6b44cf240ba3020404be">00350</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a>(<a class="code" href="classviennacl_1_1vector.html">vector<ScalarType></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00351"></a>00351 <span class="keyword">        </span>{
-<a name="l00352"></a>00352           <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(vec, temp_vec);
-<a name="l00353"></a>00353           <span class="comment">//lu_substitute(LU, vec);</span>
-<a name="l00354"></a>00354           <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">viennacl::tools::const_sparse_matrix_adapter<ScalarType></a> LU_const_adapter(LU);
-<a name="l00355"></a>00355           <a class="code" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0" title="Generic LU substitution.">viennacl::linalg::ilu_lu_substitute</a>(LU_const_adapter, temp_vec);
-<a name="l00356"></a>00356           
-<a name="l00357"></a>00357           <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(temp_vec, vec);
-<a name="l00358"></a>00358         }
-<a name="l00359"></a>00359         
-<a name="l00360"></a>00360       <span class="keyword">private</span>:
-<a name="l00361"></a>00361         <span class="keywordtype">void</span> init(MatrixType <span class="keyword">const</span> & mat)
-<a name="l00362"></a>00362         {
-<a name="l00363"></a>00363           std::vector< std::map<unsigned int, ScalarType> > temp(mat.size1());
-<a name="l00364"></a>00364           <span class="comment">//std::vector< std::map<unsigned int, ScalarType> > LU_cpu(mat.size1());</span>
-<a name="l00365"></a>00365 
-<a name="l00366"></a>00366           <span class="comment">//copy to cpu:</span>
-<a name="l00367"></a>00367           <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(mat, temp);
-<a name="l00368"></a>00368           
-<a name="l00369"></a>00369           <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">viennacl::tools::const_sparse_matrix_adapter<ScalarType></a>       temp_adapter(temp);
-<a name="l00370"></a>00370           <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">viennacl::tools::sparse_matrix_adapter<ScalarType></a>       LU_adapter(LU);
-<a name="l00371"></a>00371           <a class="code" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578" title="Implementation of a ILU-preconditioner with threshold.">viennacl::linalg::precondition</a>(temp_adapter, LU_adapter, _tag);
-<a name="l00372"></a>00372           
-<a name="l00373"></a>00373           temp_vec.resize(mat.size1());
-<a name="l00374"></a>00374           
-<a name="l00375"></a>00375           <span class="comment">//copy resulting preconditioner back to gpu:</span>
-<a name="l00376"></a>00376           <span class="comment">//copy(LU_cpu, LU);</span>
-<a name="l00377"></a>00377         }
-<a name="l00378"></a>00378         
-<a name="l00379"></a>00379         ilut_tag <span class="keyword">const</span> & _tag;
-<a name="l00380"></a>00380         <span class="comment">//MatrixType LU;</span>
-<a name="l00381"></a>00381         std::vector< std::map<unsigned int, ScalarType> > LU;
-<a name="l00382"></a>00382         <span class="keyword">mutable</span> std::vector<ScalarType> temp_vec;
-<a name="l00383"></a>00383     };
-<a name="l00384"></a>00384 
-<a name="l00385"></a>00385   }
-<a name="l00386"></a>00386 }
-<a name="l00387"></a>00387 
-<a name="l00388"></a>00388 
-<a name="l00389"></a>00389 
-<a name="l00390"></a>00390 
-<a name="l00391"></a>00391 <span class="preprocessor">#endif</span>
-<a name="l00392"></a>00392 <span class="preprocessor"></span>
-<a name="l00393"></a>00393 
-<a name="l00394"></a>00394 
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/index.html b/doc/doxygen/html/index.html
deleted file mode 100644
index d20776f..0000000
--- a/doc/doxygen/html/index.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Source Code Documentation for ViennaCL 1.1.2</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li class="current"><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>Source Code Documentation for ViennaCL 1.1.2 </h1>  </div>
-</div>
-<div class="contents">
-<h3 class="version">1.1.2 </h3><p>This is the source code documentation of ViennaCL. Detailed information about the functions in ViennaCL can be found here.</p>
-<p>For a general overview over the types and functionality provided by ViennaCL, please refer to the file doc/viennacl.pdf </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/inner__prod_8hpp.html b/doc/doxygen/html/inner__prod_8hpp.html
deleted file mode 100644
index 3aa268f..0000000
--- a/doc/doxygen/html/inner__prod_8hpp.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/inner_prod.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/inner_prod.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Generic interface for the computation of inner products. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations.  
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>"</code><br/>
-
-<p><a href="inner__prod_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT1 , typename VectorT2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT1::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a> (VectorT1 const &v1, VectorT2 const &v2, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT1 >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment1, unsigned int alignment2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment1 ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment2 ><br class="typebreak"/>
-, viennacl::op_inner_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1348122d27efc695914431a7e9e15718">inner_prod</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment1 > const &vector1, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment2 > const &vector2, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment1 > >::type >::value >::type *dummy=0)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Generic interface for the computation of inner products. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/inner__prod_8hpp_source.html b/doc/doxygen/html/inner__prod_8hpp_source.html
deleted file mode 100644
index 78a3bcc..0000000
--- a/doc/doxygen/html/inner__prod_8hpp_source.html
+++ /dev/null
@@ -1,186 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/inner_prod.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/inner_prod.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="inner__prod_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_INNERPROD_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_INNERPROD_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="tag__of_8hpp.html" title="Dispatch facility for distinguishing between ublas, STL and ViennaCL types.">tag_of.hpp</a>"</span>
-<a name="l00024"></a>00024 
-<a name="l00025"></a>00025 <span class="keyword">namespace </span>viennacl
-<a name="l00026"></a>00026 {
-<a name="l00027"></a>00027   <span class="comment">//</span>
-<a name="l00028"></a>00028   <span class="comment">// generic inner_prod function</span>
-<a name="l00029"></a>00029   <span class="comment">//   uses tag dispatch to identify which algorithm</span>
-<a name="l00030"></a>00030   <span class="comment">//   should be called </span>
-<a name="l00031"></a>00031   <span class="comment">//</span>
-<a name="l00032"></a>00032   <span class="keyword">namespace </span>linalg 
-<a name="l00033"></a>00033   {
-<a name="l00034"></a>00034     
-<a name="l00035"></a>00035 <span class="preprocessor">    #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00036"></a>00036 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00037"></a>00037     <span class="comment">// EIGEN</span>
-<a name="l00038"></a>00038     <span class="comment">//</span>
-<a name="l00039"></a>00039 <span class="preprocessor">      #if defined(_MSC_VER) && _MSC_VER < 1500        //Visual Studio 2005 needs special treatment</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span>      <span class="keywordtype">float</span>
-<a name="l00041"></a>00041       <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(Eigen::VectorXf <span class="keyword">const</span> & v1,
-<a name="l00042"></a>00042                  Eigen::VectorXf <span class="keyword">const</span> & v2)
-<a name="l00043"></a>00043       {
-<a name="l00044"></a>00044         <span class="keywordflow">return</span> v1 * v2;
-<a name="l00045"></a>00045       }
-<a name="l00046"></a>00046       
-<a name="l00047"></a>00047       <span class="keywordtype">double</span>
-<a name="l00048"></a>00048       <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(Eigen::VectorXd <span class="keyword">const</span> & v1,
-<a name="l00049"></a>00049                  Eigen::VectorXd <span class="keyword">const</span> & v2)
-<a name="l00050"></a>00050       {
-<a name="l00051"></a>00051         <span class="keywordflow">return</span> v1 * v2;
-<a name="l00052"></a>00052       }
-<a name="l00053"></a>00053       
-<a name="l00054"></a>00054 <span class="preprocessor">      #else    </span>
-<a name="l00055"></a>00055 <span class="preprocessor"></span>      <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT1, <span class="keyword">typename</span> VectorT2 >
-<a name="l00056"></a>00056       <span class="keyword">typename</span> VectorT1::RealScalar
-<a name="l00057"></a>00057       <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(VectorT1 <span class="keyword">const</span>& v1, VectorT2 <span class="keyword">const</span>& v2, 
-<a name="l00058"></a>00058           <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__eigen.html" title="Meta function which checks whether a tag is tag_eigen.">viennacl::is_eigen</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT1 >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00059"></a>00059                                               >::type* dummy = 0)
-<a name="l00060"></a>00060       {
-<a name="l00061"></a>00061         <span class="comment">//std::cout << "eigen .. " << std::endl;</span>
-<a name="l00062"></a>00062         <span class="keywordflow">return</span> v1.dot(v2);
-<a name="l00063"></a>00063       }
-<a name="l00064"></a>00064 <span class="preprocessor">      #endif</span>
-<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor">    #endif</span>
-<a name="l00066"></a>00066 <span class="preprocessor"></span>    
-<a name="l00067"></a>00067 <span class="preprocessor">    #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00068"></a>00068 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00069"></a>00069     <span class="comment">// MTL4</span>
-<a name="l00070"></a>00070     <span class="comment">//</span>
-<a name="l00071"></a>00071 <span class="preprocessor">      #if defined(_MSC_VER) && _MSC_VER < 1500        //Visual Studio 2005 needs special treatment</span>
-<a name="l00072"></a>00072 <span class="preprocessor"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00073"></a>00073       ScalarType <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(mtl::dense_vector<ScalarType> <span class="keyword">const</span> & v1,
-<a name="l00074"></a>00074                             mtl::dense_vector<ScalarType> <span class="keyword">const</span> & v2)
-<a name="l00075"></a>00075       {
-<a name="l00076"></a>00076         <span class="keywordflow">return</span> mtl::dot(v1, v2);
-<a name="l00077"></a>00077       }
-<a name="l00078"></a>00078 <span class="preprocessor">      #else    </span>
-<a name="l00079"></a>00079 <span class="preprocessor"></span>      <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT1, <span class="keyword">typename</span> VectorT2 >
-<a name="l00080"></a>00080       <span class="keyword">typename</span> VectorT1::value_type
-<a name="l00081"></a>00081       <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(VectorT1 <span class="keyword">const</span>& v1, VectorT2 <span class="keyword">const</span>& v2, 
-<a name="l00082"></a>00082           <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__mtl4.html" title="Meta function which checks whether a tag is tag_mtl4.">viennacl::is_mtl4</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT1 >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00083"></a>00083                                               >::type* dummy = 0)
-<a name="l00084"></a>00084       {
-<a name="l00085"></a>00085         <span class="comment">//std::cout << "mtl4 .. " << std::endl;</span>
-<a name="l00086"></a>00086         <span class="keywordflow">return</span> mtl::dot(v1, v2);
-<a name="l00087"></a>00087       }
-<a name="l00088"></a>00088 <span class="preprocessor">      #endif</span>
-<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor">    #endif</span>
-<a name="l00090"></a>00090 <span class="preprocessor"></span>    
-<a name="l00091"></a>00091 <span class="preprocessor">    #ifdef VIENNACL_HAVE_UBLAS</span>
-<a name="l00092"></a>00092 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00093"></a>00093     <span class="comment">// UBLAS</span>
-<a name="l00094"></a>00094     <span class="comment">//</span>
-<a name="l00095"></a>00095 <span class="preprocessor">      #if defined(_MSC_VER) && _MSC_VER < 1500        //Visual Studio 2005 needs special treatment</span>
-<a name="l00096"></a>00096 <span class="preprocessor"></span>      <span class="keyword">template</span>< <span class="keyword">typename</span> ScalarType >
-<a name="l00097"></a>00097       ScalarType
-<a name="l00098"></a>00098       <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(boost::numeric::ublas::vector<ScalarType> <span class="keyword">const</span> & v1,
-<a name="l00099"></a>00099                  boost::numeric::ublas::vector<ScalarType> <span class="keyword">const</span> & v2)
-<a name="l00100"></a>00100       {
-<a name="l00101"></a>00101         <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00102"></a>00102         <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">boost::numeric::ublas::inner_prod</a>(v1, v2);
-<a name="l00103"></a>00103       }
-<a name="l00104"></a>00104 <span class="preprocessor">      #else    </span>
-<a name="l00105"></a>00105 <span class="preprocessor"></span>      <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT1, <span class="keyword">typename</span> VectorT2 >
-<a name="l00106"></a>00106       <span class="keyword">typename</span> VectorT1::value_type
-<a name="l00107"></a>00107       <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(VectorT1 <span class="keyword">const</span>& v1, VectorT2 <span class="keyword">const</span>& v2, 
-<a name="l00108"></a>00108           <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_ublas</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT1 >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00109"></a>00109                                               >::type* dummy = 0)
-<a name="l00110"></a>00110       {
-<a name="l00111"></a>00111         <span class="comment">//std::cout << "ublas .. " << std::endl;</span>
-<a name="l00112"></a>00112         <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">boost::numeric::ublas::inner_prod</a>(v1, v2);
-<a name="l00113"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">00113</a>       }
-<a name="l00114"></a>00114 <span class="preprocessor">      #endif</span>
-<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">    #endif</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span>
-<a name="l00117"></a>00117     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00118"></a>00118     <span class="comment">// STL</span>
-<a name="l00119"></a>00119     <span class="comment">//</span>
-<a name="l00120"></a>00120     <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT1, <span class="keyword">typename</span> VectorT2 >
-<a name="l00121"></a>00121     <span class="keyword">typename</span> VectorT1::value_type
-<a name="l00122"></a>00122     <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(VectorT1 <span class="keyword">const</span>& v1, VectorT2 <span class="keyword">const</span>& v2, 
-<a name="l00123"></a>00123          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_stl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT1 >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00124"></a>00124                                             >::type* dummy = 0)
-<a name="l00125"></a>00125     {
-<a name="l00126"></a>00126       assert(v1.size() == v2.size());
-<a name="l00127"></a>00127       <span class="comment">//std::cout << "stl .. " << std::endl;</span>
-<a name="l00128"></a>00128       <span class="keyword">typename</span> VectorT1::value_type result = 0;
-<a name="l00129"></a>00129       <span class="keywordflow">for</span> (<span class="keyword">typename</span> VectorT1::size_type i=0; i<v1.size(); ++i)
-<a name="l00130"></a>00130         result += v1[i] * v2[i];
-<a name="l00131"></a>00131       
-<a name="l00132"></a>00132       <span class="keywordflow">return</span> result;
-<a name="l00133"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a1348122d27efc695914431a7e9e15718">00133</a>     }
-<a name="l00134"></a>00134 
-<a name="l00135"></a>00135     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00136"></a>00136     <span class="comment">// VIENNACL</span>
-<a name="l00137"></a>00137     <span class="comment">//</span>
-<a name="l00138"></a>00138     <span class="keyword">template</span>< <span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment2 >
-<a name="l00139"></a>00139     <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment1></a>, 
-<a name="l00140"></a>00140                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment2></a>,
-<a name="l00141"></a>00141                                  viennacl::op_inner_prod >
-<a name="l00142"></a>00142     <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment1></a> <span class="keyword">const</span> & vector1, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment2></a> <span class="keyword">const</span> & vector2, 
-<a name="l00143"></a>00143          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment1></a> >::type >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00144"></a>00144                                             >::type* dummy = 0)
-<a name="l00145"></a>00145     {
-<a name="l00146"></a>00146       <span class="comment">//std::cout << "viennacl .. " << std::endl;</span>
-<a name="l00147"></a>00147       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b" title="Computes the inner product of two vectors.">viennacl::linalg::inner_prod_impl</a>(vector1, vector2);
-<a name="l00148"></a>00148     }
-<a name="l00149"></a>00149   } <span class="comment">// end namespace linalg</span>
-<a name="l00150"></a>00150 } <span class="comment">// end namespace viennacl</span>
-<a name="l00151"></a>00151 <span class="preprocessor">#endif</span>
-<a name="l00152"></a>00152 <span class="preprocessor"></span>
-<a name="l00153"></a>00153 
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/jacobi__precond_8hpp.html b/doc/doxygen/html/jacobi__precond_8hpp.html
deleted file mode 100644
index c7d8dae..0000000
--- a/doc/doxygen/html/jacobi__precond_8hpp.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/jacobi_precond.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/jacobi_precond.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementation of a simple Jacobi preconditioner.  
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <cmath></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="compressed__matrix_8hpp_source.html">viennacl/compressed_matrix.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="jacobi__precond_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for a jacobi preconditioner.  <a href="classviennacl_1_1linalg_1_1jacobi__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond< MatrixType ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  <a href="classviennacl_1_1linalg_1_1jacobi__precond.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  <a href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of a simple Jacobi preconditioner. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/jacobi__precond_8hpp_source.html b/doc/doxygen/html/jacobi__precond_8hpp_source.html
deleted file mode 100644
index baf51e8..0000000
--- a/doc/doxygen/html/jacobi__precond_8hpp_source.html
+++ /dev/null
@@ -1,202 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/jacobi_precond.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/jacobi_precond.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="jacobi__precond_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_JACOBI_PRECOND_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_JACOBI_PRECOND_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <cmath></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="compressed__matrix_8hpp.html" title="Implementation of the compressed_matrix class.">viennacl/compressed_matrix.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029 <span class="preprocessor">#include <map></span>
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033   <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034   {
-<a name="l00035"></a>00035     
-<a name="l00038"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__tag.html">00038</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1jacobi__tag.html" title="A tag for a jacobi preconditioner.">jacobi_tag</a> {};
-<a name="l00039"></a>00039     
-<a name="l00040"></a>00040 
-<a name="l00043"></a>00043     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00044"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html">00044</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html" title="Jacobi preconditioner class, can be supplied to solve()-routines.">jacobi_precond</a>
-<a name="l00045"></a>00045     {
-<a name="l00046"></a>00046       <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::value_type      ScalarType;
-<a name="l00047"></a>00047       
-<a name="l00048"></a>00048       <span class="keyword">public</span>:
-<a name="l00049"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a784aceacd83c8ffda5a601bbf332b7b3">00049</a>         <a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond</a>(MatrixType <span class="keyword">const</span> & mat, <a class="code" href="classviennacl_1_1linalg_1_1jacobi__tag.html" title="A tag for a jacobi preconditioner.">jacobi_tag</a> <span class="keyword">const</span> & tag) : system_matrix(mat)
-<a name="l00050"></a>00050         {
-<a name="l00051"></a>00051           assert(mat.size1() == mat.size2());
-<a name="l00052"></a>00052           diag_A_inv.resize(mat.size1());  <span class="comment">//resize without preserving values</span>
-<a name="l00053"></a>00053           
-<a name="l00054"></a>00054           <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator1 row_it = system_matrix.begin1();
-<a name="l00055"></a>00055                 row_it != system_matrix.end1();
-<a name="l00056"></a>00056                 ++row_it)
-<a name="l00057"></a>00057           {
-<a name="l00058"></a>00058             <span class="keywordtype">bool</span> diag_found = <span class="keyword">false</span>;
-<a name="l00059"></a>00059             <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator2 col_it = row_it.begin();
-<a name="l00060"></a>00060                   col_it != row_it.end();
-<a name="l00061"></a>00061                   ++col_it)
-<a name="l00062"></a>00062             {
-<a name="l00063"></a>00063               <span class="keywordflow">if</span> (col_it.index1() == col_it.index2())
-<a name="l00064"></a>00064               {
-<a name="l00065"></a>00065                 diag_A_inv[col_it.index1()] = <span class="keyword">static_cast<</span>ScalarType<span class="keyword">></span>(1.0) / *col_it;
-<a name="l00066"></a>00066                 diag_found = <span class="keyword">true</span>;
-<a name="l00067"></a>00067               }
-<a name="l00068"></a>00068             }
-<a name="l00069"></a>00069             <span class="keywordflow">if</span> (!diag_found)
-<a name="l00070"></a>00070               <span class="keywordflow">throw</span> <span class="stringliteral">"ViennaCL: Zero in diagonal encountered while setting up Jacobi preconditioner!"</span>;
-<a name="l00071"></a>00071           }
-<a name="l00072"></a>00072         }
-<a name="l00073"></a>00073         
-<a name="l00074"></a>00074         
-<a name="l00076"></a>00076         <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00077"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">00077</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a" title="Apply to res = b - Ax, i.e. jacobi applied vec (right hand side),.">apply</a>(VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00078"></a>00078 <span class="keyword">        </span>{
-<a name="l00079"></a>00079           assert(vec.size() == diag_A_inv.size());
-<a name="l00080"></a>00080           <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<vec.size(); ++i)
-<a name="l00081"></a>00081           {
-<a name="l00082"></a>00082             vec[i] *= diag_A_inv[i];
-<a name="l00083"></a>00083           }
-<a name="l00084"></a>00084         }
-<a name="l00085"></a>00085         
-<a name="l00086"></a>00086       <span class="keyword">private</span>:
-<a name="l00087"></a>00087         MatrixType <span class="keyword">const</span> & system_matrix;
-<a name="l00088"></a>00088         std::vector<ScalarType> diag_A_inv;
-<a name="l00089"></a>00089     };
-<a name="l00090"></a>00090 
-<a name="l00091"></a>00091     
-<a name="l00096"></a>00096     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00097"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">00097</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html" title="Jacobi preconditioner class, can be supplied to solve()-routines.">jacobi_precond</a>< <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><ScalarType, MAT_ALIGNMENT> >
-<a name="l00098"></a>00098     {
-<a name="l00099"></a>00099       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<ScalarType, MAT_ALIGNMENT></a>   <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">MatrixType</a>;
-<a name="l00100"></a>00100       
-<a name="l00101"></a>00101       <span class="keyword">public</span>:
-<a name="l00102"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a784aceacd83c8ffda5a601bbf332b7b3">00102</a>         <a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">MatrixType</a> <span class="keyword">const</span> & mat, <a class="code" href="classviennacl_1_1linalg_1_1jacobi__tag.html" title="A tag for a jacobi preconditioner.">jacobi_tag</a> <span class="keyword">const</span> & tag) : system_matrix(mat), diag_A_inv(mat.size1())
-<a name="l00103"></a>00103         {
-<a name="l00104"></a>00104           assert(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00105"></a>00105 
-<a name="l00106"></a>00106           init_gpu();
-<a name="l00107"></a>00107         }
-<a name="l00108"></a>00108           
-<a name="l00109"></a>00109         <span class="comment">/*void init_cpu()</span>
-<a name="l00110"></a>00110 <span class="comment">        {</span>
-<a name="l00111"></a>00111 <span class="comment">          </span>
-<a name="l00112"></a>00112 <span class="comment">          std::vector< std::map<unsigned int, ScalarType> > cpu_check;</span>
-<a name="l00113"></a>00113 <span class="comment">          std::vector<ScalarType> diag_A_inv_cpu(system_matrix.size1());</span>
-<a name="l00114"></a>00114 <span class="comment">          </span>
-<a name="l00115"></a>00115 <span class="comment">          copy(system_matrix, cpu_check);</span>
-<a name="l00116"></a>00116 <span class="comment">          viennacl::tools::const_sparse_matrix_adapter<ScalarType> cpu_check_adapter(cpu_check);</span>
-<a name="l00117"></a>00117 <span class="comment">          </span>
-<a name="l00118"></a>00118 <span class="comment">          for (typename viennacl::tools::const_sparse_matrix_adapter<ScalarType>::const_iterator1 row_it = cpu_check_adapter.begin1();</span>
-<a name="l00119"></a>00119 <span class="comment">                row_it != cpu_check_adapter.end1();</span>
-<a name="l00120"></a>00120 <span class="comment">                ++row_it)</span>
-<a name="l00121"></a>00121 <span class="comment">          {</span>
-<a name="l00122"></a>00122 <span class="comment">            bool diag_found = false;</span>
-<a name="l00123"></a>00123 <span class="comment">            for (typename viennacl::tools::const_sparse_matrix_adapter<ScalarType>::const_iterator2 col_it = row_it.begin();</span>
-<a name="l00124"></a>00124 <span class="comment">                  col_it != row_it.end();</span>
-<a name="l00125"></a>00125 <span class="comment">                  ++col_it)</span>
-<a name="l00126"></a>00126 <span class="comment">            {</span>
-<a name="l00127"></a>00127 <span class="comment">              if (col_it.index1() == col_it.index2())</span>
-<a name="l00128"></a>00128 <span class="comment">              {</span>
-<a name="l00129"></a>00129 <span class="comment">                diag_found = true;</span>
-<a name="l00130"></a>00130 <span class="comment">                diag_A_inv_cpu[col_it.index1()] = static_cast<ScalarType>(1.0) / *col_it;</span>
-<a name="l00131"></a>00131 <span class="comment">              }</span>
-<a name="l00132"></a>00132 <span class="comment">            }</span>
-<a name="l00133"></a>00133 <span class="comment">            if (!diag_found)</span>
-<a name="l00134"></a>00134 <span class="comment">              throw "ViennaCL: Zero in diagonal encountered while setting up Jacobi preconditioner!";</span>
-<a name="l00135"></a>00135 <span class="comment">          }</span>
-<a name="l00136"></a>00136 <span class="comment">          </span>
-<a name="l00137"></a>00137 <span class="comment">          diag_A_inv.resize(system_matrix.size1(), false);</span>
-<a name="l00138"></a>00138 <span class="comment">          viennacl::fast_copy(diag_A_inv_cpu, diag_A_inv);</span>
-<a name="l00139"></a>00139 <span class="comment">        }*/</span>
-<a name="l00140"></a>00140         
-<a name="l00141"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">00141</a>         <span class="keywordtype">void</span> init_gpu()
-<a name="l00142"></a>00142         {
-<a name="l00143"></a>00143           <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(
-<a name="l00144"></a>00144                                               viennacl::linalg::kernels::compressed_matrix<ScalarType, MAT_ALIGNMENT>::program_name(),
-<a name="l00145"></a>00145                                               <span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00146"></a>00146 
-<a name="l00147"></a>00147           <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>( k(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), 
-<a name="l00148"></a>00148                                     diag_A_inv, <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(diag_A_inv.size())) );        
-<a name="l00149"></a>00149         }
-<a name="l00150"></a>00150         
-<a name="l00151"></a>00151         
-<a name="l00152"></a>00152         <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00153"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">00153</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a" title="Apply to res = b - Ax, i.e. jacobi applied vec (right hand side),.">apply</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00154"></a>00154 <span class="keyword">        </span>{
-<a name="l00155"></a>00155           assert(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00156"></a>00156           
-<a name="l00157"></a>00157           <span class="comment">//run kernel:</span>
-<a name="l00158"></a>00158           <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<ScalarType, ALIGNMENT>::program_name(),
-<a name="l00159"></a>00159                                                                 <span class="stringliteral">"diag_precond"</span>);
-<a name="l00160"></a>00160 
-<a name="l00161"></a>00161           <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>( k(diag_A_inv, vec, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>())) );        
-<a name="l00162"></a>00162         }
-<a name="l00163"></a>00163         
-<a name="l00164"></a>00164       <span class="keyword">private</span>:
-<a name="l00165"></a>00165         MatrixType <span class="keyword">const</span> & system_matrix;
-<a name="l00166"></a>00166         <a class="code" href="classviennacl_1_1vector.html">viennacl::vector<ScalarType></a> diag_A_inv;
-<a name="l00167"></a>00167     };
-<a name="l00168"></a>00168 
-<a name="l00169"></a>00169   }
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171 
-<a name="l00172"></a>00172 
-<a name="l00173"></a>00173 
-<a name="l00174"></a>00174 
-<a name="l00175"></a>00175 <span class="preprocessor">#endif</span>
-<a name="l00176"></a>00176 <span class="preprocessor"></span>
-<a name="l00177"></a>00177 
-<a name="l00178"></a>00178 
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/kernel_8hpp.html b/doc/doxygen/html/kernel_8hpp.html
deleted file mode 100644
index 845357e..0000000
--- a/doc/doxygen/html/kernel_8hpp.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/kernel.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/kernel.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Representation of an OpenCL kernel in ViennaCL.  
-<a href="#_details">More...</a></p>
-<code>#include <CL/cl.h></code><br/>
-<code>#include "<a class="el" href="ocl_2forwards_8h_source.html">viennacl/ocl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="program_8hpp_source.html">viennacl/ocl/program.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="local__mem_8hpp_source.html">viennacl/ocl/local_mem.hpp</a>"</code><br/>
-
-<p><a href="kernel_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Represents an OpenCL kernel within ViennaCL.  <a href="classviennacl_1_1ocl_1_1kernel.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Representation of an OpenCL kernel in ViennaCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/kernel_8hpp_source.html b/doc/doxygen/html/kernel_8hpp_source.html
deleted file mode 100644
index 9a7d415..0000000
--- a/doc/doxygen/html/kernel_8hpp_source.html
+++ /dev/null
@@ -1,438 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/kernel.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/kernel.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="kernel_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_KERNEL_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_KERNEL_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#else</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="ocl_2forwards_8h.html" title="This file provides the forward declarations for the OpenCL layer of ViennaCL.">viennacl/ocl/forwards.h</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="program_8hpp.html" title="Implements an OpenCL program class for ViennaCL.">viennacl/ocl/program.hpp</a>"</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="local__mem_8hpp.html" title="A local (shared) memory object for OpenCL.">viennacl/ocl/local_mem.hpp</a>"</span>
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>viennacl
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037   <span class="keyword">namespace </span>ocl
-<a name="l00038"></a>00038   {
-<a name="l00039"></a>00039     
-<a name="l00041"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html">00041</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a>
-<a name="l00042"></a>00042     {
-<a name="l00043"></a>00043       <span class="keyword">template</span> <<span class="keyword">typename</span> KernelType>
-<a name="l00044"></a>00044       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">enqueue</a>(KernelType & k, <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> <span class="keyword">const</span> & queue);
-<a name="l00045"></a>00045       
-<a name="l00046"></a>00046       
-<a name="l00047"></a>00047     <span class="keyword">public</span>:
-<a name="l00048"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">00048</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">kernel</a>() : handle_(0)
-<a name="l00049"></a>00049       {
-<a name="l00050"></a>00050 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00051"></a>00051 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Creating kernel object (default CTOR)"</span> << std::endl;
-<a name="l00052"></a>00052 <span class="preprocessor">        #endif</span>
-<a name="l00053"></a>00053 <span class="preprocessor"></span>        set_work_size_defaults();
-<a name="l00054"></a>00054       }
-<a name="l00055"></a>00055       
-<a name="l00056"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aa94d7fe68805226e64d2b3b787f4a22c">00056</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">kernel</a>(<a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_program></a> <span class="keyword">const</span> & prog, std::string <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a836b9d82daf374fab15aac8c87eb1133">name</a>) 
-<a name="l00057"></a>00057        : handle_(0), program_(prog), name_(name), init_done_(false)
-<a name="l00058"></a>00058       {
-<a name="l00059"></a>00059 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00060"></a>00060 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Creating kernel object (full CTOR)"</span> << std::endl;
-<a name="l00061"></a>00061 <span class="preprocessor">        #endif</span>
-<a name="l00062"></a>00062 <span class="preprocessor"></span>        set_work_size_defaults();
-<a name="l00063"></a>00063       }
-<a name="l00064"></a>00064       
-<a name="l00065"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a8f86f09c238ce42f8659fb979ff760d4">00065</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">kernel</a>(<a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> <span class="keyword">const</span> & other) 
-<a name="l00066"></a>00066        : handle_(other.handle_), program_(other.program_), name_(other.name_), init_done_(other.init_done_)
-<a name="l00067"></a>00067       {
-<a name="l00068"></a>00068 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00069"></a>00069 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Creating kernel object (Copy CTOR)"</span> << std::endl;
-<a name="l00070"></a>00070 <span class="preprocessor">        #endif</span>
-<a name="l00071"></a>00071 <span class="preprocessor"></span>        local_work_size_[0] = other.local_work_size_[0];
-<a name="l00072"></a>00072         local_work_size_[1] = other.local_work_size_[1];
-<a name="l00073"></a>00073         
-<a name="l00074"></a>00074         global_work_size_[0] = other.global_work_size_[0];
-<a name="l00075"></a>00075         global_work_size_[1] = other.global_work_size_[1];
-<a name="l00076"></a>00076       }
-<a name="l00077"></a>00077       
-<a name="l00078"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a83a54825c25a4ec0cbe40577a24beb6c">00078</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a83a54825c25a4ec0cbe40577a24beb6c">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & other)
-<a name="l00079"></a>00079       {
-<a name="l00080"></a>00080 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00081"></a>00081 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Assigning kernel object"</span> << std::endl;
-<a name="l00082"></a>00082 <span class="preprocessor">        #endif</span>
-<a name="l00083"></a>00083 <span class="preprocessor"></span>        handle_ = other.handle_;
-<a name="l00084"></a>00084         program_ = other.program_;
-<a name="l00085"></a>00085         name_ = other.name_;
-<a name="l00086"></a>00086         init_done_ = other.init_done_;
-<a name="l00087"></a>00087         local_work_size_[0] = other.local_work_size_[0];
-<a name="l00088"></a>00088         local_work_size_[1] = other.local_work_size_[1];
-<a name="l00089"></a>00089         global_work_size_[0] = other.global_work_size_[0];
-<a name="l00090"></a>00090         global_work_size_[1] = other.global_work_size_[1];
-<a name="l00091"></a>00091         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00092"></a>00092       }
-<a name="l00093"></a>00093       
-<a name="l00094"></a>00094       
-<a name="l00096"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4">00096</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, cl_uint val)
-<a name="l00097"></a>00097       {
-<a name="l00098"></a>00098         init();
-<a name="l00099"></a>00099 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00100"></a>00100 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Setting unsigned long kernel argument at pos "</span> << pos << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00101"></a>00101 <span class="preprocessor">        #endif</span>
-<a name="l00102"></a>00102 <span class="preprocessor"></span>        cl_int err = clSetKernelArg(handle_, pos, <span class="keyword">sizeof</span>(cl_uint), (<span class="keywordtype">void</span>*)&val);
-<a name="l00103"></a>00103         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00104"></a>00104       }
-<a name="l00105"></a>00105 
-<a name="l00107"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ac351d86fb389dfefbeae8d04db8b0152">00107</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, <span class="keywordtype">float</span> val)
-<a name="l00108"></a>00108       {
-<a name="l00109"></a>00109         init();
-<a name="l00110"></a>00110 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00111"></a>00111 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Setting floating point kernel argument at pos "</span> << pos << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00112"></a>00112 <span class="preprocessor">        #endif</span>
-<a name="l00113"></a>00113 <span class="preprocessor"></span>        cl_int err = clSetKernelArg(handle_, pos, <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), (<span class="keywordtype">void</span>*)&val);
-<a name="l00114"></a>00114         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00115"></a>00115       }
-<a name="l00116"></a>00116 
-<a name="l00118"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a1f56b7116c68148a7e86755b24313505">00118</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, <span class="keywordtype">double</span> val)
-<a name="l00119"></a>00119       {
-<a name="l00120"></a>00120         init();
-<a name="l00121"></a>00121 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00122"></a>00122 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Setting double precision kernel argument at pos "</span> << pos << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00123"></a>00123 <span class="preprocessor">        #endif</span>
-<a name="l00124"></a>00124 <span class="preprocessor"></span>        cl_int err = clSetKernelArg(handle_, pos, <span class="keyword">sizeof</span>(<span class="keywordtype">double</span>), (<span class="keywordtype">void</span>*)&val);
-<a name="l00125"></a>00125         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00126"></a>00126       }
-<a name="l00127"></a>00127 
-<a name="l00128"></a>00128       <span class="comment">//generic handling: call .handle() member</span>
-<a name="l00130"></a>00130 <span class="comment"></span>      <span class="keyword">template</span><<span class="keyword">class</span> VCL_TYPE>
-<a name="l00131"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a90696210593c8b051b5a6b37db5bd1a9">00131</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, VCL_TYPE <span class="keyword">const</span> & val)
-<a name="l00132"></a>00132       {
-<a name="l00133"></a>00133         init();
-<a name="l00134"></a>00134 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00135"></a>00135 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Setting generic kernel argument at pos "</span> << pos << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00136"></a>00136 <span class="preprocessor">        #endif</span>
-<a name="l00137"></a>00137 <span class="preprocessor"></span>        cl_mem temp = val.handle();
-<a name="l00138"></a>00138         cl_int err = clSetKernelArg(handle_, pos, <span class="keyword">sizeof</span>(cl_mem), (<span class="keywordtype">void</span>*)&temp);
-<a name="l00139"></a>00139         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00140"></a>00140       }
-<a name="l00141"></a>00141       
-<a name="l00142"></a>00142       <span class="comment">//forward handles directly:</span>
-<a name="l00144"></a>00144 <span class="comment"></span>      <span class="keyword">template</span><<span class="keyword">class</span> CL_TYPE>
-<a name="l00145"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a5aeba814c640a29582cb4ae3ee769292">00145</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">viennacl::ocl::handle<CL_TYPE></a> <span class="keyword">const</span> & h)
-<a name="l00146"></a>00146       {
-<a name="l00147"></a>00147         <span class="comment">//arg(pos, h);</span>
-<a name="l00148"></a>00148         init();
-<a name="l00149"></a>00149 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00150"></a>00150 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Setting handle kernel argument at pos "</span> << pos << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00151"></a>00151 <span class="preprocessor">        #endif</span>
-<a name="l00152"></a>00152 <span class="preprocessor"></span>        CL_TYPE temp = h;
-<a name="l00153"></a>00153         cl_int err = clSetKernelArg(handle_, pos, <span class="keyword">sizeof</span>(CL_TYPE), (<span class="keywordtype">void</span>*)&temp);
-<a name="l00154"></a>00154         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00155"></a>00155       }
-<a name="l00156"></a>00156       
-<a name="l00157"></a>00157       
-<a name="l00158"></a>00158       <span class="comment">//local buffer argument:</span>
-<a name="l00160"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aa786f8f9956c7e96f51870757e223511">00160</a> <span class="comment"></span>      <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">local_mem</a> & mem)
-<a name="l00161"></a>00161       {
-<a name="l00162"></a>00162         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> =  mem.<a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns size in bytes.">size</a>();
-<a name="l00163"></a>00163         init();
-<a name="l00164"></a>00164 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00165"></a>00165 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Setting local memory kernel argument at pos "</span> << pos << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00166"></a>00166 <span class="preprocessor">        #endif</span>
-<a name="l00167"></a>00167 <span class="preprocessor"></span>        cl_int err = clSetKernelArg(handle_, pos, size, 0);
-<a name="l00168"></a>00168         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00169"></a>00169       }
-<a name="l00170"></a>00170       
-<a name="l00171"></a>00171       
-<a name="l00172"></a>00172       
-<a name="l00174"></a>00174       <span class="keyword">template</span> <<span class="keyword">typename</span> T0>
-<a name="l00175"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e">00175</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0)
-<a name="l00176"></a>00176       {
-<a name="l00177"></a>00177          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0);
-<a name="l00178"></a>00178          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00179"></a>00179       }     
-<a name="l00180"></a>00180 
-<a name="l00182"></a>00182       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1>
-<a name="l00183"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae34b738195a646694d04164a4197ab9a">00183</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1)
-<a name="l00184"></a>00184       {
-<a name="l00185"></a>00185          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1);
-<a name="l00186"></a>00186          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00187"></a>00187       }     
-<a name="l00188"></a>00188 
-<a name="l00190"></a>00190       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2>
-<a name="l00191"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aaa45f3bb4fdbd76ed38194c5519db49c">00191</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2)
-<a name="l00192"></a>00192       {
-<a name="l00193"></a>00193          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2);
-<a name="l00194"></a>00194          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00195"></a>00195       }     
-<a name="l00196"></a>00196 
-<a name="l00198"></a>00198       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3>
-<a name="l00199"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a60905cb2b6bc0d97fbab6f92cac9b018">00199</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3)
-<a name="l00200"></a>00200       {
-<a name="l00201"></a>00201          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3);
-<a name="l00202"></a>00202          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00203"></a>00203       }     
-<a name="l00204"></a>00204 
-<a name="l00206"></a>00206       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4>
-<a name="l00207"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a17608b63381196929a0b6a2cb5de5422">00207</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4)
-<a name="l00208"></a>00208       {
-<a name="l00209"></a>00209          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4);
-<a name="l00210"></a>00210          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00211"></a>00211       }     
-<a name="l00212"></a>00212 
-<a name="l00214"></a>00214       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5>
-<a name="l00215"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ad58fe9599d149db3ae8aba9237069438">00215</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5)
-<a name="l00216"></a>00216       {
-<a name="l00217"></a>00217          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00218"></a>00218          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00219"></a>00219       }     
-<a name="l00220"></a>00220 
-<a name="l00222"></a>00222       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5, <span class="keyword">typename</span> T6>
-<a name="l00223"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a8be19d50cd6d9ed66bf2b89a4166ee67">00223</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5, T6 <span class="keyword">const</span> & t6)
-<a name="l00224"></a>00224       {
-<a name="l00225"></a>00225          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6);
-<a name="l00226"></a>00226          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00227"></a>00227       }     
-<a name="l00228"></a>00228 
-<a name="l00230"></a>00230       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5, <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7>
-<a name="l00231"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a77fdda461fb386657622e1946b5dce51">00231</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5, T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7)
-<a name="l00232"></a>00232       {
-<a name="l00233"></a>00233          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7);
-<a name="l00234"></a>00234          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00235"></a>00235       }     
-<a name="l00236"></a>00236 
-<a name="l00238"></a>00238       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5, <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8>
-<a name="l00239"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a7fd3a21c0e6a24ed15cb7450be4282a3">00239</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5, T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8)
-<a name="l00240"></a>00240       {
-<a name="l00241"></a>00241          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8);
-<a name="l00242"></a>00242          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00243"></a>00243       }     
-<a name="l00244"></a>00244 
-<a name="l00246"></a>00246       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4,
-<a name="l00247"></a>00247                 <span class="keyword">typename</span> T5, <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9>
-<a name="l00248"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a919003007befe589d506987dcd582f1b">00248</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4,
-<a name="l00249"></a>00249                           T5 <span class="keyword">const</span> & t5, T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9)
-<a name="l00250"></a>00250       {
-<a name="l00251"></a>00251          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9);
-<a name="l00252"></a>00252          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00253"></a>00253       }     
-<a name="l00254"></a>00254 
-<a name="l00256"></a>00256       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00257"></a>00257                 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10>
-<a name="l00258"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a9b68e0eccb978b1f7ced31b5da87d261">00258</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00259"></a>00259                           T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10)
-<a name="l00260"></a>00260       {
-<a name="l00261"></a>00261          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10);
-<a name="l00262"></a>00262          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00263"></a>00263       }     
-<a name="l00264"></a>00264 
-<a name="l00266"></a>00266       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00267"></a>00267                 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10, <span class="keyword">typename</span> T11>
-<a name="l00268"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#af0e290a2eba1f9bf7c0a6bed69915487">00268</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00269"></a>00269                           T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10, T11 <span class="keyword">const</span> & t11)
-<a name="l00270"></a>00270       {
-<a name="l00271"></a>00271          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00272"></a>00272          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(11, t11);
-<a name="l00273"></a>00273          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00274"></a>00274       }     
-<a name="l00275"></a>00275 
-<a name="l00277"></a>00277       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00278"></a>00278                 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10, <span class="keyword">typename</span> T11, <span class="keyword">typename</span> T12>
-<a name="l00279"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a61fe96ea3962a5b653b653cd0fb40418">00279</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00280"></a>00280                           T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10, T11 <span class="keyword">const</span> & t11, T12 <span class="keyword">const</span> & t12)
-<a name="l00281"></a>00281       {
-<a name="l00282"></a>00282          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00283"></a>00283          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(11, t11); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(12, t12);
-<a name="l00284"></a>00284          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00285"></a>00285       }     
-<a name="l00286"></a>00286 
-<a name="l00288"></a>00288       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00289"></a>00289                 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10, <span class="keyword">typename</span> T11,
-<a name="l00290"></a>00290                 <span class="keyword">typename</span> T12, <span class="keyword">typename</span> T13>
-<a name="l00291"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ace68dfdccfd9c93c87346e160f74739c">00291</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00292"></a>00292                           T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10, T11 <span class="keyword">const</span> & t11,
-<a name="l00293"></a>00293                           T12 <span class="keyword">const</span> & t12, T13 <span class="keyword">const</span> & t13)
-<a name="l00294"></a>00294       {
-<a name="l00295"></a>00295          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00296"></a>00296          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(11, t11);
-<a name="l00297"></a>00297          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(12, t12); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(13, t13);
-<a name="l00298"></a>00298          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00299"></a>00299       }     
-<a name="l00300"></a>00300 
-<a name="l00302"></a>00302       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00303"></a>00303                 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10, <span class="keyword">typename</span> T11,
-<a name="l00304"></a>00304                 <span class="keyword">typename</span> T12, <span class="keyword">typename</span> T13, <span class="keyword">typename</span> T14>
-<a name="l00305"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ac3b17a7168f092a0839a5d2cbb9210e6">00305</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00306"></a>00306                           T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10, T11 <span class="keyword">const</span> & t11,
-<a name="l00307"></a>00307                           T12 <span class="keyword">const</span> & t12, T13 <span class="keyword">const</span> & t13, T14 <span class="keyword">const</span> & t14)
-<a name="l00308"></a>00308       {
-<a name="l00309"></a>00309          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00310"></a>00310          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(11, t11);
-<a name="l00311"></a>00311          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(12, t12); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(13, t13); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(14, t14);
-<a name="l00312"></a>00312          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00313"></a>00313       }     
-<a name="l00314"></a>00314 
-<a name="l00316"></a>00316       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00317"></a>00317                 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10, <span class="keyword">typename</span> T11,
-<a name="l00318"></a>00318                 <span class="keyword">typename</span> T12, <span class="keyword">typename</span> T13, <span class="keyword">typename</span> T14, <span class="keyword">typename</span> T15>
-<a name="l00319"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aec21f3c9f68d5d81dacd7ec8a19048ab">00319</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00320"></a>00320                           T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10, T11 <span class="keyword">const</span> & t11,
-<a name="l00321"></a>00321                           T12 <span class="keyword">const</span> & t12, T13 <span class="keyword">const</span> & t13, T14 <span class="keyword">const</span> & t14, T15 <span class="keyword">const</span> & t15)
-<a name="l00322"></a>00322       {
-<a name="l00323"></a>00323          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00324"></a>00324          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(11, t11);
-<a name="l00325"></a>00325          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(12, t12); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(13, t13); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(14, t14); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(15, t15);
-<a name="l00326"></a>00326          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00327"></a>00327       }     
-<a name="l00328"></a>00328 
-<a name="l00330"></a>00330       <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00331"></a>00331                 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10, <span class="keyword">typename</span> T11,
-<a name="l00332"></a>00332                 <span class="keyword">typename</span> T12, <span class="keyword">typename</span> T13, <span class="keyword">typename</span> T14, <span class="keyword">typename</span> T15, <span class="keyword">typename</span> T16>
-<a name="l00333"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a37e62106dc02656ef6602ddc6c28feb9">00333</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00334"></a>00334                           T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10, T11 <span class="keyword">const</span> & t11,
-<a name="l00335"></a>00335                           T12 <span class="keyword">const</span> & t12, T13 <span class="keyword">const</span> & t13, T14 <span class="keyword">const</span> & t14, T15 <span class="keyword">const</span> & t15, T16 <span class="keyword">const</span> & t16)
-<a name="l00336"></a>00336       {
-<a name="l00337"></a>00337          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00338"></a>00338          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(11, t11);
-<a name="l00339"></a>00339          <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(12, t12); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(13, t13); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(14, t14); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(15, t15); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(16, t16);
-<a name="l00340"></a>00340          <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00341"></a>00341       }     
-<a name="l00342"></a>00342 
-<a name="l00347"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9">00347</a>       <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(<span class="keywordtype">int</span> index = 0)<span class="keyword"> const</span>
-<a name="l00348"></a>00348 <span class="keyword">      </span>{
-<a name="l00349"></a>00349         assert(index == 0 || index == 1);
-<a name="l00350"></a>00350         <span class="keywordflow">return</span> local_work_size_[index];
-<a name="l00351"></a>00351       }
-<a name="l00356"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456">00356</a>       <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(<span class="keywordtype">int</span> index = 0)<span class="keyword"> const</span>
-<a name="l00357"></a>00357 <span class="keyword">      </span>{ 
-<a name="l00358"></a>00358         assert(index == 0 || index == 1);
-<a name="l00359"></a>00359         <span class="keywordflow">return</span> global_work_size_[index];
-<a name="l00360"></a>00360       }
-<a name="l00361"></a>00361 
-<a name="l00367"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#af38f6ba2df03771a43aacc275b64fc1c">00367</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(<span class="keywordtype">int</span> index, <span class="keywordtype">size_t</span> s)
-<a name="l00368"></a>00368       {
-<a name="l00369"></a>00369 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00370"></a>00370 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Setting local work size to "</span> << s << <span class="stringliteral">" at index "</span> << index << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00371"></a>00371 <span class="preprocessor">        #endif</span>
-<a name="l00372"></a>00372 <span class="preprocessor"></span>        assert(index == 0 || index == 1);
-<a name="l00373"></a>00373         local_work_size_[index] = s;
-<a name="l00374"></a>00374       }
-<a name="l00380"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#adcacd23410973277cfb37fc98c93ebec">00380</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(<span class="keywordtype">int</span> index, <span class="keywordtype">size_t</span> s)
-<a name="l00381"></a>00381       { 
-<a name="l00382"></a>00382 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00383"></a>00383 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Setting global work size to "</span> << s << <span class="stringliteral">" at index "</span> << index << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00384"></a>00384 <span class="preprocessor">        #endif</span>
-<a name="l00385"></a>00385 <span class="preprocessor"></span>        assert(index == 0 || index == 1);
-<a name="l00386"></a>00386         global_work_size_[index] = s;
-<a name="l00387"></a>00387       }
-<a name="l00388"></a>00388 
-<a name="l00389"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a836b9d82daf374fab15aac8c87eb1133">00389</a>       std::string <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a836b9d82daf374fab15aac8c87eb1133">name</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> name_; }
-<a name="l00390"></a>00390 
-<a name="l00391"></a>00391     <span class="keyword">private</span>:
-<a name="l00392"></a>00392       <span class="keywordtype">void</span> create_kernel()
-<a name="l00393"></a>00393       {
-<a name="l00394"></a>00394         cl_int err;
-<a name="l00395"></a>00395 <span class="preprocessor">        #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00396"></a>00396 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"ViennaCL: Building kernel "</span> << name_ << std::endl;
-<a name="l00397"></a>00397 <span class="preprocessor">        #endif</span>
-<a name="l00398"></a>00398 <span class="preprocessor"></span>        handle_ = clCreateKernel(program_, name_.c_str(), &err);
-<a name="l00399"></a>00399         
-<a name="l00400"></a>00400         <span class="keywordflow">if</span> (err != CL_SUCCESS)
-<a name="l00401"></a>00401         {
-<a name="l00402"></a>00402 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00403"></a>00403 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Could not build kernel '"</span> << name_ << <span class="stringliteral">"'."</span> << std::endl;
-<a name="l00404"></a>00404 <span class="preprocessor">          #endif</span>
-<a name="l00405"></a>00405 <span class="preprocessor"></span>          std::cerr << <span class="stringliteral">"Could not build kernel '"</span> << name_ << <span class="stringliteral">"'."</span> << std::endl;
-<a name="l00406"></a>00406         }
-<a name="l00407"></a>00407         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00408"></a>00408       }
-<a name="l00409"></a>00409 
-<a name="l00410"></a>00410       <span class="keywordtype">void</span> set_work_size_defaults()
-<a name="l00411"></a>00411       {
-<a name="l00412"></a>00412         <span class="keywordflow">if</span> (<a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().type() == CL_DEVICE_TYPE_GPU)
-<a name="l00413"></a>00413         {
-<a name="l00414"></a>00414           local_work_size_[0] = 128; local_work_size_[1] = 0;
-<a name="l00415"></a>00415           global_work_size_[0] = 128*128; global_work_size_[1] = 0;
-<a name="l00416"></a>00416         }
-<a name="l00417"></a>00417         <span class="keywordflow">else</span> <span class="comment">//assume CPU type:</span>
-<a name="l00418"></a>00418         {
-<a name="l00419"></a>00419           <span class="comment">//conservative assumption: one thread per CPU core:</span>
-<a name="l00420"></a>00420           local_work_size_[0] = 1; local_work_size_[1] = 0;
-<a name="l00421"></a>00421           global_work_size_[0] = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#ab2a44bd7f2d691fa15460928af757d99" title="Returns the number of compute units on the device.">max_compute_units</a>(); global_work_size_[1] = 0;
-<a name="l00422"></a>00422         }
-<a name="l00423"></a>00423       }
-<a name="l00424"></a>00424 
-<a name="l00425"></a>00425       <span class="keywordtype">void</span> init()
-<a name="l00426"></a>00426       {
-<a name="l00427"></a>00427         <span class="keywordflow">if</span> (!init_done_)
-<a name="l00428"></a>00428         {
-<a name="l00429"></a>00429           create_kernel();
-<a name="l00430"></a>00430           init_done_ = <span class="keyword">true</span>;
-<a name="l00431"></a>00431         }
-<a name="l00432"></a>00432       }
-<a name="l00433"></a>00433       
-<a name="l00434"></a>00434       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_kernel></a> <span class="keyword">const</span> & handle()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> handle_; }
-<a name="l00435"></a>00435 
-<a name="l00436"></a>00436       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_kernel></a> handle_;
-<a name="l00437"></a>00437       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_program></a> program_;
-<a name="l00438"></a>00438       std::string name_;
-<a name="l00439"></a>00439       <span class="keywordtype">bool</span> init_done_;
-<a name="l00440"></a>00440       <span class="keywordtype">size_t</span> local_work_size_[2];
-<a name="l00441"></a>00441       <span class="keywordtype">size_t</span> global_work_size_[2];
-<a name="l00442"></a>00442     };
-<a name="l00443"></a>00443     
-<a name="l00444"></a>00444   } <span class="comment">//namespace ocl</span>
-<a name="l00445"></a>00445 } <span class="comment">//namespace viennacl</span>
-<a name="l00446"></a>00446 
-<a name="l00447"></a>00447 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/kernel__parameters_8hpp.html b/doc/doxygen/html/kernel__parameters_8hpp.html
deleted file mode 100644
index fe711d5..0000000
--- a/doc/doxygen/html/kernel__parameters_8hpp.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/kernel_parameters.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/kernel_parameters.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>This file holds the code necessary for reading kernel parameters from XML files using pugixml.  
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "pugixml/src/pugixml.hpp"</code><br/>
-
-<p><a href="kernel__parameters_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A XML parameter database using PugiXML. Allows to add tests for different devices and the like.  <a href="structviennacl_1_1io_1_1parameter__database.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html">first_letter_of_type< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper meta class that returns the first letter of a particular type (float or double).  <a href="structviennacl_1_1io_1_1first__letter__of__type.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">first_letter_of_type< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">first_letter_of_type< double ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype< T ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string.html">to_string< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper meta-class that converts a type to a string.  <a href="structviennacl_1_1io_1_1to__string.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">to_string< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">to_string< double ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html">viennacl::io::tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html">viennacl::io::val</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a932f77ca6debf7b246b785607a6a291e">set_kernel_params</a> (std::string program_name, std::string kernel_name, unsigned int glob, unsigned int loc)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VclBasicType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a8f1538d0d1d8b463f02416775f9b5160">tune_impl</a> (parameter_database &paras, std::string parent)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VclBasicType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a09e577fc61b06c9d35573ca2bc9b4181">read_kernel_parameters</a> (std::string filename)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The interface function for reading kernel parameters.  <a href="#a09e577fc61b06c9d35573ca2bc9b4181"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">root</a> = "parameters"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a> = "devices"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">device</a> = "device"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">name</a> = "name"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">driver</a> = "driver"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">compun</a> = "computeunits"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">workgrp</a> = "workgroupsize"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">tests</a> = "tests"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">test</a> = "test"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a> = "numeric"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a> = "kernels"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">kernel</a> = "kernel"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">params</a> = "params"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">param</a> = "param"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a> = "value"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a> = "alignment"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">globsize</a> = "globalsize"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">locsize</a> = "localsize"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a> = "vector"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">matrix</a> = "matrix"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">compmat</a> = "compressed_matrix"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">fl</a> = "float"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">dbl</a> = "double"</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>This file holds the code necessary for reading kernel parameters from XML files using pugixml. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/kernel__parameters_8hpp_source.html b/doc/doxygen/html/kernel__parameters_8hpp_source.html
deleted file mode 100644
index ca893f5..0000000
--- a/doc/doxygen/html/kernel__parameters_8hpp_source.html
+++ /dev/null
@@ -1,467 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/kernel_parameters.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/kernel_parameters.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="kernel__parameters_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 
-<a name="l00016"></a>00016 <span class="preprocessor">#ifndef VIENNACL_IO_KERNEL_PARAMETERS_HPP</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define VIENNACL_IO_KERNEL_PARAMETERS_HPP</span>
-<a name="l00018"></a>00018 <span class="preprocessor"></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "pugixml/src/pugixml.hpp"</span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl {
-<a name="l00027"></a><a class="code" href="namespaceviennacl_1_1io.html">00027</a>   <span class="keyword">namespace </span>io {
-<a name="l00028"></a>00028   
-<a name="l00029"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html">00029</a>     <span class="keyword">namespace </span>tag {
-<a name="l00030"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">00030</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">root</a>     = <span class="stringliteral">"parameters"</span>;
-<a name="l00031"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">00031</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>  = <span class="stringliteral">"devices"</span>;   
-<a name="l00032"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">00032</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">device</a>   = <span class="stringliteral">"device"</span>;   
-<a name="l00033"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">00033</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">name</a>     = <span class="stringliteral">"name"</span>;
-<a name="l00034"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">00034</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">driver</a>   = <span class="stringliteral">"driver"</span>;
-<a name="l00035"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">00035</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">compun</a>   = <span class="stringliteral">"computeunits"</span>;      
-<a name="l00036"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">00036</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">workgrp</a>  = <span class="stringliteral">"workgroupsize"</span>;            
-<a name="l00037"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">00037</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">tests</a>    = <span class="stringliteral">"tests"</span>;
-<a name="l00038"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">00038</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">test</a>     = <span class="stringliteral">"test"</span>;                     
-<a name="l00039"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">00039</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a>  = <span class="stringliteral">"numeric"</span>;
-<a name="l00040"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">00040</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>  = <span class="stringliteral">"kernels"</span>;
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">00041</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">kernel</a>   = <span class="stringliteral">"kernel"</span>;
-<a name="l00042"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">00042</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">params</a>   = <span class="stringliteral">"params"</span>;
-<a name="l00043"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">00043</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">param</a>    = <span class="stringliteral">"param"</span>;
-<a name="l00044"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">00044</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>    = <span class="stringliteral">"value"</span>;   
-<a name="l00045"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">00045</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a> = <span class="stringliteral">"alignment"</span>;   
-<a name="l00046"></a>00046     } <span class="comment">// end namespace tag</span>
-<a name="l00047"></a>00047 
-<a name="l00048"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html">00048</a>     <span class="keyword">namespace </span>val {
-<a name="l00049"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">00049</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">globsize</a> = <span class="stringliteral">"globalsize"</span>;
-<a name="l00050"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">00050</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">locsize</a>  = <span class="stringliteral">"localsize"</span>;   
-<a name="l00051"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">00051</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>      = <span class="stringliteral">"vector"</span>;   
-<a name="l00052"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">00052</a>       std::string <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>   = <span class="stringliteral">"matrix"</span>;   
-<a name="l00053"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">00053</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">compmat</a>  = <span class="stringliteral">"compressed_matrix"</span>;
-<a name="l00054"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">00054</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">fl</a>       = <span class="stringliteral">"float"</span>;   
-<a name="l00055"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">00055</a>       std::string <a class="code" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">dbl</a>      = <span class="stringliteral">"double"</span>;      
-<a name="l00056"></a>00056     }
-<a name="l00057"></a>00057 
-<a name="l00059"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html">00059</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1parameter__database.html" title="A XML parameter database using PugiXML. Allows to add tests for different devices and the like...">parameter_database</a> 
-<a name="l00060"></a>00060     {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab4a2fcf734630c9363badbfd4205053a">00061</a>       <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab4a2fcf734630c9363badbfd4205053a">parameter_database</a> ()
-<a name="l00062"></a>00062       {
-<a name="l00063"></a>00063           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">root</a> = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.append_child();
-<a name="l00064"></a>00064           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">root</a>.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">tag::root</a>.c_str());
-<a name="l00065"></a>00065           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a> = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">root</a>;
-<a name="l00066"></a>00066           
-<a name="l00067"></a>00067           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">devices_open</a> = <span class="keyword">false</span>;
-<a name="l00068"></a>00068           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">tests_open</a> = <span class="keyword">false</span>;      
-<a name="l00069"></a>00069           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a> = <span class="keyword">false</span>;
-<a name="l00070"></a>00070           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a> = <span class="keyword">false</span>;      
-<a name="l00071"></a>00071       }   
-<a name="l00072"></a>00072       
-<a name="l00073"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a94640ee3f014f43e802e3bb26e40bc19">00073</a>       <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a94640ee3f014f43e802e3bb26e40bc19">add_device</a>()
-<a name="l00074"></a>00074       {
-<a name="l00075"></a>00075           pugi::xml_node dev;
-<a name="l00076"></a>00076           <span class="keywordflow">if</span>(<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">devices_open</a>)
-<a name="l00077"></a>00077           {
-<a name="l00078"></a>00078             dev = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a>.append_child();
-<a name="l00079"></a>00079             dev.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">tag::device</a>.c_str());      
-<a name="l00080"></a>00080           }
-<a name="l00081"></a>00081           <span class="keywordflow">else</span>
-<a name="l00082"></a>00082           {
-<a name="l00083"></a>00083             <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a> = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a>.append_child();
-<a name="l00084"></a>00084             <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a>.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">tag::devices</a>.c_str());
-<a name="l00085"></a>00085             
-<a name="l00086"></a>00086             dev = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a>.append_child();
-<a name="l00087"></a>00087             dev.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">tag::device</a>.c_str());
-<a name="l00088"></a>00088             
-<a name="l00089"></a>00089             <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">devices_open</a> = <span class="keyword">true</span>;
-<a name="l00090"></a>00090           }
-<a name="l00091"></a>00091           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a> = dev;
-<a name="l00092"></a>00092       }
-<a name="l00093"></a>00093       
-<a name="l00094"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ad8c7260fd6a9b708e5da662b295206b8">00094</a>       <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ad8c7260fd6a9b708e5da662b295206b8">add_test</a>()
-<a name="l00095"></a>00095       {
-<a name="l00096"></a>00096           pugi::xml_node <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">test</a>;
-<a name="l00097"></a>00097           <span class="keywordflow">if</span>(<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">tests_open</a>)
-<a name="l00098"></a>00098           {
-<a name="l00099"></a>00099             test = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a>.append_child();
-<a name="l00100"></a>00100             test.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">tag::test</a>.c_str());      
-<a name="l00101"></a>00101           }
-<a name="l00102"></a>00102           <span class="keywordflow">else</span>
-<a name="l00103"></a>00103           {
-<a name="l00104"></a>00104             <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a> = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a>.append_child();
-<a name="l00105"></a>00105             <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a>.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">tag::tests</a>.c_str());
-<a name="l00106"></a>00106             
-<a name="l00107"></a>00107             test = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a>.append_child();
-<a name="l00108"></a>00108             test.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">tag::test</a>.c_str());
-<a name="l00109"></a>00109             
-<a name="l00110"></a>00110             <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">tests_open</a> = <span class="keyword">true</span>;
-<a name="l00111"></a>00111           }
-<a name="l00112"></a>00112           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a> = test;
-<a name="l00113"></a>00113           <span class="comment">// close the current kernels section</span>
-<a name="l00114"></a>00114           <span class="comment">// so a new one is created for this new test</span>
-<a name="l00115"></a>00115           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a> = <span class="keyword">false</span>;      
-<a name="l00116"></a>00116       }   
-<a name="l00117"></a>00117 
-<a name="l00118"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ad95fb4cdb80c4e90c51a031b77302711">00118</a>       <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ad95fb4cdb80c4e90c51a031b77302711">add_kernel</a>()
-<a name="l00119"></a>00119       {
-<a name="l00120"></a>00120           pugi::xml_node kern;
-<a name="l00121"></a>00121           <span class="keywordflow">if</span>(<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a>)
-<a name="l00122"></a>00122           {
-<a name="l00123"></a>00123             kern = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a>.append_child();
-<a name="l00124"></a>00124             kern.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">tag::kernel</a>.c_str());      
-<a name="l00125"></a>00125           }
-<a name="l00126"></a>00126           <span class="keywordflow">else</span>
-<a name="l00127"></a>00127           {
-<a name="l00128"></a>00128             <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a> = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a>.append_child();
-<a name="l00129"></a>00129             <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a>.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">tag::kernels</a>.c_str());
-<a name="l00130"></a>00130             
-<a name="l00131"></a>00131             kern = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a>.append_child();
-<a name="l00132"></a>00132             kern.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">tag::kernel</a>.c_str());
-<a name="l00133"></a>00133             
-<a name="l00134"></a>00134             <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a> = <span class="keyword">true</span>;
-<a name="l00135"></a>00135           }
-<a name="l00136"></a>00136           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a> = kern;
-<a name="l00137"></a>00137           
-<a name="l00138"></a>00138           <span class="comment">// close the current parameters section</span>
-<a name="l00139"></a>00139           <span class="comment">// so a new one is created for this new kernel</span>
-<a name="l00140"></a>00140           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a> = <span class="keyword">false</span>;
-<a name="l00141"></a>00141       }      
-<a name="l00142"></a>00142       
-<a name="l00143"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a36e505990b93973addc58a7ea20b2c0d">00143</a>       <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a36e505990b93973addc58a7ea20b2c0d">add_parameter</a>()
-<a name="l00144"></a>00144       {
-<a name="l00145"></a>00145           pugi::xml_node para;
-<a name="l00146"></a>00146           
-<a name="l00147"></a>00147           <span class="keywordflow">if</span>(<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a>)
-<a name="l00148"></a>00148           {
-<a name="l00149"></a>00149             para = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a>.append_child();
-<a name="l00150"></a>00150             para.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">tag::param</a>.c_str());      
-<a name="l00151"></a>00151           }
-<a name="l00152"></a>00152           <span class="keywordflow">else</span>
-<a name="l00153"></a>00153           {
-<a name="l00154"></a>00154             <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a> = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a>.append_child();
-<a name="l00155"></a>00155             <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a>.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">tag::params</a>.c_str());
-<a name="l00156"></a>00156             
-<a name="l00157"></a>00157             para = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a>.append_child();
-<a name="l00158"></a>00158             para.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">tag::param</a>.c_str());
-<a name="l00159"></a>00159             
-<a name="l00160"></a>00160             <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a> = <span class="keyword">true</span>;
-<a name="l00161"></a>00161           }
-<a name="l00162"></a>00162           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a> = para;
-<a name="l00163"></a>00163       }         
-<a name="l00164"></a>00164       
-<a name="l00165"></a>00165       <span class="keyword">template</span><<span class="keyword">typename</span> ValueT>
-<a name="l00166"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">00166</a>       <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">add_data_node</a>(std::string tagstr, ValueT data)
-<a name="l00167"></a>00167       {
-<a name="l00168"></a>00168           std::stringstream ss;
-<a name="l00169"></a>00169           ss << data;
-<a name="l00170"></a>00170           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">add_data_node</a>(tagstr, ss.str());
-<a name="l00171"></a>00171       }   
-<a name="l00172"></a>00172       
-<a name="l00173"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a6704481b4c6d8ee327a1250dadc3ea2a">00173</a>       <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">add_data_node</a>(std::string tagstr, std::string data)
-<a name="l00174"></a>00174       {
-<a name="l00175"></a>00175           pugi::xml_node node = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a>.append_child();
-<a name="l00176"></a>00176           
-<a name="l00177"></a>00177           <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">tag::name</a>)
-<a name="l00178"></a>00178             node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">tag::name</a>.c_str());
-<a name="l00179"></a>00179           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">tag::driver</a>)
-<a name="l00180"></a>00180             node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">tag::driver</a>.c_str());      
-<a name="l00181"></a>00181           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">tag::numeric</a>)
-<a name="l00182"></a>00182             node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">tag::numeric</a>.c_str());      
-<a name="l00183"></a>00183           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">tag::alignment</a>)
-<a name="l00184"></a>00184             node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">tag::alignment</a>.c_str());      
-<a name="l00185"></a>00185           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">tag::value</a>)
-<a name="l00186"></a>00186             node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">tag::value</a>.c_str());      
-<a name="l00187"></a>00187           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">tag::compun</a>)
-<a name="l00188"></a>00188             node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">tag::compun</a>.c_str());      
-<a name="l00189"></a>00189           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">tag::workgrp</a>)
-<a name="l00190"></a>00190             node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">tag::workgrp</a>.c_str());                        
-<a name="l00191"></a>00191           <span class="keywordflow">else</span>
-<a name="l00192"></a>00192             std::cout << <span class="stringliteral">"# Error adding data node: node tag not recognized .."</span> << std::endl;
-<a name="l00193"></a>00193           node.append_child(pugi::node_pcdata).set_value(data.c_str());
-<a name="l00194"></a>00194       }
-<a name="l00195"></a>00195 
-<a name="l00196"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a8e1b7829ae19153197f38719ce73fb67">00196</a>       <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a8e1b7829ae19153197f38719ce73fb67">load</a>(std::string filename)
-<a name="l00197"></a>00197       {
-<a name="l00198"></a>00198           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.load_file(filename.c_str());
-<a name="l00199"></a>00199       }
-<a name="l00200"></a>00200 
-<a name="l00201"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#afe9b5c984fb20d9be09fb29c01afb21d">00201</a>       <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#afe9b5c984fb20d9be09fb29c01afb21d">dump</a>(std::string filename)
-<a name="l00202"></a>00202       {
-<a name="l00203"></a>00203           std::ofstream outstream(filename.c_str());
-<a name="l00204"></a>00204           this-><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#afe9b5c984fb20d9be09fb29c01afb21d">dump</a>(outstream);
-<a name="l00205"></a>00205           outstream.close();
-<a name="l00206"></a>00206       }
-<a name="l00207"></a>00207       
-<a name="l00208"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#afd80b88d872b6d3dec066c52f2ccc5de">00208</a>       <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#afe9b5c984fb20d9be09fb29c01afb21d">dump</a>(std::ostream& stream = std::cout)
-<a name="l00209"></a>00209       {
-<a name="l00210"></a>00210           <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.save(stream, <span class="stringliteral">"  "</span>);
-<a name="l00211"></a>00211       }
-<a name="l00212"></a>00212 
-<a name="l00213"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">00213</a>       pugi::xml_document   <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>;
-<a name="l00214"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">00214</a>       pugi::xml_node       <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">root</a>;
-<a name="l00215"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">00215</a>       pugi::xml_node       <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a>;
-<a name="l00216"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">00216</a>       pugi::xml_node       <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a>;   
-<a name="l00217"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">00217</a>       pugi::xml_node       <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a>;      
-<a name="l00218"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">00218</a>       pugi::xml_node       <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a>;         
-<a name="l00219"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">00219</a>       pugi::xml_node       <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a>;   
-<a name="l00220"></a>00220       
-<a name="l00221"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">00221</a>       <span class="keywordtype">bool</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">devices_open</a>;
-<a name="l00222"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">00222</a>       <span class="keywordtype">bool</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">tests_open</a>;   
-<a name="l00223"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">00223</a>       <span class="keywordtype">bool</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a>;      
-<a name="l00224"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">00224</a>       <span class="keywordtype">bool</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a>;         
-<a name="l00225"></a>00225 
-<a name="l00226"></a>00226     };
-<a name="l00227"></a>00227     
-<a name="l00229"></a>00229     <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00230"></a><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type.html">00230</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type.html" title="Helper meta class that returns the first letter of a particular type (float or double).">first_letter_of_type</a>
-<a name="l00231"></a>00231     {
-<a name="l00232"></a>00232       <span class="keyword">static</span> <span class="keywordtype">char</span> <span class="keyword">get</span>(); <span class="comment">//intentionally not implemented, class must be specialized</span>
-<a name="l00233"></a>00233     };
-<a name="l00234"></a>00234     
-<a name="l00235"></a>00235     <span class="keyword">template</span> <>
-<a name="l00236"></a><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">00236</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type.html" title="Helper meta class that returns the first letter of a particular type (float or double).">first_letter_of_type</a> <float>
-<a name="l00237"></a>00237     {
-<a name="l00238"></a><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html#aa44c884075e7f0158bc2c09528227af0">00238</a>       <span class="keyword">static</span> <span class="keywordtype">char</span> <span class="keyword">get</span>() { <span class="keywordflow">return</span> <span class="charliteral">'f'</span>; } 
-<a name="l00239"></a>00239     };
-<a name="l00240"></a>00240     
-<a name="l00241"></a>00241     <span class="keyword">template</span> <>
-<a name="l00242"></a><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">00242</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type.html" title="Helper meta class that returns the first letter of a particular type (float or double).">first_letter_of_type</a> <double>
-<a name="l00243"></a>00243     {
-<a name="l00244"></a><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html#aa44c884075e7f0158bc2c09528227af0">00244</a>       <span class="keyword">static</span> <span class="keywordtype">char</span> <span class="keyword">get</span>() { <span class="keywordflow">return</span> <span class="charliteral">'d'</span>; } 
-<a name="l00245"></a>00245     };
-<a name="l00246"></a>00246     
-<a name="l00247"></a>00247     <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00248"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html">00248</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a>
-<a name="l00249"></a>00249     {
-<a name="l00250"></a>00250       <span class="keyword">static</span> std::string <span class="keyword">get</span>();  <span class="comment">//intentionally not implemented, class must be specialized</span>
-<a name="l00251"></a>00251     };
-<a name="l00252"></a>00252     
-<a name="l00253"></a>00253     <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00254"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">00254</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a> < viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><T, ALIGNMENT> >
-<a name="l00255"></a>00255     {
-<a name="l00256"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">00256</a>       <span class="keyword">static</span> std::string <span class="keyword">get</span>()
-<a name="l00257"></a>00257       {
-<a name="l00258"></a>00258         std::stringstream ss;
-<a name="l00259"></a>00259         ss << first_letter_of_type<T>::get() << <span class="stringliteral">"_vector_"</span> << ALIGNMENT;
-<a name="l00260"></a>00260         <span class="keywordflow">return</span> ss.str();
-<a name="l00261"></a>00261       } 
-<a name="l00262"></a>00262     };
-<a name="l00263"></a>00263     
-<a name="l00264"></a>00264     <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00265"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">00265</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a> < viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><T, row_major, ALIGNMENT> >
-<a name="l00266"></a>00266     {
-<a name="l00267"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">00267</a>       <span class="keyword">static</span> std::string <span class="keyword">get</span>()
-<a name="l00268"></a>00268       {
-<a name="l00269"></a>00269         std::stringstream ss;
-<a name="l00270"></a>00270         ss << first_letter_of_type<T>::get() << <span class="stringliteral">"_matrix_row_"</span> << ALIGNMENT;
-<a name="l00271"></a>00271         <span class="keywordflow">return</span> ss.str();
-<a name="l00272"></a>00272       } 
-<a name="l00273"></a>00273     };
-<a name="l00274"></a>00274 
-<a name="l00275"></a>00275     <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00276"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">00276</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a> < viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><T, column_major, ALIGNMENT> >
-<a name="l00277"></a>00277     {
-<a name="l00278"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html#a8eb62a380fed2d733fde5168170eea12">00278</a>       <span class="keyword">static</span> std::string <span class="keyword">get</span>()
-<a name="l00279"></a>00279       {
-<a name="l00280"></a>00280         std::stringstream ss;
-<a name="l00281"></a>00281         ss << first_letter_of_type<T>::get() << <span class="stringliteral">"_matrix_col_"</span> << ALIGNMENT;
-<a name="l00282"></a>00282         <span class="keywordflow">return</span> ss.str();
-<a name="l00283"></a>00283       } 
-<a name="l00284"></a>00284     };
-<a name="l00285"></a>00285     
-<a name="l00286"></a>00286     <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00287"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">00287</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a> < viennacl::<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><T,  ALIGNMENT> >
-<a name="l00288"></a>00288     {
-<a name="l00289"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">00289</a>       <span class="keyword">static</span> std::string <span class="keyword">get</span>()
-<a name="l00290"></a>00290       {
-<a name="l00291"></a>00291         std::stringstream ss;
-<a name="l00292"></a>00292         ss << first_letter_of_type<T>::get() << <span class="stringliteral">"_compressed_matrix_"</span> << ALIGNMENT;
-<a name="l00293"></a>00293         <span class="keywordflow">return</span> ss.str();
-<a name="l00294"></a>00294       } 
-<a name="l00295"></a>00295     };
-<a name="l00296"></a>00296 
-<a name="l00297"></a>00297     <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00298"></a><a class="code" href="namespaceviennacl_1_1io.html#a932f77ca6debf7b246b785607a6a291e">00298</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#a932f77ca6debf7b246b785607a6a291e">set_kernel_params</a>(std::string program_name,
-<a name="l00299"></a>00299                           std::string kernel_name,
-<a name="l00300"></a>00300                           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> glob, <span class="comment">//total no. of threads</span>
-<a name="l00301"></a>00301                           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> loc)  <span class="comment">//threads per work group</span>
-<a name="l00302"></a>00302     {
-<a name="l00303"></a>00303       <span class="comment">//get kernel from pool and set work sizes:</span>
-<a name="l00304"></a>00304       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(program_name, kernel_name);
-<a name="l00305"></a>00305       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, glob);
-<a name="l00306"></a>00306       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, loc);
-<a name="l00307"></a>00307       
-<a name="l00308"></a>00308       <span class="comment">//std::cout << "Setting [" << glob << ", " << loc << "] for kernel " << kernel_name << std::endl;</span>
-<a name="l00309"></a>00309     }
-<a name="l00310"></a>00310 
-<a name="l00311"></a>00311     <span class="keyword">template</span><<span class="keyword">typename</span> VclBasicType>
-<a name="l00312"></a><a class="code" href="namespaceviennacl_1_1io.html#a8f1538d0d1d8b463f02416775f9b5160">00312</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#a8f1538d0d1d8b463f02416775f9b5160">tune_impl</a>(<a class="code" href="structviennacl_1_1io_1_1parameter__database.html" title="A XML parameter database using PugiXML. Allows to add tests for different devices and the like...">parameter_database</a>& paras, std::string parent)
-<a name="l00313"></a>00313     {
-<a name="l00314"></a>00314       <span class="keyword">typedef</span> <span class="keyword">typename</span> VclBasicType::value_type::value_type   SCALARTYPE;
-<a name="l00315"></a>00315       
-<a name="l00316"></a>00316       <span class="comment">// create dummy vectors; the kernels have to be created ..</span>
-<a name="l00317"></a>00317       VclBasicType    dummy;
-<a name="l00318"></a>00318 
-<a name="l00319"></a>00319       <span class="comment">// extract the kernels for which parameters are present</span>
-<a name="l00320"></a>00320       std::string          kernel_str = parent+<span class="stringliteral">"/kernels/kernel/name/text()"</span>;
-<a name="l00321"></a>00321       pugi::xpath_node_set kernel_res = paras.<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.select_nodes(kernel_str.c_str());      
-<a name="l00322"></a>00322 
-<a name="l00323"></a>00323       <span class="keyword">typedef</span> std::vector<std::string>   kernels_type;
-<a name="l00324"></a>00324       kernels_type <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>;
-<a name="l00325"></a>00325       std::cout << <span class="stringliteral">"Retrieving kernels..."</span> << std::endl;
-<a name="l00326"></a>00326       <span class="keywordflow">for</span> (pugi::xpath_node_set::const_iterator it = kernel_res.begin(); it != kernel_res.end(); ++it)
-<a name="l00327"></a>00327       {
-<a name="l00328"></a>00328           std::stringstream ss;
-<a name="l00329"></a>00329           it->node().print(ss, <span class="stringliteral">"  "</span>);
-<a name="l00330"></a>00330           std::string kern(ss.str());
-<a name="l00331"></a>00331           kern.erase(std::remove(kern.begin(), kern.end(), <span class="charliteral">'\n'</span>), kern.end()); <span class="comment">//trim trailing linebreak</span>
-<a name="l00332"></a>00332           kernels.push_back(kern);
-<a name="l00333"></a>00333       }
-<a name="l00334"></a>00334       
-<a name="l00335"></a>00335       <span class="comment">// retrieve the actual parameters</span>
-<a name="l00336"></a>00336       std::cout << <span class="stringliteral">"Retrieving actual parameters..."</span> << std::endl;
-<a name="l00337"></a>00337       <span class="keywordflow">for</span>(<span class="keyword">typename</span> kernels_type::iterator iter = kernels.begin();
-<a name="l00338"></a>00338           iter != kernels.end(); iter++)
-<a name="l00339"></a>00339       {
-<a name="l00340"></a>00340           <span class="comment">// retrieving the work group ..</span>
-<a name="l00341"></a>00341           std::string          wg_str = parent+<span class="stringliteral">"/kernels/kernel[name='"</span>+*iter+<span class="stringliteral">"']/params/param[name='"</span>+<a class="code" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">val::globsize</a>+<span class="stringliteral">"']/value/text()"</span>;
-<a name="l00342"></a>00342           pugi::xpath_node_set wg_res = paras.<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.select_nodes(wg_str.c_str());  
-<a name="l00343"></a>00343 
-<a name="l00344"></a>00344           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> global_size(0);
-<a name="l00345"></a>00345           
-<a name="l00346"></a>00346           std::stringstream ss;
-<a name="l00347"></a>00347           ss << wg_res[0].node().value();
-<a name="l00348"></a>00348           ss >> global_size;
-<a name="l00349"></a>00349           
-<a name="l00350"></a>00350           <span class="comment">// retrieving the local_workers ..</span>
-<a name="l00351"></a>00351           std::string          lw_str = parent+<span class="stringliteral">"/kernels/kernel[name='"</span>+*iter+<span class="stringliteral">"']/params/param[name='"</span>+<a class="code" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">val::locsize</a>+<span class="stringliteral">"']/value/text()"</span>;
-<a name="l00352"></a>00352           pugi::xpath_node_set lw_res = paras.<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.select_nodes(lw_str.c_str());  
-<a name="l00353"></a>00353 
-<a name="l00354"></a>00354           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> local_workers(0);
-<a name="l00355"></a>00355           
-<a name="l00356"></a>00356           ss.clear();
-<a name="l00357"></a>00357           ss << lw_res[0].node().value();
-<a name="l00358"></a>00358           ss >> local_workers;         
-<a name="l00359"></a>00359           
-<a name="l00360"></a>00360           <span class="comment">//std::cout << "kernel: " << *iter << " wg: " << work_group << " lw: " << local_workers << std::endl;</span>
-<a name="l00361"></a>00361 
-<a name="l00362"></a>00362           <span class="comment">// set the parameters</span>
-<a name="l00363"></a>00363           set_kernel_params<SCALARTYPE,1> (<a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype<VclBasicType>::get</a>(), *iter, global_size, local_workers);
-<a name="l00364"></a>00364           <span class="comment">//set_kernel_params<SCALARTYPE,4> (*iter, work_group * local_workers, local_workers);         </span>
-<a name="l00365"></a>00365           <span class="comment">//set_kernel_params<SCALARTYPE,16>(*iter, work_group * local_workers, local_workers);                 </span>
-<a name="l00366"></a>00366       }
-<a name="l00367"></a>00367     }
-<a name="l00368"></a>00368 
-<a name="l00370"></a>00370     <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00371"></a><a class="code" href="structviennacl_1_1io_1_1to__string.html">00371</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1to__string.html" title="Helper meta-class that converts a type to a string.">to_string</a> {};
-<a name="l00372"></a>00372 
-<a name="l00373"></a>00373     <span class="keyword">template</span> <>
-<a name="l00374"></a><a class="code" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">00374</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1to__string.html" title="Helper meta-class that converts a type to a string.">to_string</a><float>
-<a name="l00375"></a>00375     {
-<a name="l00376"></a><a class="code" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html#a8eb62a380fed2d733fde5168170eea12">00376</a>       <span class="keyword">static</span> std::string <span class="keyword">get</span>() { <span class="keywordflow">return</span> <span class="stringliteral">"float"</span>; }
-<a name="l00377"></a>00377     };
-<a name="l00378"></a>00378 
-<a name="l00379"></a>00379     <span class="keyword">template</span> <>
-<a name="l00380"></a><a class="code" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">00380</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1to__string.html" title="Helper meta-class that converts a type to a string.">to_string</a><double>
-<a name="l00381"></a>00381     {
-<a name="l00382"></a><a class="code" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html#a8eb62a380fed2d733fde5168170eea12">00382</a>       <span class="keyword">static</span> std::string <span class="keyword">get</span>() { <span class="keywordflow">return</span> <span class="stringliteral">"double"</span>; }
-<a name="l00383"></a>00383     };
-<a name="l00384"></a>00384 
-<a name="l00390"></a>00390     <span class="keyword">template</span><<span class="keyword">typename</span> VclBasicType>
-<a name="l00391"></a><a class="code" href="namespaceviennacl_1_1io.html#a09e577fc61b06c9d35573ca2bc9b4181">00391</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#a09e577fc61b06c9d35573ca2bc9b4181" title="The interface function for reading kernel parameters.">read_kernel_parameters</a>(std::string filename)
-<a name="l00392"></a>00392     {
-<a name="l00393"></a>00393       <span class="keyword">typedef</span> <span class="keyword">typename</span> VclBasicType::value_type::value_type   SCALARTYPE;
-<a name="l00394"></a>00394       
-<a name="l00395"></a>00395       <a class="code" href="structviennacl_1_1io_1_1parameter__database.html" title="A XML parameter database using PugiXML. Allows to add tests for different devices and the like...">parameter_database</a>  paras;
-<a name="l00396"></a>00396       paras.<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a8e1b7829ae19153197f38719ce73fb67">load</a>(filename);
-<a name="l00397"></a>00397       
-<a name="l00398"></a>00398       std::string devname   = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07" title="Returns the device name.">name</a>();
-<a name="l00399"></a>00399       
-<a name="l00400"></a>00400       <span class="comment">// check if tune parameters for the current device are present</span>
-<a name="l00401"></a>00401       std::string          device_str = <span class="stringliteral">"/parameters/devices/device[name='"</span>+devname+<span class="stringliteral">"']"</span>;
-<a name="l00402"></a>00402       pugi::xpath_node_set device_res = paras.<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.select_nodes(device_str.c_str());
-<a name="l00403"></a>00403       
-<a name="l00404"></a>00404       <span class="keywordflow">if</span>(device_res.size() == 0)
-<a name="l00405"></a>00405       {
-<a name="l00406"></a>00406           std::cout << <span class="stringliteral">"Tuner: There are no parameters for this device present!"</span> << std::endl;
-<a name="l00407"></a>00407           <span class="comment">// evaluate the parameters for this device?</span>
-<a name="l00408"></a>00408       }
-<a name="l00409"></a>00409       
-<a name="l00410"></a>00410       <span class="comment">// check if tune parameters for float exist</span>
-<a name="l00411"></a>00411       std::string          numeric_str = device_str+<span class="stringliteral">"/tests/test[numeric='"</span>+<a class="code" href="structviennacl_1_1io_1_1to__string.html" title="Helper meta-class that converts a type to a string.">to_string<SCALARTYPE>::get</a>()+<span class="stringliteral">"']"</span>;
-<a name="l00412"></a>00412       pugi::xpath_node_set numeric_res = paras.<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.select_nodes(numeric_str.c_str());
-<a name="l00413"></a>00413 
-<a name="l00414"></a>00414       <span class="keywordflow">if</span>(numeric_res.size() > 0)
-<a name="l00415"></a>00415       {
-<a name="l00416"></a>00416           tune_impl<VclBasicType>(paras, numeric_str);
-<a name="l00417"></a>00417       }
-<a name="l00418"></a>00418       <span class="keywordflow">else</span>
-<a name="l00419"></a>00419       {
-<a name="l00420"></a>00420           std::cout << <span class="stringliteral">"Tuner: There are no parameters for numeric type float present!"</span> << std::endl;   
-<a name="l00421"></a>00421       }
-<a name="l00422"></a>00422 
-<a name="l00423"></a>00423   <span class="comment">//    // check if tune parameters for double exist</span>
-<a name="l00424"></a>00424   <span class="comment">//    std::string          double_str = device_str+"/tests/test[numeric='"+val::dbl+"']";</span>
-<a name="l00425"></a>00425   <span class="comment">//    pugi::xpath_node_set double_res = paras.doc.select_nodes(double_str.c_str());</span>
-<a name="l00426"></a>00426   <span class="comment">// </span>
-<a name="l00427"></a>00427   <span class="comment">//    if(double_res.size() > 0)</span>
-<a name="l00428"></a>00428   <span class="comment">//    {</span>
-<a name="l00429"></a>00429   <span class="comment">//       tune_impl<double>(paras, double_str);</span>
-<a name="l00430"></a>00430   <span class="comment">//    }</span>
-<a name="l00431"></a>00431   <span class="comment">//    else</span>
-<a name="l00432"></a>00432   <span class="comment">//    {</span>
-<a name="l00433"></a>00433   <span class="comment">//       std::cout << "Tuner: There are no parameters for numeric type double present!" << std::endl;   </span>
-<a name="l00434"></a>00434   <span class="comment">//    }</span>
-<a name="l00435"></a>00435 
-<a name="l00436"></a>00436     }
-<a name="l00437"></a>00437 
-<a name="l00438"></a>00438   } <span class="comment">// end namespace io</span>
-<a name="l00439"></a>00439 
-<a name="l00440"></a>00440 } <span class="comment">// end namespace viennacl</span>
-<a name="l00441"></a>00441 
-<a name="l00442"></a>00442 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/local__mem_8hpp.html b/doc/doxygen/html/local__mem_8hpp.html
deleted file mode 100644
index 2e029da..0000000
--- a/doc/doxygen/html/local__mem_8hpp.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/local_mem.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/local_mem.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>A local (shared) memory object for OpenCL.  
-<a href="#_details">More...</a></p>
-
-<p><a href="local__mem_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A class representing local (shared) OpenCL memory. Typically used as kernel argument.  <a href="classviennacl_1_1ocl_1_1local__mem.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A local (shared) memory object for OpenCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/local__mem_8hpp_source.html b/doc/doxygen/html/local__mem_8hpp_source.html
deleted file mode 100644
index 384fefd..0000000
--- a/doc/doxygen/html/local__mem_8hpp_source.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/local_mem.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/local_mem.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="local__mem_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 
-<a name="l00016"></a>00016 <span class="preprocessor">#ifndef _VIENNACL_LOCAL_MEM_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_LOCAL_MEM_HPP_</span>
-<a name="l00018"></a>00018 <span class="preprocessor"></span>
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>viennacl
-<a name="l00024"></a>00024 {
-<a name="l00025"></a>00025   <span class="keyword">namespace </span>ocl
-<a name="l00026"></a>00026   {
-<a name="l00028"></a><a class="code" href="classviennacl_1_1ocl_1_1local__mem.html">00028</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">local_mem</a>
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <span class="keyword">public</span>:
-<a name="l00031"></a><a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a33c50a9e8dcc7fbeeda4b6cadc0e7d53">00031</a>         <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a33c50a9e8dcc7fbeeda4b6cadc0e7d53">local_mem</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> s) : size_(s) {}
-<a name="l00032"></a>00032         
-<a name="l00034"></a><a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a90ca964ebcc1b02bbcde225edd49e812">00034</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns size in bytes.">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> size_; }
-<a name="l00035"></a>00035 
-<a name="l00037"></a><a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a262aef9302860b3cb5f8fc4bee1531da">00037</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a262aef9302860b3cb5f8fc4bee1531da" title="Sets the size of the local memory in bytes.">size</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> s) { size_ = s; }
-<a name="l00038"></a>00038 
-<a name="l00039"></a>00039       <span class="keyword">private</span>:
-<a name="l00040"></a>00040         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size_;
-<a name="l00041"></a>00041     };
-<a name="l00042"></a>00042     
-<a name="l00043"></a>00043   }
-<a name="l00044"></a>00044 }
-<a name="l00045"></a>00045 <span class="preprocessor">#endif</span>
-<a name="l00046"></a>00046 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix_8hpp.html b/doc/doxygen/html/matrix_8hpp.html
deleted file mode 100644
index 9ceee94..0000000
--- a/doc/doxygen/html/matrix_8hpp.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/matrix.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/matrix.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementation of the dense matrix class.  
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__operations_8hpp_source.html">viennacl/linalg/matrix_operations.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__size__deducer_8hpp_source.html">viennacl/tools/matrix_size_deducer.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">viennacl/tools/matrix_kernel_class_deducer.hpp</a>"</code><br/>
-
-<p><a href="matrix_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__major.html">row_major</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for row-major storage of a dense matrix.  <a href="structviennacl_1_1row__major.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1column__major.html">column_major</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression< LHS, RHS, OP ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag indicating iteration along increasing row index of a matrix.  <a href="structviennacl_1_1row__iteration.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag indicating iteration along increasing columns index of a matrix.  <a href="structviennacl_1_1col__iteration.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator< ROWCOL, MATRIXTYPE ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html">matrix< SCALARTYPE, F, ALIGNMENT ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A dense matrix class.  <a href="classviennacl_1_1matrix.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#abc6cd55d2644b2c6b5f69cb733fb6f24">operator<<</a> (std::ostream &s, const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Prints the matrix. Output is compatible to boost::numeric::ublas.  <a href="#abc6cd55d2644b2c6b5f69cb733fb6f24"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab7b70e43299f65259cc61849f9ad997c">operator<<</a> (std::ostream &s, const matrix_expression< LHS, RHS, OP > &expr)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Prints the matrix. Output is compatible to boost::numeric::ublas.  <a href="#ab7b70e43299f65259cc61849f9ad997c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">matrix_expression< const <br class="typebreak"/>
-matrix< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT >, const matrix<br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, op_trans > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c">trans</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &mat)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an expression template class representing a transposed matrix.  <a href="#a95013bc545c5642ccfbd8c5ceb3b885c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a4bd43fae5bc2cdd71e384d1794527add">copy</a> (const CPU_MATRIX &cpu_matrix, matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU).  <a href="#a4bd43fae5bc2cdd71e384d1794527add"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename A1 , typename A2 , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a376734f00b48e1c773c82eb9290c1f08">copy</a> (const std::vector< std::vector< SCALARTYPE, A1 >, A2 > &cpu_matrix, matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense STL-type matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU).  <a href="#a376734f00b48e1c773c82eb9290c1f08"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99">fast_copy</a> (SCALARTYPE *cpu_matrix_begin, SCALARTYPE *cpu_matrix_end, matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without temporary. Matrix-Layout on CPU must be equal to the matrix-layout on the GPU.  <a href="#ab917c8f27a8f1cf7b8d6be54989efb99"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0b4ced508c064fe8b45f437b538ed2ca">copy</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU).  <a href="#a0b4ced508c064fe8b45f437b538ed2ca"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename A1 , typename A2 , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a72359f3759c0067ac956d01c36651f9a">copy</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, std::vector< std::vector< SCALARTYPE, A1 >, A2 > &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU).  <a href="#a72359f3759c0067ac956d01c36651f9a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a2fae23064f21ff285672845e82545fd2">fast_copy</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, SCALARTYPE *cpu_matrix_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU).  <a href="#a2fae23064f21ff285672845e82545fd2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_SCALAR , typename SCALARTYPE , unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod >, const SCALARTYPE, <br class="typebreak"/>
-op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator*</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > &proxy, CPU_SCALAR val)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_SCALAR , typename SCALARTYPE , unsigned int VA1, unsigned int VA2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VA1 >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-VA2 >, op_prod >, const <br class="typebreak"/>
-SCALARTYPE, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ae29e41dc09ce774a0082eb52bdcb81e7">operator*</a> (CPU_SCALAR val, <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA1 >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA2 >, op_prod > const &proxy)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of the dense matrix class. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix_8hpp_source.html b/doc/doxygen/html/matrix_8hpp_source.html
deleted file mode 100644
index 284dbee..0000000
--- a/doc/doxygen/html/matrix_8hpp_source.html
+++ /dev/null
@@ -1,824 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/matrix.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/matrix.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="matrix__operations_8hpp.html" title="Implementations of dense matrix related operations. also matrix-vector products.">viennacl/linalg/matrix_operations.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="matrix__size__deducer_8hpp.html" title="Helper implementations that deduce the dimensions of the supplied matrix-valued expressions.">viennacl/tools/matrix_size_deducer.hpp</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="matrix__kernel__class__deducer_8hpp.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl/tools/matrix_kernel_class_deducer.hpp</a>"</span>
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00034"></a><a class="code" href="structviennacl_1_1row__major.html">00034</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1row__major.html" title="A tag for row-major storage of a dense matrix.">row_major</a>
-<a name="l00035"></a>00035     {
-<a name="l00043"></a><a class="code" href="structviennacl_1_1row__major.html#abf70953c0d567f696a5dc4d3a75d9881">00043</a>       <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structviennacl_1_1row__major.html#abf70953c0d567f696a5dc4d3a75d9881" title="Returns the memory offset for entry (i,j) of a dense matrix.">mem_index</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_cols)
-<a name="l00044"></a>00044       {
-<a name="l00045"></a>00045         <span class="keywordflow">return</span> i * num_cols + j;
-<a name="l00046"></a>00046       }
-<a name="l00047"></a>00047       
-<a name="l00048"></a><a class="code" href="structviennacl_1_1row__major.html#a285614b7315f207587dd60ebcc1e56e5">00048</a>       <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structviennacl_1_1row__major.html#a285614b7315f207587dd60ebcc1e56e5">internal_size1</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a>)
-<a name="l00049"></a>00049       {
-<a name="l00050"></a>00050         <span class="keywordflow">return</span> viennacl::tools::roundUpToNextMultiple<unsigned int>(rows, alignment);;
-<a name="l00051"></a>00051       }
-<a name="l00052"></a>00052       
-<a name="l00053"></a><a class="code" href="structviennacl_1_1row__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">00053</a>       <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structviennacl_1_1row__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">internal_size2</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a>)
-<a name="l00054"></a>00054       {
-<a name="l00055"></a>00055         <span class="keywordflow">return</span> viennacl::tools::roundUpToNextMultiple<unsigned int>(cols, alignment);
-<a name="l00056"></a>00056       }
-<a name="l00057"></a>00057     };
-<a name="l00058"></a>00058 
-<a name="l00059"></a><a class="code" href="structviennacl_1_1column__major.html">00059</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1column__major.html">column_major</a>
-<a name="l00060"></a>00060     {
-<a name="l00068"></a><a class="code" href="structviennacl_1_1column__major.html#abf70953c0d567f696a5dc4d3a75d9881">00068</a>       <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structviennacl_1_1column__major.html#abf70953c0d567f696a5dc4d3a75d9881" title="Returns the memory offset for entry (i,j) of a dense matrix.">mem_index</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_cols)
-<a name="l00069"></a>00069       {
-<a name="l00070"></a>00070         <span class="keywordflow">return</span> i + j * num_rows;
-<a name="l00071"></a>00071       }
-<a name="l00072"></a>00072       
-<a name="l00073"></a><a class="code" href="structviennacl_1_1column__major.html#a285614b7315f207587dd60ebcc1e56e5">00073</a>       <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structviennacl_1_1column__major.html#a285614b7315f207587dd60ebcc1e56e5">internal_size1</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a>)
-<a name="l00074"></a>00074       {
-<a name="l00075"></a>00075         <span class="keywordflow">return</span> viennacl::tools::roundUpToNextMultiple<unsigned int>(rows, alignment);
-<a name="l00076"></a>00076       }
-<a name="l00077"></a>00077       
-<a name="l00078"></a><a class="code" href="structviennacl_1_1column__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">00078</a>       <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structviennacl_1_1column__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">internal_size2</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a>)
-<a name="l00079"></a>00079       {
-<a name="l00080"></a>00080         <span class="keywordflow">return</span> viennacl::tools::roundUpToNextMultiple<unsigned int>(cols, alignment);
-<a name="l00081"></a>00081       }
-<a name="l00082"></a>00082     };
-<a name="l00083"></a>00083     
-<a name="l00084"></a>00084     
-<a name="l00085"></a>00085     <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00086"></a><a class="code" href="classviennacl_1_1matrix__expression.html">00086</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>
-<a name="l00087"></a>00087     {
-<a name="l00088"></a>00088       <span class="keyword">public</span>:
-<a name="l00090"></a>00090         <span class="comment">//*/</span>
-<a name="l00091"></a>00091         <span class="comment">//typedef typename viennacl::tools::VECTOR_EXTRACTOR<LHS, RHS>::ResultType    VectorType;</span>
-<a name="l00092"></a>00092       
-<a name="l00093"></a><a class="code" href="classviennacl_1_1matrix__expression.html#a466edf19960e38ab2eecab2109956c53">00093</a>         <a class="code" href="classviennacl_1_1matrix__expression.html#a466edf19960e38ab2eecab2109956c53" title="Extracts the vector type from the two operands.">matrix_expression</a>(LHS & <a class="code" href="classviennacl_1_1matrix__expression.html#abb680866089de4e937ddc6ce6f1f1830" title="Get left hand side operand.">lhs</a>, RHS & <a class="code" href="classviennacl_1_1matrix__expression.html#a563f5aecaa0755006225235e44a11a82" title="Get right hand side operand.">rhs</a>) : _lhs(lhs), _rhs(rhs) {}
-<a name="l00094"></a>00094         
-<a name="l00097"></a><a class="code" href="classviennacl_1_1matrix__expression.html#abb680866089de4e937ddc6ce6f1f1830">00097</a>         LHS & <a class="code" href="classviennacl_1_1matrix__expression.html#abb680866089de4e937ddc6ce6f1f1830" title="Get left hand side operand.">lhs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _lhs; }
-<a name="l00100"></a><a class="code" href="classviennacl_1_1matrix__expression.html#a563f5aecaa0755006225235e44a11a82">00100</a>         RHS & <a class="code" href="classviennacl_1_1matrix__expression.html#a563f5aecaa0755006225235e44a11a82" title="Get right hand side operand.">rhs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _rhs; }
-<a name="l00101"></a>00101         
-<a name="l00103"></a><a class="code" href="classviennacl_1_1matrix__expression.html#a890ed2f6c982169c737bd4f68b2a5db7">00103</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix__expression.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the size of the result vector.">size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the size of the result vector.">viennacl::tools::MATRIX_SIZE_DEDUCER<LHS, RHS, OP>::size1</a>(_lhs, _rhs); }
-<a name="l00104"></a><a class="code" href="classviennacl_1_1matrix__expression.html#aacffdea3e049b0080b6fa4ac4c2fd881">00104</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix__expression.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html#aacffdea3e049b0080b6fa4ac4c2fd881">viennacl::tools::MATRIX_SIZE_DEDUCER<LHS, RHS, OP>::size2</a>(_lhs, _rhs); }
-<a name="l00105"></a>00105         
-<a name="l00106"></a>00106       <span class="keyword">private</span>:
-<a name="l00108"></a>00108         LHS & _lhs;
-<a name="l00110"></a>00110         RHS & _rhs;
-<a name="l00111"></a>00111     };
-<a name="l00112"></a>00112     
-<a name="l00113"></a>00113     
-<a name="l00115"></a><a class="code" href="structviennacl_1_1row__iteration.html">00115</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1row__iteration.html" title="A tag indicating iteration along increasing row index of a matrix.">row_iteration</a> {};
-<a name="l00116"></a>00116     
-<a name="l00118"></a><a class="code" href="structviennacl_1_1col__iteration.html">00118</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1col__iteration.html" title="A tag indicating iteration along increasing columns index of a matrix.">col_iteration</a> {};
-<a name="l00119"></a>00119 
-<a name="l00120"></a>00120     <span class="comment">//STL-like iterator. TODO: STL-compliance...</span>
-<a name="l00121"></a>00121     <span class="keyword">template</span> <<span class="keyword">typename</span> ROWCOL, <span class="keyword">typename</span> MATRIXTYPE>
-<a name="l00122"></a><a class="code" href="classviennacl_1_1matrix__iterator.html">00122</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a>
-<a name="l00123"></a>00123     {
-<a name="l00124"></a>00124         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1matrix__iterator.html">matrix_iterator<ROWCOL, MATRIXTYPE></a>    <a class="code" href="classviennacl_1_1matrix__iterator.html">self_type</a>;
-<a name="l00125"></a>00125       <span class="keyword">public</span>:
-<a name="l00126"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">00126</a>         <span class="keyword">typedef</span> <span class="keyword">typename</span> MATRIXTYPE::value_type       value_type;
-<a name="l00127"></a>00127         
-<a name="l00128"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#af0a6ccd186d6da5fae3227b45fbfcf5a">00128</a>         <a class="code" href="classviennacl_1_1matrix__iterator.html#af0a6ccd186d6da5fae3227b45fbfcf5a">matrix_iterator</a>(MATRIXTYPE & mat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> start_row, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> start_col) : _mat(mat), _row(start_row), _col(start_col) {};
-<a name="l00129"></a>00129         
-<a name="l00130"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a94001b4941ee37e508c3442528389b16">00130</a>         <a class="code" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">value_type</a> <a class="code" href="classviennacl_1_1matrix__iterator.html#a94001b4941ee37e508c3442528389b16">operator*</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> _mat(_row, _col); }
-<a name="l00131"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#aa5055e4100b53acad1be8697088ff1dc">00131</a>         <a class="code" href="classviennacl_1_1matrix__iterator.html">self_type</a> & <a class="code" href="classviennacl_1_1matrix__iterator.html#aa5055e4100b53acad1be8697088ff1dc">operator++</a>(<span class="keywordtype">void</span>) { <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">viennacl::tools::MATRIX_ITERATOR_INCREMENTER<ROWCOL, MATRIXTYPE>::apply</a>(_mat, _row, _col); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00132"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a4419c6af964a7de542db8474f8ef1091">00132</a>         <a class="code" href="classviennacl_1_1matrix__iterator.html">self_type</a> & <a class="code" href="classviennacl_1_1matrix__iterator.html#a4419c6af964a7de542db8474f8ef1091">operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classviennacl_1_1matrix__iterator.html">self_type</a> tmp = *<span class="keyword">this</span>; ++(*this); <span class="keywordflow">return</span> tmp; }
-<a name="l00133"></a>00133         
-<a name="l00134"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#ad25b9ad360f06fda1535074b749cf023">00134</a>         <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1matrix__iterator.html#ad25b9ad360f06fda1535074b749cf023">operator==</a>(<a class="code" href="classviennacl_1_1matrix__iterator.html">self_type</a> <span class="keyword">const</span> & other) { <span class="keywordflow">return</span> (_row == other._row) && (_col == other._col); }
-<a name="l00135"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a111e186f57ea74111730a997ba77ea17">00135</a>         <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1matrix__iterator.html#a111e186f57ea74111730a997ba77ea17">operator!=</a>(<a class="code" href="classviennacl_1_1matrix__iterator.html">self_type</a> <span class="keyword">const</span> & other) { <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == other); }
-<a name="l00136"></a>00136         
-<a name="l00137"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a4c13e5b96cb010e538968b7c330dbfbd">00137</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix__iterator.html#a4c13e5b96cb010e538968b7c330dbfbd">index1</a>() { <span class="keywordflow">return</span> _row; }
-<a name="l00138"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a3b437ced850483c2d50f888a33463c95">00138</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix__iterator.html#a3b437ced850483c2d50f888a33463c95">index2</a>() { <span class="keywordflow">return</span> _col; }
-<a name="l00139"></a>00139         
-<a name="l00140"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a472f3f82844b2d229acbd12e34d6764b">00140</a>         MATRIXTYPE & <a class="code" href="classviennacl_1_1matrix__iterator.html#a472f3f82844b2d229acbd12e34d6764b">operator()</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _mat; }
-<a name="l00141"></a>00141       
-<a name="l00142"></a>00142       <span class="keyword">private</span>:
-<a name="l00143"></a>00143         MATRIXTYPE & _mat;
-<a name="l00144"></a>00144         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _row;
-<a name="l00145"></a>00145         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _col;
-<a name="l00146"></a>00146     };
-<a name="l00147"></a>00147 
-<a name="l00154"></a>00154     <span class="keyword">template</span> <<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00155"></a><a class="code" href="classviennacl_1_1matrix.html">00155</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>
-<a name="l00156"></a>00156     {
-<a name="l00157"></a>00157       
-<a name="l00158"></a>00158     <span class="keyword">public</span>:
-<a name="l00159"></a>00159       
-<a name="l00160"></a><a class="code" href="classviennacl_1_1matrix.html#ac726b43e88eee76bc8d8eb9dcd8a5fb4">00160</a>       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1matrix__iterator.html">matrix_iterator<row_iteration, matrix<SCALARTYPE, F, ALIGNMENT></a> >   <a class="code" href="classviennacl_1_1matrix__iterator.html">iterator1</a>;
-<a name="l00161"></a><a class="code" href="classviennacl_1_1matrix.html#ac85ff703941f442ef2b38ce83b71d808">00161</a>       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1matrix__iterator.html">matrix_iterator<col_iteration, matrix<SCALARTYPE, F, ALIGNMENT></a> >   <a class="code" href="classviennacl_1_1matrix__iterator.html">iterator2</a>;
-<a name="l00162"></a><a class="code" href="classviennacl_1_1matrix.html#aed985c700866b1bae61cb8bcd5d322fe">00162</a>       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<typename viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT<SCALARTYPE>::ResultType</a>>   <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a>;
-<a name="l00163"></a>00163       
-<a name="l00165"></a><a class="code" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3">00165</a>       <a class="code" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3" title="The default constructor. Does not allocate any memory.">matrix</a>() : _rows(0), _columns(0)
-<a name="l00166"></a>00166       {
-<a name="l00167"></a>00167         <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00168"></a>00168         KernelClass::init();
-<a name="l00169"></a>00169       };
-<a name="l00170"></a>00170       
-<a name="l00176"></a><a class="code" href="classviennacl_1_1matrix.html#a67e5572450ecba91b1bfe1f691236bbd">00176</a>       <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3" title="The default constructor. Does not allocate any memory.">matrix</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> columns) :
-<a name="l00177"></a>00177         _rows(rows), _columns(columns)
-<a name="l00178"></a>00178       {
-<a name="l00179"></a>00179         <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00180"></a>00180         KernelClass::init();
-<a name="l00181"></a>00181         _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00182"></a>00182       }
-<a name="l00183"></a>00183 
-<a name="l00184"></a><a class="code" href="classviennacl_1_1matrix.html#ad97f1c76628466ba92630597913b7798">00184</a>       <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3" title="The default constructor. Does not allocate any memory.">matrix</a>(cl_mem mem, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> columns) :
-<a name="l00185"></a>00185         _rows(rows), _columns(columns)
-<a name="l00186"></a>00186       {
-<a name="l00187"></a>00187         <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00188"></a>00188         KernelClass::init();
-<a name="l00189"></a>00189         _elements = mem;
-<a name="l00190"></a>00190         _elements.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>(); <span class="comment">//prevents that the user-provided memory is deleted once the matrix object is destroyed.</span>
-<a name="l00191"></a>00191       }
-<a name="l00192"></a>00192 
-<a name="l00193"></a>00193       <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00194"></a><a class="code" href="classviennacl_1_1matrix.html#a625b18f427f3642439f1a84f01fd1a16">00194</a>       <a class="code" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3" title="The default constructor. Does not allocate any memory.">matrix</a>(<a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy) : _rows(proxy.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()), _columns(proxy.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>())
-<a name="l00195"></a>00195       {
-<a name="l00196"></a>00196         <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00197"></a>00197         KernelClass::init();
-<a name="l00198"></a>00198         _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00199"></a>00199         
-<a name="l00200"></a>00200         *<span class="keyword">this</span> = proxy;
-<a name="l00201"></a>00201       }
-<a name="l00202"></a>00202 
-<a name="l00203"></a>00203 
-<a name="l00204"></a>00204       <span class="comment">//copy constructor:</span>
-<a name="l00205"></a><a class="code" href="classviennacl_1_1matrix.html#a26544386781d4023aa902d3cb922e0eb">00205</a>       <a class="code" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3" title="The default constructor. Does not allocate any memory.">matrix</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat) :
-<a name="l00206"></a>00206         _rows(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()), _columns(mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>()),
-<a name="l00207"></a>00207         _elements(viennacl::ocl::<a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">current_context</a>().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>()))
-<a name="l00208"></a>00208       {
-<a name="l00209"></a>00209         cl_int err;
-<a name="l00210"></a>00210         err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), 0, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), 0, NULL, NULL);
-<a name="l00211"></a>00211         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00212"></a>00212       }
-<a name="l00213"></a>00213 
-<a name="l00214"></a><a class="code" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">00214</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat)
-<a name="l00215"></a>00215       {
-<a name="l00216"></a>00216         <a class="code" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23" title="Resizes the matrix. Existing entries can be preserved, but.">resize</a>(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), <span class="keyword">false</span>);
-<a name="l00217"></a>00217         cl_int err;
-<a name="l00218"></a>00218         err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), 0, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), 0, NULL, NULL);
-<a name="l00219"></a>00219         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00220"></a>00220         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00221"></a>00221       }
-<a name="l00222"></a>00222       
-<a name="l00223"></a><a class="code" href="classviennacl_1_1matrix.html#a8130ec92bb6c6f3d9522c5e32528bdfc">00223</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00224"></a>00224                                                                             <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00225"></a>00225                                                                             op_trans> & proxy)
-<a name="l00226"></a>00226       {
-<a name="l00227"></a>00227         assert(<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != proxy.lhs().<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>() && <span class="stringliteral">"Self-assignment of matrix transpose not implemented"</span>);
-<a name="l00228"></a>00228         assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() && <span class="stringliteral">"Matrix dimensions do not match!"</span>);
-<a name="l00229"></a>00229         assert(proxy.lhs().size2() == <a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() && <span class="stringliteral">"Matrix dimensions do not match!"</span>);
-<a name="l00230"></a>00230 
-<a name="l00231"></a>00231         <a class="code" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23" title="Resizes the matrix. Existing entries can be preserved, but.">resize</a>(proxy.lhs().size2(), proxy.lhs().size1(), <span class="keyword">false</span>);
-<a name="l00232"></a>00232         
-<a name="l00233"></a>00233         std::vector<SCALARTYPE> temp(proxy.lhs().internal_size());
-<a name="l00234"></a>00234         
-<a name="l00235"></a>00235         cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(),
-<a name="l00236"></a>00236                                          proxy.lhs().<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>(), CL_TRUE, 0,
-<a name="l00237"></a>00237                                          <span class="keyword">sizeof</span>(SCALARTYPE)*proxy.lhs().internal_size(),
-<a name="l00238"></a>00238                                          &(temp[0]), 0, NULL, NULL);
-<a name="l00239"></a>00239         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00240"></a>00240         <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00241"></a>00241 
-<a name="l00242"></a>00242         <span class="comment">/*</span>
-<a name="l00243"></a>00243 <span class="comment">        for (size_t i=0; i<proxy.lhs().size1(); ++i)</span>
-<a name="l00244"></a>00244 <span class="comment">        {</span>
-<a name="l00245"></a>00245 <span class="comment">          for (size_t j=0; j<proxy.lhs().size2(); ++j)</span>
-<a name="l00246"></a>00246 <span class="comment">            std::cout << temp[F::mem_index(i,j, proxy.lhs().internal_size1(), proxy.lhs().internal_size2())] << ", ";</span>
-<a name="l00247"></a>00247 <span class="comment">        }*/</span>
-<a name="l00248"></a>00248         
-<a name="l00249"></a>00249         std::vector<SCALARTYPE> temp_trans(<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00250"></a>00250 
-<a name="l00251"></a>00251         <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<proxy.lhs().size1(); ++i)
-<a name="l00252"></a>00252           <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j=0; j<proxy.lhs().size2(); ++j)
-<a name="l00253"></a>00253             temp_trans[F::mem_index(j,i, <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>())] 
-<a name="l00254"></a>00254              = temp[F::mem_index(i,j, proxy.lhs().internal_size1(), proxy.lhs().internal_size2())];
-<a name="l00255"></a>00255 
-<a name="l00256"></a>00256         <span class="comment">/*     </span>
-<a name="l00257"></a>00257 <span class="comment">        for (size_t i=0; i<proxy.lhs().size1(); ++i)</span>
-<a name="l00258"></a>00258 <span class="comment">        {</span>
-<a name="l00259"></a>00259 <span class="comment">          for (size_t j=0; j<proxy.lhs().size2(); ++j)</span>
-<a name="l00260"></a>00260 <span class="comment">            std::cout << temp_trans[F::mem_index(i,j, proxy.lhs().internal_size1(), proxy.lhs().internal_size2())] << ", ";</span>
-<a name="l00261"></a>00261 <span class="comment">        }*/</span>
-<a name="l00262"></a>00262         
-<a name="l00263"></a>00263         _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, 
-<a name="l00264"></a>00264                                                                    <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(),
-<a name="l00265"></a>00265                                                                    &(temp_trans[0]));
-<a name="l00266"></a>00266           
-<a name="l00267"></a>00267         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00268"></a>00268       }
-<a name="l00269"></a>00269 
-<a name="l00270"></a>00270 
-<a name="l00271"></a>00271 
-<a name="l00279"></a><a class="code" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23">00279</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23" title="Resizes the matrix. Existing entries can be preserved, but.">resize</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> columns, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>)
-<a name="l00280"></a>00280       {
-<a name="l00281"></a>00281         assert(rows > 0 && columns > 0);
-<a name="l00282"></a>00282         <span class="keywordflow">if</span> (preserve)
-<a name="l00283"></a>00283         {
-<a name="l00284"></a>00284           <span class="comment">//get old entries:</span>
-<a name="l00285"></a>00285           std::vector< SCALARTYPE > old_entries(<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00286"></a>00286           cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <span class="comment">//src</span>
-<a name="l00287"></a>00287                                            <a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <span class="comment">//dest</span>
-<a name="l00288"></a>00288                                            CL_TRUE, <span class="comment">//blocking</span>
-<a name="l00289"></a>00289                                            0, <span class="comment">//offset</span>
-<a name="l00290"></a>00290                                            <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), <span class="comment">//size</span>
-<a name="l00291"></a>00291                                            &(old_entries[0]), <span class="comment">//destination</span>
-<a name="l00292"></a>00292                                            0, NULL, NULL);
-<a name="l00293"></a>00293           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00294"></a>00294           
-<a name="l00295"></a>00295           <span class="comment">//set up entries of new matrix:</span>
-<a name="l00296"></a>00296           std::vector< SCALARTYPE > new_entries(F::internal_size1(rows, ALIGNMENT) * F::internal_size2(columns, ALIGNMENT));
-<a name="l00297"></a>00297           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i<rows; ++i)
-<a name="l00298"></a>00298           {
-<a name="l00299"></a>00299             <span class="keywordflow">if</span> (i >= _rows)
-<a name="l00300"></a>00300               <span class="keywordflow">continue</span>;
-<a name="l00301"></a>00301               
-<a name="l00302"></a>00302             <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j=0; j<columns; ++j)
-<a name="l00303"></a>00303             {
-<a name="l00304"></a>00304               <span class="keywordflow">if</span> (j >= _columns)
-<a name="l00305"></a>00305                 <span class="keywordflow">continue</span>;
-<a name="l00306"></a>00306               new_entries[F::mem_index(i, j, F::internal_size1(rows, ALIGNMENT), F::internal_size2(columns, ALIGNMENT))] 
-<a name="l00307"></a>00307                  = old_entries[F::mem_index(i, j, <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>())];
-<a name="l00308"></a>00308             }
-<a name="l00309"></a>00309           }
-<a name="l00310"></a>00310           
-<a name="l00311"></a>00311           <span class="comment">//copy new entries to GPU:</span>
-<a name="l00312"></a>00312           _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, new_entries);
-<a name="l00313"></a>00313           _rows = rows;
-<a name="l00314"></a>00314           _columns = columns;
-<a name="l00315"></a>00315         }
-<a name="l00316"></a>00316         <span class="keywordflow">else</span> <span class="comment">//discard old entries:</span>
-<a name="l00317"></a>00317         {
-<a name="l00318"></a>00318           _rows = rows;
-<a name="l00319"></a>00319           _columns = columns;
-<a name="l00320"></a>00320           
-<a name="l00321"></a>00321           std::vector< SCALARTYPE > new_entries(F::internal_size1(rows, ALIGNMENT) * F::internal_size2(columns, ALIGNMENT));
-<a name="l00322"></a>00322           _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, new_entries);
-<a name="l00323"></a>00323         }
-<a name="l00324"></a>00324       }
-<a name="l00325"></a>00325       
-<a name="l00326"></a>00326       
-<a name="l00327"></a>00327       <span class="comment">//read-write access to an element of the vector</span>
-<a name="l00330"></a><a class="code" href="classviennacl_1_1matrix.html#aee035c6150315c1511e4abfda4b17571">00330</a> <span class="comment"></span>      <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a> <a class="code" href="classviennacl_1_1matrix.html#aee035c6150315c1511e4abfda4b17571" title="Read-write access to a single element of the vector.">operator()</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row_index, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> col_index)
-<a name="l00331"></a>00331       {
-<a name="l00332"></a>00332         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a>(F::mem_index(row_index, col_index, <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>()), _elements);
-<a name="l00333"></a>00333       }
-<a name="l00334"></a>00334       
-<a name="l00337"></a><a class="code" href="classviennacl_1_1matrix.html#a85566d47047a4d034c6f5afcb3411b33">00337</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <a class="code" href="classviennacl_1_1matrix.html#aee035c6150315c1511e4abfda4b17571" title="Read-write access to a single element of the vector.">operator()</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row_index, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> col_index)<span class="keyword"> const</span>
-<a name="l00338"></a>00338 <span class="keyword">      </span>{
-<a name="l00339"></a>00339         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> tmp;
-<a name="l00340"></a>00340         cl_int err;
-<a name="l00341"></a>00341         err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(),
-<a name="l00342"></a>00342                                   _elements,
-<a name="l00343"></a>00343                                   tmp.<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(),
-<a name="l00344"></a>00344                                   <span class="keyword">sizeof</span>(SCALARTYPE) * F::mem_index(row_index, col_index, <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>()),
-<a name="l00345"></a>00345                                   0,
-<a name="l00346"></a>00346                                   <span class="keyword">sizeof</span>(SCALARTYPE),
-<a name="l00347"></a>00347                                   0,
-<a name="l00348"></a>00348                                   NULL,
-<a name="l00349"></a>00349                                   NULL);
-<a name="l00350"></a>00350         <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00351"></a>00351         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00352"></a>00352         <span class="keywordflow">return</span> tmp;
-<a name="l00353"></a>00353       }
-<a name="l00354"></a>00354       
-<a name="l00355"></a>00355 
-<a name="l00356"></a>00356       <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00357"></a>00357                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00358"></a>00358                          op_add >
-<a name="l00359"></a><a class="code" href="classviennacl_1_1matrix.html#a7693f9e5a4310f9f89ab8c5fadc2c5c0">00359</a>       <a class="code" href="classviennacl_1_1matrix.html#a7693f9e5a4310f9f89ab8c5fadc2c5c0">operator + </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix< SCALARTYPE, F, ALIGNMENT></a> & other) 
-<a name="l00360"></a>00360       {
-<a name="l00361"></a>00361         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00362"></a>00362                                   <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00363"></a>00363                                   op_add > (*<span class="keyword">this</span>, other);
-<a name="l00364"></a>00364       }
-<a name="l00365"></a>00365 
-<a name="l00366"></a>00366 
-<a name="l00367"></a><a class="code" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">00367</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix< SCALARTYPE, F, ALIGNMENT></a> & other) 
-<a name="l00368"></a>00368       {
-<a name="l00369"></a>00369         <a class="code" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950" title="Adds a dense matrix to another.">viennacl::linalg::inplace_add</a>(*<span class="keyword">this</span>, other);
-<a name="l00370"></a>00370         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00371"></a>00371       }
-<a name="l00372"></a>00372 
-<a name="l00373"></a>00373       <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00374"></a>00374                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00375"></a>00375                          op_sub >
-<a name="l00376"></a><a class="code" href="classviennacl_1_1matrix.html#ada8b83b6ead4dfed5ec3c087580cf6b9">00376</a>       <a class="code" href="classviennacl_1_1matrix.html#ada8b83b6ead4dfed5ec3c087580cf6b9">operator - </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix< SCALARTYPE, F, ALIGNMENT></a> & other) 
-<a name="l00377"></a>00377       {
-<a name="l00378"></a>00378         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00379"></a>00379                                   <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00380"></a>00380                                   op_sub > (*<span class="keyword">this</span>, other);
-<a name="l00381"></a>00381       }
-<a name="l00382"></a>00382 
-<a name="l00383"></a><a class="code" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">00383</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix< SCALARTYPE, F, ALIGNMENT></a> & other) 
-<a name="l00384"></a>00384       {
-<a name="l00385"></a>00385         <a class="code" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6" title="Adds a dense matrix to another.">viennacl::linalg::inplace_sub</a>(*<span class="keyword">this</span>, other);
-<a name="l00386"></a>00386         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00387"></a>00387       }
-<a name="l00388"></a>00388 
-<a name="l00389"></a>00389       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00390"></a><a class="code" href="classviennacl_1_1matrix.html#a0e5c37d9c65e5c457816ebabde5dfe6b">00390</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A1></a>,
-<a name="l00391"></a>00391                                                                                <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A2></a>,
-<a name="l00392"></a>00392                                                                                op_prod > & proxy) 
-<a name="l00393"></a>00393       {
-<a name="l00394"></a>00394         <a class="code" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716" title="The implementation of the operation mat += vec1 * vec2^T, i.e. a rank 1 update.">viennacl::linalg::rank_1_update</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00395"></a>00395         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00396"></a>00396       }
-<a name="l00397"></a>00397 
-<a name="l00398"></a>00398       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00399"></a><a class="code" href="classviennacl_1_1matrix.html#ac48ef303a00c6f0418fd991779bba455">00399</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A1></a>,
-<a name="l00400"></a>00400                                                                                <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A2></a>,
-<a name="l00401"></a>00401                                                                                op_prod > & proxy) 
-<a name="l00402"></a>00402       {
-<a name="l00403"></a>00403         <a class="code" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85" title="The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update...">viennacl::linalg::scaled_rank_1_update</a>(*<span class="keyword">this</span>, static_cast<SCALARTYPE>(-1.0), proxy.lhs(), proxy.rhs());
-<a name="l00404"></a>00404         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00405"></a>00405       }
-<a name="l00406"></a>00406 
-<a name="l00407"></a>00407       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00408"></a><a class="code" href="classviennacl_1_1matrix.html#a9f0249af669fc7dfa3e9baf15c74fefb">00408</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A1></a>,
-<a name="l00409"></a>00409                                                                                                         <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A2></a>,
-<a name="l00410"></a>00410                                                                                                         op_prod >,
-<a name="l00411"></a>00411                                                                                <span class="keyword">const</span> SCALARTYPE,
-<a name="l00412"></a>00412                                                                                op_prod > & proxy) 
-<a name="l00413"></a>00413       {
-<a name="l00414"></a>00414         <a class="code" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85" title="The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update...">viennacl::linalg::scaled_rank_1_update</a>(*<span class="keyword">this</span>, proxy.rhs(), proxy.lhs().lhs(), proxy.lhs().rhs());
-<a name="l00415"></a>00415         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00416"></a>00416       }
-<a name="l00417"></a>00417 
-<a name="l00418"></a>00418       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00419"></a><a class="code" href="classviennacl_1_1matrix.html#abf94aa936b88e8840684fdcb71c975af">00419</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A1></a>,
-<a name="l00420"></a>00420                                                                                                         <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A2></a>,
-<a name="l00421"></a>00421                                                                                                         op_prod >,
-<a name="l00422"></a>00422                                                                                <span class="keyword">const</span> SCALARTYPE,
-<a name="l00423"></a>00423                                                                                op_prod > & proxy) 
-<a name="l00424"></a>00424       {
-<a name="l00425"></a>00425         <a class="code" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85" title="The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update...">viennacl::linalg::scaled_rank_1_update</a>(*<span class="keyword">this</span>, static_cast<SCALARTYPE>(-1.0) * proxy.rhs(), proxy.lhs().lhs(), proxy.lhs().rhs());
-<a name="l00426"></a>00426         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00427"></a>00427       }
-<a name="l00428"></a>00428       
-<a name="l00429"></a>00429       
-<a name="l00430"></a><a class="code" href="classviennacl_1_1matrix.html#af9d2e9edda2d1896fcbcf2d6068bd90f">00430</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#af9d2e9edda2d1896fcbcf2d6068bd90f">operator *= </a>(SCALARTYPE val) 
-<a name="l00431"></a>00431       {
-<a name="l00432"></a>00432         <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_mult</a>(*<span class="keyword">this</span>, val);
-<a name="l00433"></a>00433         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00434"></a>00434       }
-<a name="l00435"></a>00435 
-<a name="l00436"></a><a class="code" href="classviennacl_1_1matrix.html#ab87ac2c48bb2b05ce27a01180e09f869">00436</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#af9d2e9edda2d1896fcbcf2d6068bd90f">operator *= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & val) 
-<a name="l00437"></a>00437       {
-<a name="l00438"></a>00438         <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_mult</a>(*<span class="keyword">this</span>, val);
-<a name="l00439"></a>00439         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00440"></a>00440       }
-<a name="l00441"></a>00441 
-<a name="l00442"></a><a class="code" href="classviennacl_1_1matrix.html#a9bc4ea8061b64ebd021610e805e00f76">00442</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#a9bc4ea8061b64ebd021610e805e00f76">operator /= </a>(SCALARTYPE val) 
-<a name="l00443"></a>00443       {
-<a name="l00444"></a>00444         <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_mult</a>(*<span class="keyword">this</span>, SCALARTYPE(1.0) / val);
-<a name="l00445"></a>00445         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00446"></a>00446       }
-<a name="l00447"></a>00447 
-<a name="l00448"></a><a class="code" href="classviennacl_1_1matrix.html#a613b5b6e9bc337aea80d09e92179c204">00448</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#a9bc4ea8061b64ebd021610e805e00f76">operator /= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & val) 
-<a name="l00449"></a>00449       {
-<a name="l00450"></a>00450         <a class="code" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_divide</a>(*<span class="keyword">this</span>, val);
-<a name="l00451"></a>00451         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00452"></a>00452       }
-<a name="l00453"></a>00453 
-<a name="l00454"></a>00454 
-<a name="l00455"></a>00455       <span class="comment">//this = A * B and related (with trans())</span>
-<a name="l00456"></a>00456       <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType1, <span class="keyword">typename</span> MatrixType2>
-<a name="l00457"></a><a class="code" href="classviennacl_1_1matrix.html#adc76eef234678aba57478ab41b5880f1">00457</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< MatrixType1,
-<a name="l00458"></a>00458                                                                               MatrixType2,
-<a name="l00459"></a>00459                                                                               op_prod > & proxy) 
-<a name="l00460"></a>00460       {
-<a name="l00461"></a>00461         <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00462"></a>00462         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00463"></a>00463       }
-<a name="l00464"></a>00464 
-<a name="l00465"></a>00465       <span class="comment">//this = A + B</span>
-<a name="l00466"></a><a class="code" href="classviennacl_1_1matrix.html#a3aaa450a353d0d7ff4bf89740a92a5c3">00466</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00467"></a>00467                                                                                <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00468"></a>00468                                                                                op_add > & proxy) 
-<a name="l00469"></a>00469       {
-<a name="l00470"></a>00470         <a class="code" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f" title="Adds two dense matrices and writes the result to a third matrix.">viennacl::linalg::add</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00471"></a>00471         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00472"></a>00472       }
-<a name="l00473"></a>00473 
-<a name="l00474"></a>00474       <span class="comment">//this = A - B</span>
-<a name="l00475"></a><a class="code" href="classviennacl_1_1matrix.html#aaa1fd1f887b588b66d3eae3a264b09cb">00475</a>       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00476"></a>00476                                                                                <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00477"></a>00477                                                                                op_sub > & proxy) 
-<a name="l00478"></a>00478       {
-<a name="l00479"></a>00479         <a class="code" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e" title="Adds two dense matrices and writes the result to a third matrix.">viennacl::linalg::sub</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00480"></a>00480         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00481"></a>00481       }
-<a name="l00482"></a>00482 
-<a name="l00483"></a>00483 
-<a name="l00485"></a><a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4">00485</a>       <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & <a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _rows;}
-<a name="l00487"></a><a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">00487</a>       <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & <a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _columns; }
-<a name="l00488"></a>00488       
-<a name="l00490"></a><a class="code" href="classviennacl_1_1matrix.html#ac8bb3912a3ce86b15842e79d0b421204">00490</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#ac8bb3912a3ce86b15842e79d0b421204" title="Resets all entries to zero.">clear</a>()
-<a name="l00491"></a>00491       {
-<a name="l00492"></a>00492         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a> = <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>() * <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>();
-<a name="l00493"></a>00493         
-<a name="l00494"></a>00494         <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00495"></a>00495         
-<a name="l00496"></a>00496         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"clear"</span>);
-<a name="l00497"></a>00497         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(_elements, internal_size));
-<a name="l00498"></a>00498       }
-<a name="l00499"></a>00499       
-<a name="l00500"></a>00500       
-<a name="l00501"></a>00501       <span class="comment">//const unsigned int row_stride() const { return roundUpToNextMultiple<unsigned int>(columns(), ALIGNMENT); }</span>
-<a name="l00503"></a><a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3">00503</a> <span class="comment"></span>      <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">F::internal_size1</a>(<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), ALIGNMENT); }
-<a name="l00505"></a><a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335">00505</a>       <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">F::internal_size2</a>(<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), ALIGNMENT); }
-<a name="l00507"></a><a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34">00507</a>       <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>() * <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(); }
-<a name="l00508"></a>00508       
-<a name="l00510"></a><a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c">00510</a>       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _elements; }
-<a name="l00511"></a>00511       
-<a name="l00512"></a>00512 <span class="preprocessor">      #if defined(_MSC_VER) && _MSC_VER < 1500          //Visual Studio 2005 needs special treatment</span>
-<a name="l00513"></a>00513 <span class="preprocessor"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX>
-<a name="l00514"></a>00514       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix,
-<a name="l00515"></a>00515                       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> & gpu_matrix );
-<a name="l00516"></a>00516       
-<a name="l00517"></a>00517       <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE2, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2>
-<a name="l00518"></a>00518       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> std::vector< std::vector<SCALARTYPE2, A1>, A2> & cpu_matrix,
-<a name="l00519"></a>00519                       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> & gpu_matrix );
-<a name="l00520"></a>00520       
-<a name="l00521"></a>00521       <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE2>
-<a name="l00522"></a>00522       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a482880bc796727f4dcb859a2ceb64c6d">fast_copy</a>(SCALARTYPE2 * cpu_matrix_begin,
-<a name="l00523"></a>00523                             SCALARTYPE2 * cpu_matrix_end,
-<a name="l00524"></a>00524                             <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> & gpu_matrix);
-<a name="l00525"></a>00525       
-<a name="l00526"></a>00526 <span class="preprocessor">      #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00527"></a>00527 <span class="preprocessor"></span>      <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> Eigen::MatrixXf & cpu_matrix,
-<a name="l00528"></a>00528                        <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> & gpu_matrix);
-<a name="l00529"></a>00529       
-<a name="l00530"></a>00530       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> Eigen::MatrixXd & cpu_matrix,
-<a name="l00531"></a>00531                        <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> & gpu_matrix);
-<a name="l00532"></a>00532 <span class="preprocessor">      #endif</span>
-<a name="l00533"></a>00533 <span class="preprocessor"></span>      
-<a name="l00534"></a>00534 <span class="preprocessor">      #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00535"></a>00535 <span class="preprocessor"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE2, <span class="keyword">typename</span> T>
-<a name="l00536"></a>00536       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> mtl::dense2D<SCALARTYPE2, T>& cpu_matrix,
-<a name="l00537"></a>00537                        <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> & gpu_matrix);
-<a name="l00538"></a>00538 <span class="preprocessor">      #endif</span>
-<a name="l00539"></a>00539 <span class="preprocessor"></span><span class="preprocessor">      #else</span>
-<a name="l00540"></a>00540 <span class="preprocessor"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE2, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00541"></a>00541       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix,
-<a name="l00542"></a>00542                       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE2, F2, ALIGNMENT2></a> & gpu_matrix );
-<a name="l00543"></a>00543                       
-<a name="l00544"></a>00544       <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE2, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00545"></a>00545       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> std::vector< std::vector<SCALARTYPE2, A1>, A2> & cpu_matrix,
-<a name="l00546"></a>00546                        <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE2, F2, ALIGNMENT2></a> & gpu_matrix );
-<a name="l00547"></a>00547       
-<a name="l00548"></a>00548       <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE2, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00549"></a>00549       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a482880bc796727f4dcb859a2ceb64c6d">fast_copy</a>(SCALARTYPE2 * cpu_matrix_begin,
-<a name="l00550"></a>00550                             SCALARTYPE2 * cpu_matrix_end,
-<a name="l00551"></a>00551                             <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE2, F2, ALIGNMENT2></a> & gpu_matrix);
-<a name="l00552"></a>00552       
-<a name="l00553"></a>00553 <span class="preprocessor">      #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00554"></a>00554 <span class="preprocessor"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00555"></a>00555       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> Eigen::MatrixXf & cpu_matrix,
-<a name="l00556"></a>00556                 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<float, F2, ALIGNMENT2></a> & gpu_matrix);
-<a name="l00557"></a>00557       
-<a name="l00558"></a>00558       <span class="keyword">template</span> <<span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00559"></a>00559       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> Eigen::MatrixXd & cpu_matrix,
-<a name="l00560"></a>00560                 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<double, F2, ALIGNMENT2></a> & gpu_matrix);
-<a name="l00561"></a>00561 <span class="preprocessor">      #endif</span>
-<a name="l00562"></a>00562 <span class="preprocessor"></span>      
-<a name="l00563"></a>00563 <span class="preprocessor">      #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00564"></a>00564 <span class="preprocessor"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE2, <span class="keyword">typename</span> T, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00565"></a>00565       <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> mtl::dense2D<SCALARTYPE2, T>& cpu_matrix,
-<a name="l00566"></a>00566                        <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE2, F2, ALIGNMENT2></a> & gpu_matrix);
-<a name="l00567"></a>00567 <span class="preprocessor">      #endif</span>
-<a name="l00568"></a>00568 <span class="preprocessor"></span><span class="preprocessor">      #endif                 </span>
-<a name="l00569"></a>00569 <span class="preprocessor"></span>      
-<a name="l00570"></a>00570     <span class="keyword">private</span>:
-<a name="l00571"></a>00571       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _rows;
-<a name="l00572"></a>00572       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _columns;
-<a name="l00573"></a>00573       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> _elements;
-<a name="l00574"></a>00574     }; <span class="comment">//matrix</span>
-<a name="l00575"></a>00575 
-<a name="l00581"></a>00581     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00582"></a><a class="code" href="namespaceviennacl.html#abc6cd55d2644b2c6b5f69cb733fb6f24">00582</a>     std::ostream & operator<<(std::ostream & s, const matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix)
-<a name="l00583"></a>00583     {
-<a name="l00584"></a>00584       std::vector<SCALARTYPE> tmp(gpu_matrix.internal_size());
-<a name="l00585"></a>00585       cl_int err;
-<a name="l00586"></a>00586       err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE) * gpu_matrix.internal_size(), &tmp[0], 0, NULL, NULL);
-<a name="l00587"></a>00587       <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00588"></a>00588       <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00589"></a>00589       
-<a name="l00590"></a>00590       s << <span class="stringliteral">"["</span> << gpu_matrix.size1() << <span class="stringliteral">","</span> << gpu_matrix.size2() << <span class="stringliteral">"]"</span>;
-<a name="l00591"></a>00591       
-<a name="l00592"></a>00592       s << <span class="stringliteral">"("</span>;
-<a name="l00593"></a>00593       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.size1(); ++i)
-<a name="l00594"></a>00594       {
-<a name="l00595"></a>00595         s << <span class="stringliteral">"("</span>;
-<a name="l00596"></a>00596         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.size2(); ++j)
-<a name="l00597"></a>00597         {
-<a name="l00598"></a>00598           s << tmp[ i * gpu_matrix.internal_size2() + j ];
-<a name="l00599"></a>00599           <span class="keywordflow">if</span> (j < gpu_matrix.size2() - 1)
-<a name="l00600"></a>00600             s << <span class="stringliteral">","</span>;
-<a name="l00601"></a>00601         }
-<a name="l00602"></a>00602         s << <span class="stringliteral">")"</span>;
-<a name="l00603"></a>00603         <span class="keywordflow">if</span> (i < gpu_matrix.size1() - 1)
-<a name="l00604"></a>00604           s << <span class="stringliteral">","</span>;
-<a name="l00605"></a>00605       }
-<a name="l00606"></a>00606       s << <span class="stringliteral">")"</span>;
-<a name="l00607"></a>00607       <span class="keywordflow">return</span> s;
-<a name="l00608"></a>00608     }
-<a name="l00609"></a>00609 
-<a name="l00615"></a>00615     <span class="keyword">template</span><<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00616"></a><a class="code" href="namespaceviennacl.html#ab7b70e43299f65259cc61849f9ad997c">00616</a>     std::ostream & operator<<(std::ostream & s, const matrix_expression<LHS, RHS, OP> & expr)
-<a name="l00617"></a>00617     {
-<a name="l00618"></a>00618       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< typename tools::CONST_REMOVER<LHS>::ResultType</a> >::ResultType     ScalarType;
-<a name="l00619"></a>00619 
-<a name="l00620"></a>00620       <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<ScalarType></a> temp = expr;
-<a name="l00621"></a>00621       s << temp;
-<a name="l00622"></a>00622       <span class="keywordflow">return</span> s;
-<a name="l00623"></a>00623     }
-<a name="l00624"></a>00624     
-<a name="l00626"></a>00626     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00627"></a>00627     matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT>,
-<a name="l00628"></a>00628                        <span class="keyword">const</span> matrix<SCALARTYPE, F, ALIGNMENT>,
-<a name="l00629"></a><a class="code" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c">00629</a>                        op_trans> <a class="code" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c" title="Returns an expression template class representing a transposed matrix.">trans</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat)
-<a name="l00630"></a>00630     {
-<a name="l00631"></a>00631       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00632"></a>00632                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00633"></a>00633                                 op_trans>(mat, mat);
-<a name="l00634"></a>00634     }
-<a name="l00635"></a>00635     
-<a name="l00636"></a>00636     
-<a name="l00638"></a>00638 
-<a name="l00639"></a>00639     <span class="comment">//</span>
-<a name="l00640"></a>00640     <span class="comment">//cpu to gpu, generic type:</span>
-<a name="l00641"></a>00641     <span class="comment">//</span>
-<a name="l00647"></a>00647 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00648"></a><a class="code" href="namespaceviennacl.html#a4bd43fae5bc2cdd71e384d1794527add">00648</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix,
-<a name="l00649"></a>00649               <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & gpu_matrix )
-<a name="l00650"></a>00650     {
-<a name="l00651"></a>00651       gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23" title="Resizes the matrix. Existing entries can be preserved, but.">resize</a>(static_cast<unsigned int>(cpu_matrix.size1()),
-<a name="l00652"></a>00652                         static_cast<unsigned int>(cpu_matrix.size2()), <span class="keyword">false</span>);
-<a name="l00653"></a>00653 
-<a name="l00654"></a>00654       std::vector<SCALARTYPE> data(gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00655"></a>00655       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); ++i)
-<a name="l00656"></a>00656       {
-<a name="l00657"></a>00657         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(); ++j) 
-<a name="l00658"></a>00658           data[F::mem_index(i, j, gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>())] = cpu_matrix(i,j);
-<a name="l00659"></a>00659       }
-<a name="l00660"></a>00660       
-<a name="l00661"></a>00661       gpu_matrix._elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, data);
-<a name="l00662"></a>00662     }
-<a name="l00663"></a>00663     
-<a name="l00664"></a>00664     <span class="comment">//</span>
-<a name="l00665"></a>00665     <span class="comment">//cpu to gpu, STL type:</span>
-<a name="l00666"></a>00666     <span class="comment">//</span>
-<a name="l00672"></a>00672 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00673"></a><a class="code" href="namespaceviennacl.html#a376734f00b48e1c773c82eb9290c1f08">00673</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> std::vector< std::vector<SCALARTYPE, A1>, A2> & cpu_matrix,
-<a name="l00674"></a>00674               <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & gpu_matrix )
-<a name="l00675"></a>00675     {
-<a name="l00676"></a>00676       gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23" title="Resizes the matrix. Existing entries can be preserved, but.">resize</a>(static_cast<unsigned int>(cpu_matrix.size()),
-<a name="l00677"></a>00677                         static_cast<unsigned int>(cpu_matrix[0].<a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>()),
-<a name="l00678"></a>00678                         <span class="keyword">false</span>);
-<a name="l00679"></a>00679 
-<a name="l00680"></a>00680       std::vector<SCALARTYPE> data(gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00681"></a>00681       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); ++i)
-<a name="l00682"></a>00682       {
-<a name="l00683"></a>00683         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(); ++j) 
-<a name="l00684"></a>00684           data[F::mem_index(i, j, gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>())] = cpu_matrix[i][j];
-<a name="l00685"></a>00685       }
-<a name="l00686"></a>00686       
-<a name="l00687"></a>00687       gpu_matrix._elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, data);
-<a name="l00688"></a>00688     }
-<a name="l00689"></a>00689     
-<a name="l00690"></a>00690     
-<a name="l00691"></a>00691     <span class="comment">//</span>
-<a name="l00692"></a>00692     <span class="comment">//cpu to gpu, another STL type:</span>
-<a name="l00693"></a>00693     <span class="comment">//</span>
-<a name="l00700"></a>00700 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00701"></a><a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99">00701</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(SCALARTYPE * cpu_matrix_begin,
-<a name="l00702"></a>00702                    SCALARTYPE * cpu_matrix_end,
-<a name="l00703"></a>00703                    <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & gpu_matrix)
-<a name="l00704"></a>00704     {
-<a name="l00705"></a>00705       gpu_matrix._elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE,
-<a name="l00706"></a>00706                                                                             <span class="keyword">sizeof</span>(SCALARTYPE) * (cpu_matrix_end - cpu_matrix_begin),
-<a name="l00707"></a>00707                                                                             cpu_matrix_begin);
-<a name="l00708"></a>00708     }
-<a name="l00709"></a>00709     
-<a name="l00710"></a>00710    
-<a name="l00711"></a>00711 <span class="preprocessor">    #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00712"></a>00712 <span class="preprocessor"></span>
-<a name="l00717"></a>00717     <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00718"></a>00718     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> Eigen::MatrixXf & cpu_matrix,
-<a name="l00719"></a>00719               matrix<float, F, ALIGNMENT> & gpu_matrix)
-<a name="l00720"></a>00720     {
-<a name="l00721"></a>00721       gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.rows()),
-<a name="l00722"></a>00722                         static_cast<unsigned int>(cpu_matrix.cols()),
-<a name="l00723"></a>00723                         <span class="keyword">false</span>);
-<a name="l00724"></a>00724 
-<a name="l00725"></a>00725       std::vector<float> data(gpu_matrix.internal_size());
-<a name="l00726"></a>00726       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.size1(); ++i)
-<a name="l00727"></a>00727       {
-<a name="l00728"></a>00728         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.size2(); ++j) 
-<a name="l00729"></a>00729           data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix(i,j);
-<a name="l00730"></a>00730       }
-<a name="l00731"></a>00731       
-<a name="l00732"></a>00732       gpu_matrix._elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, data);
-<a name="l00733"></a>00733     }
-<a name="l00734"></a>00734     
-<a name="l00740"></a>00740     <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00741"></a>00741     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> Eigen::MatrixXd & cpu_matrix,
-<a name="l00742"></a>00742               matrix<double, F, ALIGNMENT> & gpu_matrix)
-<a name="l00743"></a>00743     {
-<a name="l00744"></a>00744       gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.rows()),
-<a name="l00745"></a>00745                         static_cast<unsigned int>(cpu_matrix.cols()),
-<a name="l00746"></a>00746                         <span class="keyword">false</span>);
-<a name="l00747"></a>00747 
-<a name="l00748"></a>00748       std::vector<double> data(gpu_matrix.internal_size());
-<a name="l00749"></a>00749       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.size1(); ++i)
-<a name="l00750"></a>00750       {
-<a name="l00751"></a>00751         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.size2(); ++j) 
-<a name="l00752"></a>00752           data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix(i,j);
-<a name="l00753"></a>00753       }
-<a name="l00754"></a>00754       
-<a name="l00755"></a>00755       gpu_matrix._elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, data);
-<a name="l00756"></a>00756     }
-<a name="l00757"></a>00757 <span class="preprocessor">    #endif</span>
-<a name="l00758"></a>00758 <span class="preprocessor"></span>    
-<a name="l00759"></a>00759 <span class="preprocessor">    #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00760"></a>00760 <span class="preprocessor"></span>
-<a name="l00765"></a>00765     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> T, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00766"></a>00766     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> mtl::dense2D<SCALARTYPE, T>& cpu_matrix,
-<a name="l00767"></a>00767               matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix)
-<a name="l00768"></a>00768     {
-<a name="l00769"></a>00769       gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.num_rows()),
-<a name="l00770"></a>00770                         static_cast<unsigned int>(cpu_matrix.num_cols()),
-<a name="l00771"></a>00771                         <span class="keyword">false</span>);
-<a name="l00772"></a>00772 
-<a name="l00773"></a>00773       std::vector<SCALARTYPE> data(gpu_matrix.internal_size());
-<a name="l00774"></a>00774       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.size1(); ++i)
-<a name="l00775"></a>00775       {
-<a name="l00776"></a>00776         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.size2(); ++j) 
-<a name="l00777"></a>00777           data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix[i][j];
-<a name="l00778"></a>00778       }
-<a name="l00779"></a>00779       
-<a name="l00780"></a>00780       gpu_matrix._elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, data);
-<a name="l00781"></a>00781     }
-<a name="l00782"></a>00782 <span class="preprocessor">    #endif</span>
-<a name="l00783"></a>00783 <span class="preprocessor"></span>    
-<a name="l00784"></a>00784     
-<a name="l00785"></a>00785     
-<a name="l00786"></a>00786     
-<a name="l00787"></a>00787     <span class="comment">//</span>
-<a name="l00788"></a>00788     <span class="comment">//gpu to cpu, generic type</span>
-<a name="l00789"></a>00789     <span class="comment">//</span>
-<a name="l00795"></a>00795 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00796"></a><a class="code" href="namespaceviennacl.html#a0b4ced508c064fe8b45f437b538ed2ca">00796</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & gpu_matrix,
-<a name="l00797"></a>00797               CPU_MATRIX & cpu_matrix )
-<a name="l00798"></a>00798     {
-<a name="l00799"></a>00799       <span class="keywordflow">if</span> ( (gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() > 0) && (gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() > 0) )
-<a name="l00800"></a>00800       {
-<a name="l00801"></a>00801         std::vector<SCALARTYPE> temp_buffer(gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00802"></a>00802         cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), &(temp_buffer[0]), 0, NULL, NULL);
-<a name="l00803"></a>00803         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00804"></a>00804         
-<a name="l00805"></a>00805         <span class="comment">//now copy entries to cpu_matrix:</span>
-<a name="l00806"></a>00806         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); ++i)
-<a name="l00807"></a>00807           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(); ++j) 
-<a name="l00808"></a>00808             cpu_matrix(i,j) = temp_buffer[F::mem_index(i, j, gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>())];
-<a name="l00809"></a>00809       }
-<a name="l00810"></a>00810     }
-<a name="l00811"></a>00811 
-<a name="l00812"></a>00812     <span class="comment">//gpu to cpu, STL type</span>
-<a name="l00818"></a>00818 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00819"></a><a class="code" href="namespaceviennacl.html#a72359f3759c0067ac956d01c36651f9a">00819</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & gpu_matrix,
-<a name="l00820"></a>00820               std::vector< std::vector<SCALARTYPE, A1>, A2> & cpu_matrix)
-<a name="l00821"></a>00821     {
-<a name="l00822"></a>00822       <span class="keywordflow">if</span> ( (gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() > 0) && (gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() > 0) 
-<a name="l00823"></a>00823          && (cpu_matrix.size() >= gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()) && (cpu_matrix[0].<a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>() >= gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>()))
-<a name="l00824"></a>00824       {
-<a name="l00825"></a>00825         std::vector<SCALARTYPE> temp_buffer(gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00826"></a>00826         cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), &(temp_buffer[0]), 0, NULL, NULL);
-<a name="l00827"></a>00827         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00828"></a>00828         
-<a name="l00829"></a>00829         <span class="comment">//now copy entries to cpu_matrix:</span>
-<a name="l00830"></a>00830         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); ++i)
-<a name="l00831"></a>00831           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(); ++j) 
-<a name="l00832"></a>00832             cpu_matrix[i][j] = temp_buffer[F::mem_index(i, j, gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>())];
-<a name="l00833"></a>00833       }
-<a name="l00834"></a>00834     }
-<a name="l00835"></a>00835 
-<a name="l00836"></a>00836     <span class="comment">//gpu to cpu, STL type</span>
-<a name="l00842"></a>00842 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00843"></a><a class="code" href="namespaceviennacl.html#a2fae23064f21ff285672845e82545fd2">00843</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & gpu_matrix,
-<a name="l00844"></a>00844                    SCALARTYPE * cpu_matrix_begin)
-<a name="l00845"></a>00845     {
-<a name="l00846"></a>00846       cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(),
-<a name="l00847"></a>00847                                        gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), 
-<a name="l00848"></a>00848                                        CL_TRUE, 0,
-<a name="l00849"></a>00849                                        <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(),
-<a name="l00850"></a>00850                                        cpu_matrix_begin, 0, NULL, NULL);
-<a name="l00851"></a>00851       <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00852"></a>00852     }
-<a name="l00853"></a>00853 
-<a name="l00854"></a>00854 
-<a name="l00855"></a>00855 
-<a name="l00856"></a>00856 
-<a name="l00857"></a>00857 
-<a name="l00858"></a>00858 
-<a name="l00859"></a>00859 
-<a name="l00860"></a>00860 
-<a name="l00861"></a>00861 
-<a name="l00862"></a>00862     <span class="comment">// outer_prod(v1, v2) * val;</span>
-<a name="l00863"></a>00863     <span class="keyword">template</span><<span class="keyword">typename</span> CPU_SCALAR, <span class="keyword">typename</span> SCALARTYPE,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00864"></a>00864     <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00865"></a>00865                                                                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00866"></a>00866                                                                     op_prod>,
-<a name="l00867"></a>00867                                  <span class="keyword">const</span> SCALARTYPE,
-<a name="l00868"></a><a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">00868</a>                                  op_prod>  <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator*</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00869"></a>00869                                                                                         <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00870"></a>00870                                                                                         op_prod> & proxy,
-<a name="l00871"></a>00871                                                      CPU_SCALAR val)
-<a name="l00872"></a>00872     {
-<a name="l00873"></a>00873       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00874"></a>00874                                                                              <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00875"></a>00875                                                                              op_prod>,
-<a name="l00876"></a>00876                                           <span class="keyword">const</span> SCALARTYPE,
-<a name="l00877"></a>00877                                           op_prod>(proxy, <span class="keyword">static_cast<</span>SCALARTYPE<span class="keyword">></span>(val));
-<a name="l00878"></a>00878     }
-<a name="l00879"></a>00879 
-<a name="l00880"></a>00880     <span class="comment">// val * outer_prod(v1, v2);</span>
-<a name="l00881"></a>00881     <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_SCALAR, <span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VA1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VA2>
-<a name="l00882"></a>00882     <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VA1></a>,
-<a name="l00883"></a>00883                                                                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA2></a>,
-<a name="l00884"></a>00884                                                                     op_prod>,
-<a name="l00885"></a>00885                                  <span class="keyword">const</span> SCALARTYPE,
-<a name="l00886"></a><a class="code" href="namespaceviennacl.html#ae29e41dc09ce774a0082eb52bdcb81e7">00886</a>                                  op_prod>  <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator*</a>(CPU_SCALAR val,
-<a name="l00887"></a>00887                                                      <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA1></a>,
-<a name="l00888"></a>00888                                                                                   <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA2></a>,
-<a name="l00889"></a>00889                                                                                   op_prod> <span class="keyword">const</span> & proxy)
-<a name="l00890"></a>00890     {
-<a name="l00891"></a>00891       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VA1></a>,
-<a name="l00892"></a>00892                                                                              <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA2></a>,
-<a name="l00893"></a>00893                                                                              op_prod>,
-<a name="l00894"></a>00894                                           <span class="keyword">const</span> SCALARTYPE,
-<a name="l00895"></a>00895                                           op_prod>(proxy, <span class="keyword">static_cast<</span>SCALARTYPE<span class="keyword">></span>(val));
-<a name="l00896"></a>00896     }
-<a name="l00897"></a>00897     
-<a name="l00898"></a>00898    
-<a name="l00899"></a>00899 
-<a name="l00900"></a>00900 } <span class="comment">//namespace viennacl</span>
-<a name="l00901"></a>00901 
-<a name="l00902"></a>00902 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__col__kernels_8h.html b/doc/doxygen/html/matrix__col__kernels_8h.html
deleted file mode 100644
index 34725b1..0000000
--- a/doc/doxygen/html/matrix__col__kernels_8h.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__col__source_8h_source.html">viennacl/linalg/kernels/matrix_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">matrix_col< float, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">matrix_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">matrix_col< double, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">matrix_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__col__kernels_8h_source.html b/doc/doxygen/html/matrix__col__kernels_8h_source.html
deleted file mode 100644
index 7ed103f..0000000
--- a/doc/doxygen/html/matrix__col__kernels_8h_source.html
+++ /dev/null
@@ -1,337 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__col__source_8h.html">viennacl/linalg/kernels/matrix_col_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_col;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_col<float, 16>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_col_16"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a>);
-<a name="l00040"></a>00040         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a>);
-<a name="l00041"></a>00041         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a>);
-<a name="l00042"></a>00042         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00043"></a>00043         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a>);
-<a name="l00044"></a>00044         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a>);
-<a name="l00045"></a>00045         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a>);
-<a name="l00046"></a>00046         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a>);
-<a name="l00047"></a>00047         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a>);
-<a name="l00048"></a>00048         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a>);
-<a name="l00049"></a>00049         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00050"></a>00050         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a>);
-<a name="l00051"></a>00051         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00052"></a>00052         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a>);
-<a name="l00053"></a>00053         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a>);
-<a name="l00054"></a>00054         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a>);
-<a name="l00055"></a>00055         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a>);
-<a name="l00056"></a>00056         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a>);
-<a name="l00057"></a>00057         std::string prog_name = program_name();
-<a name="l00058"></a>00058 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00060"></a>00060 <span class="preprocessor">        #endif</span>
-<a name="l00061"></a>00061 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00062"></a>00062         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00063"></a>00063         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00064"></a>00064         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00065"></a>00065         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00066"></a>00066         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00067"></a>00067         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00068"></a>00068         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00069"></a>00069         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00070"></a>00070         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00071"></a>00071         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00072"></a>00072         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00073"></a>00073         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00074"></a>00074         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00075"></a>00075         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00076"></a>00076         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00077"></a>00077         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00078"></a>00078         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00079"></a>00079         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00080"></a>00080         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00081"></a>00081         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00082"></a>00082         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00083"></a>00083         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00084"></a>00084         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00085"></a>00085        } <span class="comment">//if</span>
-<a name="l00086"></a>00086      } <span class="comment">//init</span>
-<a name="l00087"></a>00087     }; <span class="comment">// struct</span>
-<a name="l00088"></a>00088 
-<a name="l00089"></a>00089    <span class="keyword">template</span> <>
-<a name="l00090"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">00090</a>    <span class="keyword">struct </span>matrix_col<float, 1>
-<a name="l00091"></a>00091    {
-<a name="l00092"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00092</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00093"></a>00093     {
-<a name="l00094"></a>00094       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_col_1"</span>;
-<a name="l00095"></a>00095     }
-<a name="l00096"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00096</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00097"></a>00097     {
-<a name="l00098"></a>00098       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00099"></a>00099       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00100"></a>00100       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00101"></a>00101       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00102"></a>00102       {
-<a name="l00103"></a>00103         std::string source;
-<a name="l00104"></a>00104         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00105"></a>00105         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a>);
-<a name="l00106"></a>00106         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a>);
-<a name="l00107"></a>00107         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a>);
-<a name="l00108"></a>00108         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a>);
-<a name="l00109"></a>00109         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a>);
-<a name="l00110"></a>00110         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00111"></a>00111         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a>);
-<a name="l00112"></a>00112         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a>);
-<a name="l00113"></a>00113         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a>);
-<a name="l00114"></a>00114         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a>);
-<a name="l00115"></a>00115         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a>);
-<a name="l00116"></a>00116         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a>);
-<a name="l00117"></a>00117         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00118"></a>00118         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a>);
-<a name="l00119"></a>00119         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00120"></a>00120         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a>);
-<a name="l00121"></a>00121         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a>);
-<a name="l00122"></a>00122         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a>);
-<a name="l00123"></a>00123         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a>);
-<a name="l00124"></a>00124         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a>);
-<a name="l00125"></a>00125         std::string prog_name = program_name();
-<a name="l00126"></a>00126 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00127"></a>00127 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00128"></a>00128 <span class="preprocessor">        #endif</span>
-<a name="l00129"></a>00129 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00130"></a>00130         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00131"></a>00131         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00132"></a>00132         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00133"></a>00133         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00134"></a>00134         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00135"></a>00135         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00136"></a>00136         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00137"></a>00137         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00138"></a>00138         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00139"></a>00139         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00140"></a>00140         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00141"></a>00141         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00142"></a>00142         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00143"></a>00143         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00144"></a>00144         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00145"></a>00145         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00146"></a>00146         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00147"></a>00147         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00148"></a>00148         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00149"></a>00149         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00150"></a>00150         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00151"></a>00151         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00152"></a>00152         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00153"></a>00153        } <span class="comment">//if</span>
-<a name="l00154"></a>00154      } <span class="comment">//init</span>
-<a name="l00155"></a>00155     }; <span class="comment">// struct</span>
-<a name="l00156"></a>00156 
-<a name="l00157"></a>00157 
-<a name="l00158"></a>00158 
-<a name="l00160"></a>00160    <span class="keyword">template</span> <>
-<a name="l00161"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">00161</a>    <span class="keyword">struct </span>matrix_col<double, 16>
-<a name="l00162"></a>00162    {
-<a name="l00163"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">00163</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00164"></a>00164     {
-<a name="l00165"></a>00165       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_col_16"</span>;
-<a name="l00166"></a>00166     }
-<a name="l00167"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">00167</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00168"></a>00168     {
-<a name="l00169"></a>00169       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00170"></a>00170       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00171"></a>00171       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00172"></a>00172       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00173"></a>00173       {
-<a name="l00174"></a>00174         std::string source;
-<a name="l00175"></a>00175         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00176"></a>00176         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00177"></a>00177         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a>, fp64_ext));
-<a name="l00178"></a>00178         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00179"></a>00179         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a>, fp64_ext));
-<a name="l00180"></a>00180         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a>, fp64_ext));
-<a name="l00181"></a>00181         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a>, fp64_ext));
-<a name="l00182"></a>00182         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00183"></a>00183         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a>, fp64_ext));
-<a name="l00184"></a>00184         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a>, fp64_ext));
-<a name="l00185"></a>00185         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a>, fp64_ext));
-<a name="l00186"></a>00186         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00187"></a>00187         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a>, fp64_ext));
-<a name="l00188"></a>00188         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00189"></a>00189         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00190"></a>00190         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a>, fp64_ext));
-<a name="l00191"></a>00191         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00192"></a>00192         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a>, fp64_ext));
-<a name="l00193"></a>00193         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a>, fp64_ext));
-<a name="l00194"></a>00194         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00195"></a>00195         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a>, fp64_ext));
-<a name="l00196"></a>00196         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00197"></a>00197         std::string prog_name = program_name();
-<a name="l00198"></a>00198 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00199"></a>00199 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00200"></a>00200 <span class="preprocessor">        #endif</span>
-<a name="l00201"></a>00201 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00202"></a>00202         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00203"></a>00203         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00204"></a>00204         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00205"></a>00205         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00206"></a>00206         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00207"></a>00207         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00208"></a>00208         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00209"></a>00209         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00210"></a>00210         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00211"></a>00211         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00212"></a>00212         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00213"></a>00213         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00214"></a>00214         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00215"></a>00215         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00216"></a>00216         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00217"></a>00217         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00218"></a>00218         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00219"></a>00219         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00220"></a>00220         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00221"></a>00221         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00222"></a>00222         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00223"></a>00223         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00224"></a>00224         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00225"></a>00225        } <span class="comment">//if</span>
-<a name="l00226"></a>00226      } <span class="comment">//init</span>
-<a name="l00227"></a>00227     }; <span class="comment">// struct</span>
-<a name="l00228"></a>00228 
-<a name="l00229"></a>00229    <span class="keyword">template</span> <>
-<a name="l00230"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">00230</a>    <span class="keyword">struct </span>matrix_col<double, 1>
-<a name="l00231"></a>00231    {
-<a name="l00232"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00232</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00233"></a>00233     {
-<a name="l00234"></a>00234       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_col_1"</span>;
-<a name="l00235"></a>00235     }
-<a name="l00236"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00236</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00237"></a>00237     {
-<a name="l00238"></a>00238       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00239"></a>00239       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00240"></a>00240       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00241"></a>00241       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00242"></a>00242       {
-<a name="l00243"></a>00243         std::string source;
-<a name="l00244"></a>00244         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00245"></a>00245         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00246"></a>00246         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a>, fp64_ext));
-<a name="l00247"></a>00247         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00248"></a>00248         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a>, fp64_ext));
-<a name="l00249"></a>00249         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a>, fp64_ext));
-<a name="l00250"></a>00250         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a>, fp64_ext));
-<a name="l00251"></a>00251         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00252"></a>00252         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a>, fp64_ext));
-<a name="l00253"></a>00253         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a>, fp64_ext));
-<a name="l00254"></a>00254         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a>, fp64_ext));
-<a name="l00255"></a>00255         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00256"></a>00256         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a>, fp64_ext));
-<a name="l00257"></a>00257         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00258"></a>00258         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00259"></a>00259         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a>, fp64_ext));
-<a name="l00260"></a>00260         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00261"></a>00261         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a>, fp64_ext));
-<a name="l00262"></a>00262         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a>, fp64_ext));
-<a name="l00263"></a>00263         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00264"></a>00264         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a>, fp64_ext));
-<a name="l00265"></a>00265         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00266"></a>00266         std::string prog_name = program_name();
-<a name="l00267"></a>00267 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00268"></a>00268 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00269"></a>00269 <span class="preprocessor">        #endif</span>
-<a name="l00270"></a>00270 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00271"></a>00271         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00272"></a>00272         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00273"></a>00273         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00274"></a>00274         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00275"></a>00275         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00276"></a>00276         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00277"></a>00277         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00278"></a>00278         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00279"></a>00279         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00280"></a>00280         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00281"></a>00281         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00282"></a>00282         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00283"></a>00283         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00284"></a>00284         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00285"></a>00285         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00286"></a>00286         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00287"></a>00287         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00288"></a>00288         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00289"></a>00289         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00290"></a>00290         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00291"></a>00291         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00292"></a>00292         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00293"></a>00293         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00294"></a>00294        } <span class="comment">//if</span>
-<a name="l00295"></a>00295      } <span class="comment">//init</span>
-<a name="l00296"></a>00296     }; <span class="comment">// struct</span>
-<a name="l00297"></a>00297 
-<a name="l00298"></a>00298 
-<a name="l00299"></a>00299   }  <span class="comment">//namespace kernels</span>
-<a name="l00300"></a>00300  }  <span class="comment">//namespace linalg</span>
-<a name="l00301"></a>00301 }  <span class="comment">//namespace viennacl</span>
-<a name="l00302"></a>00302 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__col__source_8h.html b/doc/doxygen/html/matrix__col__source_8h.html
deleted file mode 100644
index 6c13177..0000000
--- a/doc/doxygen/html/matrix__col__source_8h.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a> = "} \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__col__source_8h_source.html b/doc/doxygen/html/matrix__col__source_8h_source.html
deleted file mode 100644
index ff19a12..0000000
--- a/doc/doxygen/html/matrix__col__source_8h_source.html
+++ /dev/null
@@ -1,441 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"__kernel void unit_lower_triangular_substitute_inplace(\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"          __global const float * matrix,\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          __global float * vector)\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"{\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"  float temp;\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"  for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"  {\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"    temp = vector[row];\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"      vector[elim] -= temp * matrix[row * matrix_internal_rows + elim];\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"  }\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"}\n"</span>
-<a name="l00028"></a>00028 ; <span class="comment">//matrix_col_align1_unit_lower_triangular_substitute_inplace</span>
-<a name="l00029"></a>00029 
-<a name="l00030"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">00030</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a> = 
-<a name="l00031"></a>00031 <span class="stringliteral">"__kernel void inplace_sub(\n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"{ \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"    vec1[i] -= vec2[i];\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"}\n"</span>
-<a name="l00039"></a>00039 ; <span class="comment">//matrix_col_align1_inplace_sub</span>
-<a name="l00040"></a>00040 
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">00041</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a> = 
-<a name="l00042"></a>00042 <span class="stringliteral">"__kernel void lower_triangular_substitute_inplace(\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"          __global const float * matrix,\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"          __global float * vector)\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"{\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"  float temp;\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"  for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"  {\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"    if (get_global_id(0) == 0)\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"      vector[row] /= matrix[row+row*matrix_internal_rows];\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"    temp = vector[row];\n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"      vector[elim] -= temp * matrix[row * matrix_internal_rows + elim];\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"  }\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"}\n"</span>
-<a name="l00062"></a>00062 ; <span class="comment">//matrix_col_align1_lower_triangular_substitute_inplace</span>
-<a name="l00063"></a>00063 
-<a name="l00064"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">00064</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a> = 
-<a name="l00065"></a>00065 <span class="stringliteral">"__kernel void trans_vec_mul(\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"          __global const float * matrix,\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00070"></a>00070 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00071"></a>00071 <span class="stringliteral">"          __global const float * vector,  \n"</span>
-<a name="l00072"></a>00072 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00073"></a>00073 <span class="stringliteral">"{ \n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"  //row and col indicate indices within transposed matrix\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < matrix_cols; row += get_global_size(0))\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"  {\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"    float dot_prod2 = 0.0f;\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"    for (unsigned int col = 0; col < matrix_rows; ++col)\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"      dot_prod2 += matrix[row * matrix_internal_rows + col] * vector[col];\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"    result[row] = dot_prod2;\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"  }\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"}\n"</span>
-<a name="l00083"></a>00083 ; <span class="comment">//matrix_col_align1_trans_vec_mul</span>
-<a name="l00084"></a>00084 
-<a name="l00085"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">00085</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a> = 
-<a name="l00086"></a>00086 <span class="stringliteral">"//perform a rank-1 update of the matrix, i.e. A += x * x^T\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"__kernel void rank1_update(\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"          __global float * matrix,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"          __global const float * vector1,  \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"          __global const float * vector2) \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"{ \n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"  float tmp;\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"  for (unsigned int row= get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"  {\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"    tmp = vector1[row];\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"    for (unsigned int col = 0; col < matrix_cols; ++col)\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"      matrix[row + col * matrix_internal_rows] += tmp * vector2[col];\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"  }\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"}\n"</span>
-<a name="l00104"></a>00104 ; <span class="comment">//matrix_col_align1_rank1_update</span>
-<a name="l00105"></a>00105 
-<a name="l00106"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">00106</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a> = 
-<a name="l00107"></a>00107 <span class="stringliteral">"__kernel void sub(\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"          __global const float * vec2, \n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"          unsigned int size)\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"{ \n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"    result[i] = vec1[i] - vec2[i];\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"}\n"</span>
-<a name="l00116"></a>00116 ; <span class="comment">//matrix_col_align1_sub</span>
-<a name="l00117"></a>00117 
-<a name="l00118"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">00118</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a> = 
-<a name="l00119"></a>00119 <span class="stringliteral">"//transposed lower triangular matrix\n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"__kernel void trans_unit_upper_triangular_substitute_inplace(\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"          __global const float * matrix, \n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"          __global float * vector) \n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"{ \n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"  for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"  { \n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">"    \n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">"    temp = vector[row]; \n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">"    //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"      vector[elim] -= temp * matrix[row + elim  * matrix_internal_rows]; \n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"  } \n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"   \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"}\n"</span>
-<a name="l00140"></a>00140 ; <span class="comment">//matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</span>
-<a name="l00141"></a>00141 
-<a name="l00142"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">00142</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a> = 
-<a name="l00143"></a>00143 <span class="stringliteral">"__kernel void lu_factorize(\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"          __global float * matrix,\n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"          unsigned int matrix_internal_cols) \n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"{ \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"  float temp;\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"  for (unsigned int i=1; i<matrix_rows; ++i)\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"  {\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"    for (unsigned int k=0; k<i; ++k)\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"    {\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"      if (get_global_id(0) == 0)\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"        matrix[i + k*matrix_internal_rows] /= matrix[k + k*matrix_internal_rows];\n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"      barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">"      temp = matrix[i + k*matrix_internal_rows];\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">"      \n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">"      //parallel subtraction:\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"      for (unsigned int j=k+1 + get_global_id(0); j<matrix_cols; j += get_global_size(0))\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"        matrix[i + j*matrix_internal_rows] -= temp * matrix[k + j*matrix_internal_rows];\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"    }\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"  }\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"} \n"</span>
-<a name="l00166"></a>00166 ; <span class="comment">//matrix_col_align1_lu_factorize</span>
-<a name="l00167"></a>00167 
-<a name="l00168"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">00168</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a> = 
-<a name="l00169"></a>00169 <span class="stringliteral">"__kernel void add(\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"          __global const float * vec2, \n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"{ \n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"    result[i] = vec1[i] + vec2[i];\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"}\n"</span>
-<a name="l00178"></a>00178 ; <span class="comment">//matrix_col_align1_add</span>
-<a name="l00179"></a>00179 
-<a name="l00180"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">00180</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a> = 
-<a name="l00181"></a>00181 <span class="stringliteral">"__kernel void vec_mul(\n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"          __global const float * matrix,\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"          __global const float * vector,  \n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"{ \n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"  {\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"    float dot_prod = 0.0f;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"    for (unsigned int col = 0; col < matrix_cols; ++col)\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">"      dot_prod += matrix[row + col*matrix_internal_rows] * vector[col];\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">"    result[row] = dot_prod;\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">"  }\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"}\n"</span>
-<a name="l00198"></a>00198 ; <span class="comment">//matrix_col_align1_vec_mul</span>
-<a name="l00199"></a>00199 
-<a name="l00200"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">00200</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a> = 
-<a name="l00201"></a>00201 <span class="stringliteral">"__kernel void trans_lower_triangular_substitute_inplace(\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"          __global const float * matrix,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"          __global float * vector)\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"{\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"  float temp;\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"  for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"  {\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">"    if (get_global_id(0) == 0)\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"      vector[row] /= matrix[row+row*matrix_internal_rows];\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">"    temp = vector[row];\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"      vector[elim] -= temp * matrix[elim * matrix_internal_rows + row];\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"  }\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"}\n"</span>
-<a name="l00221"></a>00221 ; <span class="comment">//matrix_col_align1_trans_lower_triangular_substitute_inplace</span>
-<a name="l00222"></a>00222 
-<a name="l00223"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">00223</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a> = 
-<a name="l00224"></a>00224 <span class="stringliteral">"__kernel void inplace_divide(\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"          __global const float * fac,  //note: CPU variant is mapped to prod_scalar\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"{ \n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"    vec[i] /= factor;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"}\n"</span>
-<a name="l00233"></a>00233 ; <span class="comment">//matrix_col_align1_inplace_divide</span>
-<a name="l00234"></a>00234 
-<a name="l00235"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">00235</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a> = 
-<a name="l00236"></a>00236 <span class="stringliteral">"//transposed lower triangular matrix\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"__kernel void trans_upper_triangular_substitute_inplace(\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"          __global const float * matrix, \n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">"          __global float * vector) \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"{ \n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"  for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"  { \n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"    if (get_global_id(0) == 0) \n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"      vector[row] /= matrix[row + row*matrix_internal_rows]; \n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" \n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"    temp = vector[row]; \n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"    //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">"      vector[elim] -= temp * matrix[row + elim * matrix_internal_rows]; \n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">"  } \n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">"   \n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">"}\n"</span>
-<a name="l00260"></a>00260 ; <span class="comment">//matrix_col_align1_trans_upper_triangular_substitute_inplace</span>
-<a name="l00261"></a>00261 
-<a name="l00262"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">00262</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a> = 
-<a name="l00263"></a>00263 <span class="stringliteral">"__kernel void unit_upper_triangular_substitute_inplace( \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">"          __global const float * matrix, \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">"          __global float * vector) \n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">"{ \n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00272"></a>00272 <span class="stringliteral">"  for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00273"></a>00273 <span class="stringliteral">"  { \n"</span>
-<a name="l00274"></a>00274 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00275"></a>00275 <span class="stringliteral">"    \n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">"    temp = vector[row]; \n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">"    //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">"      vector[elim] -= temp * matrix[elim + row  * matrix_internal_rows]; \n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">"  } \n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">"   \n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">"}\n"</span>
-<a name="l00283"></a>00283 ; <span class="comment">//matrix_col_align1_unit_upper_triangular_substitute_inplace</span>
-<a name="l00284"></a>00284 
-<a name="l00285"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">00285</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a> = 
-<a name="l00286"></a>00286 <span class="stringliteral">"__kernel void inplace_add(\n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">"{ \n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">"    vec1[i] += vec2[i];\n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">"}\n"</span>
-<a name="l00294"></a>00294 ; <span class="comment">//matrix_col_align1_inplace_add</span>
-<a name="l00295"></a>00295 
-<a name="l00296"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">00296</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a> = 
-<a name="l00297"></a>00297 <span class="stringliteral">"\n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">"__kernel void trans_unit_lower_triangular_substitute_inplace(\n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">"          __global const float * matrix,\n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00303"></a>00303 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00304"></a>00304 <span class="stringliteral">"          __global float * vector)\n"</span>
-<a name="l00305"></a>00305 <span class="stringliteral">"{\n"</span>
-<a name="l00306"></a>00306 <span class="stringliteral">"  float temp;\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"  for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">"  {\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">"\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">"    temp = vector[row];\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">"\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">"      vector[elim] -= temp * matrix[elim * matrix_internal_rows + row];\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">"  }\n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">"}\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">"\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">"\n"</span>
-<a name="l00319"></a>00319 ; <span class="comment">//matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</span>
-<a name="l00320"></a>00320 
-<a name="l00321"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">00321</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a> = 
-<a name="l00322"></a>00322 <span class="stringliteral">"__kernel void scaled_rank1_update(\n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">"          __global float * matrix,\n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">"          float val,\n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">"          __global const float * vector1,  \n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">"          __global const float * vector2) \n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">"{ \n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">"  float tmp;\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"</span>
-<a name="l00334"></a>00334 <span class="stringliteral">"  {\n"</span>
-<a name="l00335"></a>00335 <span class="stringliteral">"    tmp = val * vector1[row];\n"</span>
-<a name="l00336"></a>00336 <span class="stringliteral">"    for (unsigned int col = 0; col < matrix_cols; ++col)\n"</span>
-<a name="l00337"></a>00337 <span class="stringliteral">"      matrix[row + col*matrix_internal_rows] += tmp * vector2[col];\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">"  }\n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">"}\n"</span>
-<a name="l00340"></a>00340 ; <span class="comment">//matrix_col_align1_scaled_rank1_update</span>
-<a name="l00341"></a>00341 
-<a name="l00342"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">00342</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a> = 
-<a name="l00343"></a>00343 <span class="stringliteral">"__kernel void clear(\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">"{ \n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">"    vec[i] = 0;\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">"}\n"</span>
-<a name="l00350"></a>00350 ; <span class="comment">//matrix_col_align1_clear</span>
-<a name="l00351"></a>00351 
-<a name="l00352"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">00352</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a> = 
-<a name="l00353"></a>00353 <span class="stringliteral">"__kernel void cpu_inplace_mult(\n"</span>
-<a name="l00354"></a>00354 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">"          float factor, \n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">"{ \n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">"    vec[i] *= factor;\n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">"}\n"</span>
-<a name="l00361"></a>00361 ; <span class="comment">//matrix_col_align1_cpu_inplace_mult</span>
-<a name="l00362"></a>00362 
-<a name="l00363"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">00363</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a> = 
-<a name="l00364"></a>00364 <span class="stringliteral">"__kernel void inplace_mult(\n"</span>
-<a name="l00365"></a>00365 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00366"></a>00366 <span class="stringliteral">"          __global const float * fac, \n"</span>
-<a name="l00367"></a>00367 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00368"></a>00368 <span class="stringliteral">"{ \n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">"    vec[i] *= factor;\n"</span>
-<a name="l00372"></a>00372 <span class="stringliteral">"}\n"</span>
-<a name="l00373"></a>00373 ; <span class="comment">//matrix_col_align1_inplace_mult</span>
-<a name="l00374"></a>00374 
-<a name="l00375"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">00375</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a> = 
-<a name="l00376"></a>00376 <span class="stringliteral">"__kernel void upper_triangular_substitute_inplace( \n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">"          __global const float * matrix, \n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">"          __global float * vector) \n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">"{ \n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00385"></a>00385 <span class="stringliteral">"  for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00386"></a>00386 <span class="stringliteral">"  { \n"</span>
-<a name="l00387"></a>00387 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">"    if (get_global_id(0) == 0) \n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">"      vector[row] /= matrix[row + row*matrix_internal_rows]; \n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">" \n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">"    temp = vector[row]; \n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">"    //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">"      vector[elim] -= temp * matrix[elim + row  * matrix_internal_rows]; \n"</span>
-<a name="l00396"></a>00396 <span class="stringliteral">"  } \n"</span>
-<a name="l00397"></a>00397 <span class="stringliteral">"   \n"</span>
-<a name="l00398"></a>00398 <span class="stringliteral">"}\n"</span>
-<a name="l00399"></a>00399 ; <span class="comment">//matrix_col_align1_upper_triangular_substitute_inplace</span>
-<a name="l00400"></a>00400 
-<a name="l00401"></a>00401   }  <span class="comment">//namespace kernels</span>
-<a name="l00402"></a>00402  }  <span class="comment">//namespace linalg</span>
-<a name="l00403"></a>00403 }  <span class="comment">//namespace viennacl</span>
-<a name="l00404"></a>00404 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__kernel__class__deducer_8hpp.html b/doc/doxygen/html/matrix__kernel__class__deducer_8hpp.html
deleted file mode 100644
index 91d1af2..0000000
--- a/doc/doxygen/html/matrix__kernel__class__deducer_8hpp.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_kernel_class_deducer.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_kernel_class_deducer.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementation of a helper meta class for deducing the correct kernels for the supplied matrix.  
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_row_kernels.h</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="matrix__kernel__class__deducer_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of a helper meta class for deducing the correct kernels for the supplied matrix.  <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of a helper meta class for deducing the correct kernels for the supplied matrix. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__kernel__class__deducer_8hpp_source.html b/doc/doxygen/html/matrix__kernel__class__deducer_8hpp_source.html
deleted file mode 100644
index 2f3ed6d..0000000
--- a/doc/doxygen/html/matrix__kernel__class__deducer_8hpp_source.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_kernel_class_deducer.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_kernel_class_deducer.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__kernel__class__deducer_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_MATRIX_KERNEL_CLASS_DEDUCER_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_MATRIX_KERNEL_CLASS_DEDUCER_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <fstream></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sstream></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="matrix__col__kernels_8h.html">viennacl/linalg/kernels/matrix_col_kernels.h</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="matrix__row__kernels_8h.html">viennacl/linalg/kernels/matrix_row_kernels.h</a>"</span>
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029 <span class="preprocessor">#include <vector></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include <map></span>
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>viennacl
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034   <span class="keyword">namespace </span>tools
-<a name="l00035"></a>00035   {
-<a name="l00037"></a>00037     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType1>
-<a name="l00038"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">00038</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">MATRIX_KERNEL_CLASS_DEDUCER</a>
-<a name="l00039"></a>00039     {};
-<a name="l00040"></a>00040     
-<a name="l00041"></a>00041     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00042"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">00042</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">MATRIX_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00043"></a>00043     {
-<a name="l00044"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html#a6b4b25d7fd5078c59d141209050779f3">00044</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_row<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00045"></a>00045     };
-<a name="l00046"></a>00046     
-<a name="l00047"></a>00047     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00048"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">00048</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">MATRIX_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00049"></a>00049     {
-<a name="l00050"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html#a9d7293574efd24702391c77e7e3971d0">00050</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_col<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00051"></a>00051     };
-<a name="l00052"></a>00052 
-<a name="l00053"></a>00053   }
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 }
-<a name="l00056"></a>00056 
-<a name="l00057"></a>00057 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__market_8hpp.html b/doc/doxygen/html/matrix__market_8hpp.html
deleted file mode 100644
index 8d99a4d..0000000
--- a/doc/doxygen/html/matrix__market_8hpp.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/matrix_market.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/matrix_market.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>A reader and writer for the matrix market format is implemented here.  
-<a href="#_details">More...</a></p>
-<code>#include <algorithm></code><br/>
-<code>#include <string></code><br/>
-<code>#include <iostream></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-<code>#include <cctype></code><br/>
-<code>#include "<a class="el" href="adapter_8hpp_source.html">viennacl/tools/adapter.hpp</a>"</code><br/>
-
-<p><a href="matrix__market_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd">read_matrix_market_file_impl</a> (MatrixType &mat, const char *file, long index_base)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a sparse or dense matrix from a file (MatrixMarket format).  <a href="#a220e9ad28f8fd26740c4661ca2bfabdd"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280">read_matrix_market_file</a> (MatrixType &mat, const char *file, long index_base=1)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a sparse matrix from a file (MatrixMarket format).  <a href="#afc8f719833b923e3e33bf29da94f9280"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a634d5858a6a3e828bb10d12e3c41ccb9">read_matrix_market_file</a> (MatrixType &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a9fb88f9c5737bb5e1231782f6f4d6558">read_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > &mat, const char *file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a0540c43b2f513a6c8ea30fb077a08e48">read_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">write_matrix_market_file_impl</a> (MatrixType const &mat, const char *file, long index_base)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">write_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > const &mat, const char *file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a47025d215b1eb3d9e965f2bf772b3534">write_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > const &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a68425e89c32e2e221555411f08e3a271">write_matrix_market_file</a> (MatrixType const &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Writes a sparse matrix to a file (MatrixMarket format).  <a href="#a68425e89c32e2e221555411f08e3a271"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A reader and writer for the matrix market format is implemented here. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__market_8hpp_source.html b/doc/doxygen/html/matrix__market_8hpp_source.html
deleted file mode 100644
index 1aa887d..0000000
--- a/doc/doxygen/html/matrix__market_8hpp_source.html
+++ /dev/null
@@ -1,423 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/matrix_market.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/matrix_market.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__market_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 
-<a name="l00016"></a>00016 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_MARKET_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_MARKET_HPP_</span>
-<a name="l00018"></a>00018 <span class="preprocessor"></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <algorithm></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <string></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <iostream></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <fstream></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include <sstream></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include <vector></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <map></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include <cctype></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="adapter_8hpp.html" title="Adapter classes for sparse matrices made of the STL type std::vector&lt;std::map&lt;unsigned int...">viennacl/tools/adapter.hpp</a>"</span>
-<a name="l00032"></a>00032 
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>viennacl
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035   <span class="keyword">namespace </span>io
-<a name="l00036"></a>00036   {
-<a name="l00037"></a>00037     <span class="comment">//helper</span>
-<a name="l00038"></a>00038     <span class="keyword">namespace</span>
-<a name="l00039"></a>00039     {
-<a name="l00040"></a>00040       <span class="keywordtype">void</span> trim(<span class="keywordtype">char</span> * buffer, <span class="keywordtype">long</span> max_size)
-<a name="l00041"></a>00041       {
-<a name="l00042"></a>00042         <span class="comment">//trim at beginning of string</span>
-<a name="l00043"></a>00043         <span class="keywordtype">long</span> start = 0;
-<a name="l00044"></a>00044         <span class="keywordflow">for</span> (<span class="keywordtype">long</span> i=0; i<max_size; ++i)
-<a name="l00045"></a>00045         {
-<a name="l00046"></a>00046           <span class="keywordflow">if</span> (buffer[i] == <span class="charliteral">' '</span>)
-<a name="l00047"></a>00047             ++start;
-<a name="l00048"></a>00048           <span class="keywordflow">else</span>
-<a name="l00049"></a>00049             <span class="keywordflow">break</span>;
-<a name="l00050"></a>00050         }
-<a name="l00051"></a>00051 
-<a name="l00052"></a>00052         <span class="comment">//trim at end of string</span>
-<a name="l00053"></a>00053         <span class="keywordtype">long</span> stop = start;
-<a name="l00054"></a>00054         <span class="keywordflow">for</span> (<span class="keywordtype">long</span> i=stop; i<max_size; ++i)
-<a name="l00055"></a>00055         {
-<a name="l00056"></a>00056           <span class="keywordflow">if</span> (buffer[i] == 0)   <span class="comment">//end of string</span>
-<a name="l00057"></a>00057             <span class="keywordflow">break</span>;
-<a name="l00058"></a>00058           
-<a name="l00059"></a>00059           <span class="keywordflow">if</span> (buffer[i] != <span class="charliteral">' '</span>)
-<a name="l00060"></a>00060             stop = i;
-<a name="l00061"></a>00061         }
-<a name="l00062"></a>00062 
-<a name="l00063"></a>00063         <span class="keywordflow">for</span> (<span class="keywordtype">long</span> i=0; i<=stop - start; ++i)
-<a name="l00064"></a>00064         {
-<a name="l00065"></a>00065           buffer[i] = buffer[start + i];
-<a name="l00066"></a>00066         }
-<a name="l00067"></a>00067         
-<a name="l00068"></a>00068         <span class="keywordflow">if</span> (buffer[0] != <span class="charliteral">' '</span>)
-<a name="l00069"></a>00069           buffer[stop - start + 1] = 0; <span class="comment">//terminate string</span>
-<a name="l00070"></a>00070         <span class="keywordflow">else</span>
-<a name="l00071"></a>00071           buffer[0] = 0;
-<a name="l00072"></a>00072       }      
-<a name="l00073"></a>00073       
-<a name="l00074"></a>00074       std::string tolower(std::string & s)
-<a name="l00075"></a>00075       {
-<a name="l00076"></a>00076         std::transform(s.begin(), s.end(), s.begin(), static_cast < int(*)(int) > (std::tolower));
-<a name="l00077"></a>00077         <span class="keywordflow">return</span> s;
-<a name="l00078"></a>00078       }
-<a name="l00079"></a>00079       
-<a name="l00080"></a>00080       
-<a name="l00081"></a>00081       
-<a name="l00082"></a>00082     } <span class="comment">//namespace </span>
-<a name="l00083"></a>00083     
-<a name="l00085"></a>00085     
-<a name="l00094"></a>00094     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00095"></a><a class="code" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd">00095</a>     <span class="keywordtype">long</span> <a class="code" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd" title="Reads a sparse or dense matrix from a file (MatrixMarket format).">read_matrix_market_file_impl</a>(MatrixType & mat,
-<a name="l00096"></a>00096                                       <span class="keyword">const</span> <span class="keywordtype">char</span> * file,
-<a name="l00097"></a>00097                                       <span class="keywordtype">long</span> index_base)
-<a name="l00098"></a>00098     {
-<a name="l00099"></a>00099       std::cout << <span class="stringliteral">"Reading matrix market file"</span> << std::endl;
-<a name="l00100"></a>00100       <span class="keywordtype">char</span> buffer[1025];
-<a name="l00101"></a>00101       std::ifstream reader(file);
-<a name="l00102"></a>00102       std::string token;
-<a name="l00103"></a>00103       <span class="keywordtype">long</span> linenum = 0;
-<a name="l00104"></a>00104       <span class="keywordtype">bool</span> symmetric = <span class="keyword">false</span>;
-<a name="l00105"></a>00105       <span class="keywordtype">bool</span> dense_format = <span class="keyword">false</span>;
-<a name="l00106"></a>00106       <span class="keywordtype">bool</span> is_header = <span class="keyword">true</span>;
-<a name="l00107"></a>00107       <span class="keywordtype">long</span> cur_row = 0;
-<a name="l00108"></a>00108       <span class="keywordtype">long</span> cur_col = 0;
-<a name="l00109"></a>00109       <span class="keywordtype">long</span> valid_entries = 0;
-<a name="l00110"></a>00110       <span class="keywordtype">long</span> nnz = 0;
-<a name="l00111"></a>00111 
-<a name="l00112"></a>00112       
-<a name="l00113"></a>00113       <span class="keywordflow">if</span> (!reader){
-<a name="l00114"></a>00114         std::cerr << <span class="stringliteral">"ViennaCL: Matrix Market Reader: Cannot open file "</span> << file << std::endl;
-<a name="l00115"></a>00115         <span class="keywordflow">return</span> 0;
-<a name="l00116"></a>00116       }
-<a name="l00117"></a>00117       
-<a name="l00118"></a>00118       <span class="keywordflow">while</span> (reader.good())
-<a name="l00119"></a>00119       {
-<a name="l00120"></a>00120         <span class="comment">// get a non-empty line</span>
-<a name="l00121"></a>00121         <span class="keywordflow">do</span>
-<a name="l00122"></a>00122         {
-<a name="l00123"></a>00123           reader.getline(buffer, 1024);
-<a name="l00124"></a>00124           ++linenum;
-<a name="l00125"></a>00125           trim(buffer, 1024);
-<a name="l00126"></a>00126         }
-<a name="l00127"></a>00127         <span class="keywordflow">while</span> (reader.good() && buffer[0] == 0);
-<a name="l00128"></a>00128         
-<a name="l00129"></a>00129         <span class="keywordflow">if</span> (buffer[0] == <span class="charliteral">'%'</span>)
-<a name="l00130"></a>00130         {
-<a name="l00131"></a>00131           <span class="keywordflow">if</span> (buffer[1] == <span class="charliteral">'%'</span>)
-<a name="l00132"></a>00132           {
-<a name="l00133"></a>00133             <span class="comment">//parse header:</span>
-<a name="l00134"></a>00134             std::stringstream line(std::string(buffer + 2));
-<a name="l00135"></a>00135             line >> token;
-<a name="l00136"></a>00136             <span class="keywordflow">if</span> (tolower(token) != <span class="stringliteral">"matrixmarket"</span>)
-<a name="l00137"></a>00137             {
-<a name="l00138"></a>00138               std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">" at line "</span> << linenum << <span class="stringliteral">" in file "</span> << file << <span class="stringliteral">": Expected 'MatrixMarket', got '"</span> << token << <span class="stringliteral">"'"</span> << std::endl;
-<a name="l00139"></a>00139               <span class="keywordflow">return</span> 0;
-<a name="l00140"></a>00140             }
-<a name="l00141"></a>00141 
-<a name="l00142"></a>00142             line >> token;
-<a name="l00143"></a>00143             <span class="keywordflow">if</span> (tolower(token) != <span class="stringliteral">"matrix"</span>)
-<a name="l00144"></a>00144             {
-<a name="l00145"></a>00145               std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">" at line "</span> << linenum << <span class="stringliteral">" in file "</span> << file << <span class="stringliteral">": Expected 'matrix', got '"</span> << token << <span class="stringliteral">"'"</span> << std::endl;
-<a name="l00146"></a>00146               <span class="keywordflow">return</span> 0;
-<a name="l00147"></a>00147             }
-<a name="l00148"></a>00148 
-<a name="l00149"></a>00149             line >> token;
-<a name="l00150"></a>00150             <span class="keywordflow">if</span> (tolower(token) != <span class="stringliteral">"coordinate"</span>)
-<a name="l00151"></a>00151             {
-<a name="l00152"></a>00152               <span class="keywordflow">if</span> (tolower(token) == <span class="stringliteral">"array"</span>)
-<a name="l00153"></a>00153               {
-<a name="l00154"></a>00154                 dense_format = <span class="keyword">true</span>;
-<a name="l00155"></a>00155                 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">" at line "</span> << linenum << <span class="stringliteral">" in file "</span> << file << <span class="stringliteral">": 'array' type is not supported yet!"</span> << std::endl;
-<a name="l00156"></a>00156                 <span class="keywordflow">return</span> 0;
-<a name="l00157"></a>00157               }
-<a name="l00158"></a>00158               <span class="keywordflow">else</span>
-<a name="l00159"></a>00159               {
-<a name="l00160"></a>00160                 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">" at line "</span> << linenum << <span class="stringliteral">" in file "</span> << file << <span class="stringliteral">": Expected 'array' or 'coordinate', got '"</span> << token << <span class="stringliteral">"'"</span> << std::endl;
-<a name="l00161"></a>00161                 <span class="keywordflow">return</span> 0;
-<a name="l00162"></a>00162               }
-<a name="l00163"></a>00163             }
-<a name="l00164"></a>00164 
-<a name="l00165"></a>00165             line >> token;
-<a name="l00166"></a>00166             <span class="keywordflow">if</span> (tolower(token) != <span class="stringliteral">"real"</span>)
-<a name="l00167"></a>00167             {
-<a name="l00168"></a>00168               std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": The MatrixMarket reader provided with ViennaCL supports only real valued floating point arithmetic."</span> << std::endl;
-<a name="l00169"></a>00169               <span class="keywordflow">return</span> 0;
-<a name="l00170"></a>00170             }
-<a name="l00171"></a>00171 
-<a name="l00172"></a>00172             line >> token;
-<a name="l00173"></a>00173             <span class="keywordflow">if</span> (tolower(token) == <span class="stringliteral">"general"</span>){ }
-<a name="l00174"></a>00174             <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tolower(token) == <span class="stringliteral">"symmetric"</span>){ symmetric = <span class="keyword">true</span>; }
-<a name="l00175"></a>00175             <span class="keywordflow">else</span>
-<a name="l00176"></a>00176             {
-<a name="l00177"></a>00177               std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": The MatrixMarket reader provided with ViennaCL supports only general or symmetric matrices."</span> << std::endl;
-<a name="l00178"></a>00178               <span class="keywordflow">return</span> 0;
-<a name="l00179"></a>00179             }
-<a name="l00180"></a>00180             
-<a name="l00181"></a>00181           }
-<a name="l00182"></a>00182         }
-<a name="l00183"></a>00183         <span class="keywordflow">else</span>
-<a name="l00184"></a>00184         {
-<a name="l00185"></a>00185           std::stringstream line(std::stringstream::in | std::stringstream::out);
-<a name="l00186"></a>00186           line << std::string(buffer);
-<a name="l00187"></a>00187 
-<a name="l00188"></a>00188           <span class="keywordflow">if</span> (is_header)
-<a name="l00189"></a>00189           {
-<a name="l00190"></a>00190             <span class="comment">//read header line</span>
-<a name="l00191"></a>00191             <span class="keywordtype">long</span> rows;
-<a name="l00192"></a>00192             <span class="keywordtype">long</span> cols;
-<a name="l00193"></a>00193             
-<a name="l00194"></a>00194             <span class="keywordflow">if</span> (line.good())
-<a name="l00195"></a>00195               line >> rows;
-<a name="l00196"></a>00196             <span class="keywordflow">else</span>
-<a name="l00197"></a>00197             {
-<a name="l00198"></a>00198               std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": Could not get matrix dimensions (rows) in line "</span> << linenum << std::endl;
-<a name="l00199"></a>00199               <span class="keywordflow">return</span> 0;
-<a name="l00200"></a>00200             }
-<a name="l00201"></a>00201             
-<a name="l00202"></a>00202             <span class="keywordflow">if</span> (line.good())
-<a name="l00203"></a>00203               line >> cols;
-<a name="l00204"></a>00204             <span class="keywordflow">else</span>
-<a name="l00205"></a>00205             {
-<a name="l00206"></a>00206               std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": Could not get matrix dimensions (columns) in line "</span> << linenum << std::endl;
-<a name="l00207"></a>00207               <span class="keywordflow">return</span> 0;
-<a name="l00208"></a>00208             }
-<a name="l00209"></a>00209             <span class="keywordflow">if</span> (!dense_format)
-<a name="l00210"></a>00210             {
-<a name="l00211"></a>00211               <span class="keywordflow">if</span> (line.good())
-<a name="l00212"></a>00212                 line >> nnz;
-<a name="l00213"></a>00213               <span class="keywordflow">else</span>
-<a name="l00214"></a>00214               {
-<a name="l00215"></a>00215                 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": Could not get matrix dimensions (columns) in line "</span> << linenum << std::endl;
-<a name="l00216"></a>00216                 <span class="keywordflow">return</span> 0;
-<a name="l00217"></a>00217               }
-<a name="l00218"></a>00218             }
-<a name="l00219"></a>00219             
-<a name="l00220"></a>00220             <span class="keywordflow">if</span> (rows > 0 && cols > 0)
-<a name="l00221"></a>00221               mat.resize(rows, cols, <span class="keyword">false</span>);
-<a name="l00222"></a>00222             
-<a name="l00223"></a>00223             is_header = <span class="keyword">false</span>;
-<a name="l00224"></a>00224           }
-<a name="l00225"></a>00225           <span class="keywordflow">else</span>
-<a name="l00226"></a>00226           {
-<a name="l00227"></a>00227             <span class="comment">//read data</span>
-<a name="l00228"></a>00228             <span class="keywordflow">if</span> (dense_format)
-<a name="l00229"></a>00229             {
-<a name="l00230"></a>00230               <span class="keywordtype">double</span> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>;
-<a name="l00231"></a>00231               line >> value;
-<a name="l00232"></a>00232               mat(cur_row, cur_col) = value;
-<a name="l00233"></a>00233               
-<a name="l00234"></a>00234               <span class="keywordflow">if</span> (++cur_row == static_cast<long>(mat.size1()))
-<a name="l00235"></a>00235               {
-<a name="l00236"></a>00236                 <span class="comment">//next column</span>
-<a name="l00237"></a>00237                 ++cur_col;
-<a name="l00238"></a>00238                 cur_row = 0;
-<a name="l00239"></a>00239               }
-<a name="l00240"></a>00240             }
-<a name="l00241"></a>00241             <span class="keywordflow">else</span> <span class="comment">//sparse format</span>
-<a name="l00242"></a>00242             {
-<a name="l00243"></a>00243               <span class="keywordtype">long</span> row;
-<a name="l00244"></a>00244               <span class="keywordtype">long</span> col;
-<a name="l00245"></a>00245               <span class="keywordtype">double</span> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>;
-<a name="l00246"></a>00246               
-<a name="l00247"></a>00247               <span class="comment">//parse data:</span>
-<a name="l00248"></a>00248               <span class="keywordflow">if</span> (line.good())
-<a name="l00249"></a>00249                 line >> row;
-<a name="l00250"></a>00250               <span class="keywordflow">else</span>
-<a name="l00251"></a>00251               {
-<a name="l00252"></a>00252                 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": Parse error for matrix entry in line "</span> << linenum << std::endl;
-<a name="l00253"></a>00253                 <span class="keywordflow">return</span> 0;
-<a name="l00254"></a>00254               }
-<a name="l00255"></a>00255               
-<a name="l00256"></a>00256               <span class="keywordflow">if</span> (line.good())
-<a name="l00257"></a>00257                 line >> col;
-<a name="l00258"></a>00258               <span class="keywordflow">else</span>
-<a name="l00259"></a>00259               {
-<a name="l00260"></a>00260                 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": Parse error for matrix entry in line "</span> << linenum << std::endl;
-<a name="l00261"></a>00261                 <span class="keywordflow">return</span> 0;
-<a name="l00262"></a>00262               }
-<a name="l00263"></a>00263               
-<a name="l00264"></a>00264               <span class="comment">//take index_base base into account:</span>
-<a name="l00265"></a>00265               row -= index_base;
-<a name="l00266"></a>00266               col -= index_base;
-<a name="l00267"></a>00267               
-<a name="l00268"></a>00268               <span class="keywordflow">if</span> (line.good())
-<a name="l00269"></a>00269                 line >> value;
-<a name="l00270"></a>00270               <span class="keywordflow">else</span>
-<a name="l00271"></a>00271               {
-<a name="l00272"></a>00272                 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": Parse error for matrix entry in line "</span> << linenum << std::endl;
-<a name="l00273"></a>00273                 <span class="keywordflow">return</span> 0;
-<a name="l00274"></a>00274               }
-<a name="l00275"></a>00275               
-<a name="l00276"></a>00276               <span class="keywordflow">if</span> (row >= static_cast<long>(mat.size1()) || row < 0)
-<a name="l00277"></a>00277               {
-<a name="l00278"></a>00278                 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">" at line "</span> << linenum << <span class="stringliteral">": Row index out of bounds: "</span> << row << <span class="stringliteral">" (matrix dim: "</span> << mat.size1() << <span class="stringliteral">" x "</span> << mat.size2() << <span class="stringliteral">")"</span> << std::endl;
-<a name="l00279"></a>00279                 <span class="keywordflow">return</span> 0;
-<a name="l00280"></a>00280               }
-<a name="l00281"></a>00281                   
-<a name="l00282"></a>00282               <span class="keywordflow">if</span> (col >= static_cast<long>(mat.size2()) || col < 0)
-<a name="l00283"></a>00283               {
-<a name="l00284"></a>00284                 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">" at line "</span> << linenum << <span class="stringliteral">": Column index out of bounds: "</span> << col << <span class="stringliteral">" (matrix dim: "</span> << mat.size1() << <span class="stringliteral">" x "</span> << mat.size2() << <span class="stringliteral">")"</span> << std::endl;
-<a name="l00285"></a>00285                 <span class="keywordflow">return</span> 0;
-<a name="l00286"></a>00286               }
-<a name="l00287"></a>00287               
-<a name="l00288"></a>00288               mat(row, col) = value;
-<a name="l00289"></a>00289               <span class="keywordflow">if</span> (symmetric)
-<a name="l00290"></a>00290                 mat(col, row) = value;
-<a name="l00291"></a>00291               
-<a name="l00292"></a>00292               <span class="keywordflow">if</span> (++valid_entries == nnz)
-<a name="l00293"></a>00293                 <span class="keywordflow">break</span>;
-<a name="l00294"></a>00294               
-<a name="l00295"></a>00295             } <span class="comment">//else dense_format</span>
-<a name="l00296"></a>00296           }
-<a name="l00297"></a>00297         }
-<a name="l00298"></a>00298       }
-<a name="l00299"></a>00299       
-<a name="l00300"></a>00300       std::cout << linenum << <span class="stringliteral">" lines read."</span> << std::endl;
-<a name="l00301"></a>00301       reader.close();
-<a name="l00302"></a>00302       <span class="keywordflow">return</span> linenum;
-<a name="l00303"></a>00303     }
-<a name="l00304"></a>00304     
-<a name="l00305"></a>00305 
-<a name="l00314"></a>00314     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00315"></a><a class="code" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280">00315</a>     <span class="keywordtype">long</span> <a class="code" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280" title="Reads a sparse matrix from a file (MatrixMarket format).">read_matrix_market_file</a>(MatrixType & mat,
-<a name="l00316"></a>00316                                  <span class="keyword">const</span> <span class="keywordtype">char</span> * file,
-<a name="l00317"></a>00317                                  <span class="keywordtype">long</span> index_base = 1)
-<a name="l00318"></a>00318     {
-<a name="l00319"></a>00319       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd" title="Reads a sparse or dense matrix from a file (MatrixMarket format).">read_matrix_market_file_impl</a>(mat, file, index_base);  
-<a name="l00320"></a>00320     }
-<a name="l00321"></a>00321 
-<a name="l00322"></a>00322     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00323"></a><a class="code" href="namespaceviennacl_1_1io.html#a634d5858a6a3e828bb10d12e3c41ccb9">00323</a>     <span class="keywordtype">long</span> <a class="code" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280" title="Reads a sparse matrix from a file (MatrixMarket format).">read_matrix_market_file</a>(MatrixType & mat,
-<a name="l00324"></a>00324                                  <span class="keyword">const</span> std::string & file,
-<a name="l00325"></a>00325                                  <span class="keywordtype">long</span> index_base = 1)
-<a name="l00326"></a>00326     {
-<a name="l00327"></a>00327       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd" title="Reads a sparse or dense matrix from a file (MatrixMarket format).">read_matrix_market_file_impl</a>(mat, file.c_str(), index_base);
-<a name="l00328"></a>00328     }
-<a name="l00329"></a>00329     
-<a name="l00330"></a>00330     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00331"></a><a class="code" href="namespaceviennacl_1_1io.html#a9fb88f9c5737bb5e1231782f6f4d6558">00331</a>     <span class="keywordtype">long</span> <a class="code" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280" title="Reads a sparse matrix from a file (MatrixMarket format).">read_matrix_market_file</a>(std::vector< std::map<unsigned int, ScalarType> > & mat,
-<a name="l00332"></a>00332                                  <span class="keyword">const</span> <span class="keywordtype">char</span> * file,
-<a name="l00333"></a>00333                                  <span class="keywordtype">long</span> index_base = 1)
-<a name="l00334"></a>00334     {
-<a name="l00335"></a>00335       <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">viennacl::tools::sparse_matrix_adapter<ScalarType></a> adapted_matrix(mat);
-<a name="l00336"></a>00336       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd" title="Reads a sparse or dense matrix from a file (MatrixMarket format).">read_matrix_market_file_impl</a>(adapted_matrix, file, index_base);
-<a name="l00337"></a>00337     }
-<a name="l00338"></a>00338     
-<a name="l00339"></a>00339     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00340"></a><a class="code" href="namespaceviennacl_1_1io.html#a0540c43b2f513a6c8ea30fb077a08e48">00340</a>     <span class="keywordtype">long</span> <a class="code" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280" title="Reads a sparse matrix from a file (MatrixMarket format).">read_matrix_market_file</a>(std::vector< std::map<unsigned int, ScalarType> > & mat,
-<a name="l00341"></a>00341                                  <span class="keyword">const</span> std::string & file,
-<a name="l00342"></a>00342                                  <span class="keywordtype">long</span> index_base = 1)
-<a name="l00343"></a>00343     {
-<a name="l00344"></a>00344       <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">viennacl::tools::sparse_matrix_adapter<ScalarType></a> adapted_matrix(mat);
-<a name="l00345"></a>00345       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd" title="Reads a sparse or dense matrix from a file (MatrixMarket format).">read_matrix_market_file_impl</a>(adapted_matrix, file.c_str(), index_base);
-<a name="l00346"></a>00346     }
-<a name="l00347"></a>00347 
-<a name="l00348"></a>00348 
-<a name="l00350"></a>00350     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00351"></a><a class="code" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">00351</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">write_matrix_market_file_impl</a>(MatrixType <span class="keyword">const</span> & mat, <span class="keyword">const</span> <span class="keywordtype">char</span> * file, <span class="keywordtype">long</span> index_base)
-<a name="l00352"></a>00352     {
-<a name="l00353"></a>00353       std::ofstream writer(file);
-<a name="l00354"></a>00354       
-<a name="l00355"></a>00355       <span class="keywordtype">long</span> num_entries = 0;
-<a name="l00356"></a>00356       <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator1 row_it = mat.begin1();
-<a name="l00357"></a>00357             row_it != mat.end1();
-<a name="l00358"></a>00358             ++row_it)
-<a name="l00359"></a>00359         <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator2 col_it = row_it.begin();
-<a name="l00360"></a>00360               col_it != row_it.end();
-<a name="l00361"></a>00361               ++col_it)
-<a name="l00362"></a>00362           ++num_entries;
-<a name="l00363"></a>00363 
-<a name="l00364"></a>00364       writer << <span class="stringliteral">"%%MatrixMarket matrix coordinate real general"</span> << std::endl;
-<a name="l00365"></a>00365       writer << mat.size1() << <span class="stringliteral">" "</span> << mat.size2() << <span class="stringliteral">" "</span> << num_entries << std::endl;
-<a name="l00366"></a>00366       
-<a name="l00367"></a>00367       <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator1 row_it = mat.begin1();
-<a name="l00368"></a>00368             row_it != mat.end1();
-<a name="l00369"></a>00369             ++row_it)
-<a name="l00370"></a>00370         <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator2 col_it = row_it.begin();
-<a name="l00371"></a>00371               col_it != row_it.end();
-<a name="l00372"></a>00372               ++col_it)
-<a name="l00373"></a>00373           writer << col_it.index1() + index_base << <span class="stringliteral">" "</span> << col_it.index2() + index_base << <span class="stringliteral">" "</span> << *col_it << std::endl;
-<a name="l00374"></a>00374       
-<a name="l00375"></a>00375       writer.close();
-<a name="l00376"></a>00376     }
-<a name="l00377"></a>00377 
-<a name="l00378"></a>00378     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00379"></a><a class="code" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">00379</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">write_matrix_market_file</a>(std::vector< std::map<unsigned int, ScalarType> > <span class="keyword">const</span> & mat,
-<a name="l00380"></a>00380                                   <span class="keyword">const</span> <span class="keywordtype">char</span> * file,
-<a name="l00381"></a>00381                                   <span class="keywordtype">long</span> index_base = 1)
-<a name="l00382"></a>00382     {
-<a name="l00383"></a>00383       <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">viennacl::tools::const_sparse_matrix_adapter<ScalarType></a> adapted_matrix(mat);
-<a name="l00384"></a>00384       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">write_matrix_market_file_impl</a>(adapted_matrix, file, index_base);
-<a name="l00385"></a>00385     }
-<a name="l00386"></a>00386 
-<a name="l00387"></a>00387     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00388"></a><a class="code" href="namespaceviennacl_1_1io.html#a47025d215b1eb3d9e965f2bf772b3534">00388</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">write_matrix_market_file</a>(std::vector< std::map<unsigned int, ScalarType> > <span class="keyword">const</span> & mat,
-<a name="l00389"></a>00389                                   <span class="keyword">const</span> std::string & file,
-<a name="l00390"></a>00390                                   <span class="keywordtype">long</span> index_base = 1)
-<a name="l00391"></a>00391     {
-<a name="l00392"></a>00392       <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector&lt;std::map&lt;unsigned int...">viennacl::tools::const_sparse_matrix_adapter<ScalarType></a> adapted_matrix(mat);
-<a name="l00393"></a>00393       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">write_matrix_market_file_impl</a>(adapted_matrix, file.c_str(), index_base);
-<a name="l00394"></a>00394     }
-<a name="l00395"></a>00395 
-<a name="l00404"></a>00404     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00405"></a><a class="code" href="namespaceviennacl_1_1io.html#a68425e89c32e2e221555411f08e3a271">00405</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">write_matrix_market_file</a>(MatrixType <span class="keyword">const</span> & mat,
-<a name="l00406"></a>00406                                   <span class="keyword">const</span> std::string & file,
-<a name="l00407"></a>00407                                   <span class="keywordtype">long</span> index_base = 1)
-<a name="l00408"></a>00408     {
-<a name="l00409"></a>00409       <a class="code" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">write_matrix_market_file_impl</a>(mat, file.c_str(), index_base);
-<a name="l00410"></a>00410     }
-<a name="l00411"></a>00411 
-<a name="l00412"></a>00412     
-<a name="l00413"></a>00413   } <span class="comment">//namespace io</span>
-<a name="l00414"></a>00414 } <span class="comment">//namespace viennacl</span>
-<a name="l00415"></a>00415 
-<a name="l00416"></a>00416 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__operations_8hpp.html b/doc/doxygen/html/matrix__operations_8hpp.html
deleted file mode 100644
index 03e433d..0000000
--- a/doc/doxygen/html/matrix__operations_8hpp.html
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/matrix_operations.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/matrix_operations.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementations of dense matrix related operations. also matrix-vector products.  
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">viennacl/tools/matrix_kernel_class_deducer.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">viennacl/tools/matrix_prod_kernel_class_deducer.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector__kernels_8h_source.html">viennacl/linalg/kernels/vector_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__col__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__col__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__row__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__row__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__col__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__col__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__row__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__row__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h</a>"</code><br/>
-
-<p><a href="matrix__operations_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f">add</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat1, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds two dense matrices and writes the result to a third matrix.  <a href="#a2777d6a19ce110ae9df6609f1677be0f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950">inplace_add</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a dense matrix to another.  <a href="#a225d1c31fb7c1dac9f5b94f17ae1f950"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e">sub</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat1, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds two dense matrices and writes the result to a third matrix.  <a href="#a707ace72b7ff8ad1e3a9ff2606567f1e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6">inplace_sub</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a dense matrix to another.  <a href="#ae88903a9ae8dbc3fc47db7f37da326a6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35">inplace_mult</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &result, SCALARTYPE val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplies a dense matrix by a scalar.  <a href="#a0e4c7521b309670969d542805ac87b35"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a4501136a87a9d6294c210628ffcb23d0">inplace_mult</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &result, <a class="el" href="classviennacl_1_1scalar.html">viennacl::scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplies a dense matrix by a scalar.  <a href="#a4501136a87a9d6294c210628ffcb23d0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33">inplace_divide</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &result, <a class="el" href="classviennacl_1_1scalar.html">viennacl::scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplies a dense matrix by a scalar.  <a href="#a6e86b6169a6ff7495734d3eef5d4fd33"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication.  <a href="#a5e71c3317fe25d0ce5e31be66597d8bb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#abbc7f86d9d7e24ff1eae02fe976bc77d">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication.  <a href="#abbc7f86d9d7e24ff1eae02fe976bc77d"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const matrix< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT >, const matrix<br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, op_trans >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-VECTOR_ALIGNMENT >, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a4f088d9329b8c801492830a519fdef15">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a transposed matrix.  <a href="#a4f088d9329b8c801492830a519fdef15"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#af8a3b3e7b5421283ccdc96c07ce3c624">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Unwraps the transposed matrix proxy and forwards to <a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c" title="Carries out matrix-vector multiplication with a transposed matrix.">trans_prod_impl()</a>.  <a href="#af8a3b3e7b5421283ccdc96c07ce3c624"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c">trans_prod_impl</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication with a transposed matrix.  <a href="#a0c03a1482aebb921ce45f3b1c933697c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1294bf672bcc55c62d1622b07b44425e">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F1, ALIGNMENT > &A, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F2, ALIGNMENT > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C, int block_size=15)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication.  <a href="#a1294bf672bcc55c62d1622b07b44425e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa03a4515a4033a22afc6f2e9bfad1ed6">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F1, ALIGNMENT >, const matrix< TYPE, F1, ALIGNMENT >, op_trans > &A, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F2, ALIGNMENT > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication.  <a href="#aa03a4515a4033a22afc6f2e9bfad1ed6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a07e0985a7c2429067b483238d0ffeb2a">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F1, ALIGNMENT > &A, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F2, ALIGNMENT >, const matrix< TYPE, F2, ALIGNMENT >, op_trans > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication.  <a href="#a07e0985a7c2429067b483238d0ffeb2a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a21163d892b2568fa4fa3abe750a5504f">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F1, ALIGNMENT >, const matrix< TYPE, F1, ALIGNMENT >, op_trans > &A, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F2, ALIGNMENT >, const matrix< TYPE, F2, ALIGNMENT >, op_trans > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication.  <a href="#a21163d892b2568fa4fa3abe750a5504f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int VA1, unsigned int VA2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VA1 >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-VA2 >, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1b56d764864ae3d91bb6bac2ae87bec8">outer_prod</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA1 > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA2 > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class for the operation mat += vec1 * vec2^T, i.e. a rank 1 update.  <a href="#a1b56d764864ae3d91bb6bac2ae87bec8"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716">rank_1_update</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The implementation of the operation mat += vec1 * vec2^T, i.e. a rank 1 update.  <a href="#a90c6aa1f54abd466421ea06bf9b49716"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85">scaled_rank_1_update</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat1, SCALARTYPE val, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update.  <a href="#a46f8f468d8d1d6deec2a4d906f987e85"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of dense matrix related operations. also matrix-vector products. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__operations_8hpp_source.html b/doc/doxygen/html/matrix__operations_8hpp_source.html
deleted file mode 100644
index 66075f1..0000000
--- a/doc/doxygen/html/matrix__operations_8hpp_source.html
+++ /dev/null
@@ -1,670 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/matrix_operations.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/matrix_operations.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__operations_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_OPERATIONS_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_OPERATIONS_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="matrix__kernel__class__deducer_8hpp.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl/tools/matrix_kernel_class_deducer.hpp</a>"</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="matrix__prod__kernel__class__deducer_8hpp.html" title="Implementation of a helper meta class for deducing the correct kernels for matrix-matrix products...">viennacl/tools/matrix_prod_kernel_class_deducer.hpp</a>"</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="vector__kernels_8h.html">viennacl/linalg/kernels/vector_kernels.h</a>"</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="matrix__row__kernels_8h.html">viennacl/linalg/kernels/matrix_row_kernels.h</a>"</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="matrix__col__kernels_8h.html">viennacl/linalg/kernels/matrix_col_kernels.h</a>"</span>
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__col__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h</a>"</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__col__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h</a>"</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__row__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h</a>"</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__row__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h</a>"</span>
-<a name="l00039"></a>00039 
-<a name="l00040"></a>00040 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__col__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h</a>"</span>
-<a name="l00041"></a>00041 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__col__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h</a>"</span>
-<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__row__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h</a>"</span>
-<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__row__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h</a>"</span>
-<a name="l00044"></a>00044 
-<a name="l00045"></a>00045 <span class="keyword">namespace </span>viennacl
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047   <span class="keyword">namespace </span>linalg
-<a name="l00048"></a>00048   {
-<a name="l00049"></a>00049     
-<a name="l00058"></a>00058     <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00059"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f">00059</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f" title="Adds two dense matrices and writes the result to a third matrix.">add</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat1, 
-<a name="l00060"></a>00060              <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat2,
-<a name="l00061"></a>00061              <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & result)
-<a name="l00062"></a>00062     {
-<a name="l00063"></a>00063       assert(result.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat1.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00064"></a>00064       assert(result.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == mat1.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00065"></a>00065       assert(result.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00066"></a>00066       assert(result.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00067"></a>00067 
-<a name="l00068"></a>00068       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<TYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00069"></a>00069       
-<a name="l00070"></a>00070       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"add"</span>);
-<a name="l00071"></a>00071       assert( (mat1.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>())
-<a name="l00072"></a>00072              && <span class="stringliteral">"Operands must have same dimension and memory layout in this version of ViennaCL!"</span>);
-<a name="l00073"></a>00073       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(mat1.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00074"></a>00074 
-<a name="l00075"></a>00075       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat1, mat2, result, size));        
-<a name="l00076"></a>00076     }
-<a name="l00077"></a>00077 
-<a name="l00086"></a>00086     <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00087"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950">00087</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950" title="Adds a dense matrix to another.">inplace_add</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & result, 
-<a name="l00088"></a>00088                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat2)
-<a name="l00089"></a>00089     {
-<a name="l00090"></a>00090       assert(result.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00091"></a>00091       assert(result.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<TYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00094"></a>00094       
-<a name="l00095"></a>00095       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"inplace_add"</span>);
-<a name="l00096"></a>00096       assert( (result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>())
-<a name="l00097"></a>00097              && <span class="stringliteral">"Operands must have same dimension and memory layout in this version of ViennaCL!"</span>);
-<a name="l00098"></a>00098       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00099"></a>00099 
-<a name="l00100"></a>00100       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(result, mat2, size));        
-<a name="l00101"></a>00101     }
-<a name="l00102"></a>00102 
-<a name="l00103"></a>00103 
-<a name="l00112"></a>00112     <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00113"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e">00113</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e" title="Adds two dense matrices and writes the result to a third matrix.">sub</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat1, 
-<a name="l00114"></a>00114              <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat2,
-<a name="l00115"></a>00115              <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & result)
-<a name="l00116"></a>00116     {
-<a name="l00117"></a>00117       assert(result.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat1.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00118"></a>00118       assert(result.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == mat1.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00119"></a>00119       assert(result.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00120"></a>00120       assert(result.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00121"></a>00121 
-<a name="l00122"></a>00122       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<TYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00123"></a>00123       
-<a name="l00124"></a>00124       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"sub"</span>);
-<a name="l00125"></a>00125       assert( (mat1.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>())
-<a name="l00126"></a>00126              && <span class="stringliteral">"Operands must have same dimension and memory layout in this version of ViennaCL!"</span>);
-<a name="l00127"></a>00127       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(mat1.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00128"></a>00128 
-<a name="l00129"></a>00129       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat1, mat2, result, size));        
-<a name="l00130"></a>00130     }
-<a name="l00131"></a>00131 
-<a name="l00140"></a>00140     <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00141"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6">00141</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6" title="Adds a dense matrix to another.">inplace_sub</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & result, 
-<a name="l00142"></a>00142                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat2)
-<a name="l00143"></a>00143     {
-<a name="l00144"></a>00144       assert(result.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00145"></a>00145       assert(result.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00146"></a>00146 
-<a name="l00147"></a>00147       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<TYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00148"></a>00148       
-<a name="l00149"></a>00149       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"inplace_sub"</span>);
-<a name="l00150"></a>00150       assert( (result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>())
-<a name="l00151"></a>00151              && <span class="stringliteral">"Operands must have same dimension and memory layout in this version of ViennaCL!"</span>);
-<a name="l00152"></a>00152       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00153"></a>00153 
-<a name="l00154"></a>00154       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(result, mat2, size));        
-<a name="l00155"></a>00155     }
-<a name="l00156"></a>00156 
-<a name="l00165"></a>00165     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00166"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35">00166</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">inplace_mult</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & result, 
-<a name="l00167"></a>00167                       SCALARTYPE val)
-<a name="l00168"></a>00168     {
-<a name="l00169"></a>00169       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00170"></a>00170       
-<a name="l00171"></a>00171       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00172"></a>00172       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>();
-<a name="l00173"></a>00173 
-<a name="l00174"></a>00174       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(result, val, size));
-<a name="l00175"></a>00175     }
-<a name="l00176"></a>00176 
-<a name="l00177"></a>00177 
-<a name="l00186"></a>00186     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00187"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a4501136a87a9d6294c210628ffcb23d0">00187</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">inplace_mult</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & result, 
-<a name="l00188"></a>00188                       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">viennacl::scalar<SCALARTYPE></a> <span class="keyword">const</span> & val)
-<a name="l00189"></a>00189     {
-<a name="l00190"></a>00190       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00191"></a>00191       
-<a name="l00192"></a>00192       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"inplace_mult"</span>);
-<a name="l00193"></a>00193       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>();
-<a name="l00194"></a>00194 
-<a name="l00195"></a>00195       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(result, val, size));
-<a name="l00196"></a>00196     }
-<a name="l00197"></a>00197 
-<a name="l00198"></a>00198 
-<a name="l00199"></a>00199 
-<a name="l00208"></a>00208     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00209"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33">00209</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33" title="Multiplies a dense matrix by a scalar.">inplace_divide</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & result, 
-<a name="l00210"></a>00210                         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">viennacl::scalar<SCALARTYPE></a> <span class="keyword">const</span> & val)
-<a name="l00211"></a>00211     {
-<a name="l00212"></a>00212       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00213"></a>00213       
-<a name="l00214"></a>00214       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"inplace_divide"</span>);
-<a name="l00215"></a>00215       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>();
-<a name="l00216"></a>00216 
-<a name="l00217"></a>00217       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(result, val, size));
-<a name="l00218"></a>00218     }
-<a name="l00219"></a>00219 
-<a name="l00220"></a>00220     <span class="comment">// A * x</span>
-<a name="l00228"></a>00228 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00229"></a>00229     <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00230"></a>00230                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>, 
-<a name="l00231"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb">00231</a>                                 op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & mat, 
-<a name="l00232"></a>00232                                                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00233"></a>00233     {
-<a name="l00234"></a>00234       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00235"></a>00235                                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>, 
-<a name="l00236"></a>00236                                          op_prod >(mat, vec);
-<a name="l00237"></a>00237     }
-<a name="l00238"></a>00238     
-<a name="l00247"></a>00247     <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00248"></a><a class="code" href="namespaceviennacl_1_1linalg.html#abbc7f86d9d7e24ff1eae02fe976bc77d">00248</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat, 
-<a name="l00249"></a>00249                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<TYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, 
-<a name="l00250"></a>00250                           <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<TYPE, VECTOR_ALIGNMENT></a> & result)
-<a name="l00251"></a>00251     {
-<a name="l00252"></a>00252       assert(mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00253"></a>00253       <span class="comment">// Inplace matrix-vector products like x = prod(A, x) are currently illegal: Introduce a temporary like y = prod(A, x); x = y; instead</span>
-<a name="l00254"></a>00254       assert(vec.<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>() != result.<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>() && <span class="stringliteral">"No direct inplace matrix-vector product possible. Introduce a temporary!"</span>);
-<a name="l00255"></a>00255       result.<a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00256"></a>00256 
-<a name="l00257"></a>00257       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<TYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00258"></a>00258       
-<a name="l00259"></a>00259       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"vec_mul"</span>);
-<a name="l00260"></a>00260       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(
-<a name="l00261"></a>00261                              k(mat, mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(), vec, result));    
-<a name="l00262"></a>00262     }
-<a name="l00263"></a>00263 
-<a name="l00264"></a>00264 
-<a name="l00265"></a>00265 
-<a name="l00266"></a>00266     <span class="comment">// trans(A) * x</span>
-<a name="l00274"></a>00274 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00275"></a>00275     <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00276"></a>00276                                                                    <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00277"></a>00277                                                                    op_trans>,
-<a name="l00278"></a>00278                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>, 
-<a name="l00279"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a4f088d9329b8c801492830a519fdef15">00279</a>                                 op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00280"></a>00280                                                                                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00281"></a>00281                                                                                        op_trans> & proxy, 
-<a name="l00282"></a>00282                                                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00283"></a>00283     {
-<a name="l00284"></a>00284       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00285"></a>00285                                                                             <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00286"></a>00286                                                                             op_trans>,
-<a name="l00287"></a>00287                                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>, 
-<a name="l00288"></a>00288                                          op_prod >(proxy, vec);
-<a name="l00289"></a>00289     }
-<a name="l00290"></a>00290 
-<a name="l00293"></a>00293     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00294"></a><a class="code" href="namespaceviennacl_1_1linalg.html#af8a3b3e7b5421283ccdc96c07ce3c624">00294</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00295"></a>00295                                                       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00296"></a>00296                                                       op_trans> & mat,
-<a name="l00297"></a>00297                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, 
-<a name="l00298"></a>00298                           <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & result)
-<a name="l00299"></a>00299     {
-<a name="l00300"></a>00300       <a class="code" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c" title="Carries out matrix-vector multiplication with a transposed matrix.">trans_prod_impl</a>(mat.lhs(), vec, result);
-<a name="l00301"></a>00301     }
-<a name="l00302"></a>00302     
-<a name="l00311"></a>00311     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00312"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c">00312</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c" title="Carries out matrix-vector multiplication with a transposed matrix.">trans_prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat,
-<a name="l00313"></a>00313                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, 
-<a name="l00314"></a>00314                                 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & result)
-<a name="l00315"></a>00315     {
-<a name="l00316"></a>00316       assert(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());  <span class="comment">//remember: mat is transposed!</span>
-<a name="l00317"></a>00317       <span class="comment">// Inplace matrix-vector products like x = prod(A, x) are currently illegal: Introduce a temporary like y = prod(A, x); x = y; instead</span>
-<a name="l00318"></a>00318       assert(vec.<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>() != result.<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>() && <span class="stringliteral">"No direct inplace matrix-vector product possible. Introduce a temporary!"</span>);
-<a name="l00319"></a>00319       result.<a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00320"></a>00320 
-<a name="l00321"></a>00321       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00322"></a>00322       
-<a name="l00323"></a>00323       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00324"></a>00324       
-<a name="l00325"></a>00325       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat, mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(), vec, result));        
-<a name="l00326"></a>00326     }
-<a name="l00327"></a>00327 
-<a name="l00328"></a>00328 
-<a name="l00329"></a>00329 
-<a name="l00335"></a>00335     <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keyword">typename</span> F3, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00336"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a1294bf672bcc55c62d1622b07b44425e">00336</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F1, ALIGNMENT></a> & A, 
-<a name="l00337"></a>00337                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F2, ALIGNMENT></a> & B, 
-<a name="l00338"></a>00338                           <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> & C, 
-<a name="l00339"></a>00339                           <span class="keywordtype">int</span> block_size = 15) <span class="comment">// [JW] added ability to set block size from outside ..</span>
-<a name="l00340"></a>00340     {
-<a name="l00341"></a>00341       assert(A.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00342"></a>00342       assert(A.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00343"></a>00343       assert(B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00344"></a>00344       <span class="comment">// Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead</span>
-<a name="l00345"></a>00345       assert(C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != A.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() 
-<a name="l00346"></a>00346              && C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != B.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>()
-<a name="l00347"></a>00347              && <span class="stringliteral">"No direct inplace matrix-matrix product possible. Introduce a temporary!"</span>);
-<a name="l00348"></a>00348       
-<a name="l00349"></a>00349       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00350"></a>00350                                                                           <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00351"></a>00351                                                                           <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00352"></a>00352       KernelClass::init();
-<a name="l00353"></a>00353       
-<a name="l00354"></a>00354       <span class="comment">//std::cout << "KernelClass::program_name() : " << KernelClass::program_name() << std::endl;</span>
-<a name="l00355"></a>00355       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"prod_AA"</span>);
-<a name="l00356"></a>00356       
-<a name="l00357"></a>00357       <span class="comment">/*k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size1() / 2, block_size / 2));</span>
-<a name="l00358"></a>00358 <span class="comment">      k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size2() / 2, block_size / 2));</span>
-<a name="l00359"></a>00359 <span class="comment">      k.local_work_size(0, block_size / 2);</span>
-<a name="l00360"></a>00360 <span class="comment">      k.local_work_size(1, block_size / 2);*/</span>
-<a name="l00361"></a>00361       
-<a name="l00362"></a>00362       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), block_size));
-<a name="l00363"></a>00363       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), block_size));
-<a name="l00364"></a>00364       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, block_size);
-<a name="l00365"></a>00365       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(1, block_size);
-<a name="l00366"></a>00366       
-<a name="l00367"></a>00367       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(
-<a name="l00368"></a>00368                              k(A, A.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), A.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), A.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), A.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00369"></a>00369                                B, B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00370"></a>00370                                C, C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00371"></a>00371                                <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size),
-<a name="l00372"></a>00372                                <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size) ));        
-<a name="l00373"></a>00373     }
-<a name="l00374"></a>00374 
-<a name="l00375"></a>00375 
-<a name="l00381"></a>00381     <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keyword">typename</span> F3, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00382"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aa03a4515a4033a22afc6f2e9bfad1ed6">00382</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00383"></a>00383                                                       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00384"></a>00384                                                       op_trans> & A, 
-<a name="l00385"></a>00385                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F2, ALIGNMENT></a> & B, 
-<a name="l00386"></a>00386                           <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> & C)
-<a name="l00387"></a>00387     {
-<a name="l00388"></a>00388       assert(A.size2() == C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00389"></a>00389       assert(A.size1() == B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00390"></a>00390       assert(B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00391"></a>00391       <span class="comment">// Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead</span>
-<a name="l00392"></a>00392       assert(C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != A.lhs().<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>() 
-<a name="l00393"></a>00393              && C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != B.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>()
-<a name="l00394"></a>00394              && <span class="stringliteral">"No direct inplace matrix-matrix product possible. Introduce a temporary!"</span>);
-<a name="l00395"></a>00395       
-<a name="l00396"></a>00396       <span class="keywordtype">int</span> block_size = 15;
-<a name="l00397"></a>00397 
-<a name="l00398"></a>00398       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00399"></a>00399                                                                           <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00400"></a>00400                                                                           <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00401"></a>00401       KernelClass::init();
-<a name="l00402"></a>00402       
-<a name="l00403"></a>00403       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"prod_TA"</span>);
-<a name="l00404"></a>00404       
-<a name="l00405"></a>00405       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), block_size));
-<a name="l00406"></a>00406       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), block_size));
-<a name="l00407"></a>00407       
-<a name="l00408"></a>00408       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, block_size);
-<a name="l00409"></a>00409       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(1, block_size);
-<a name="l00410"></a>00410       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(
-<a name="l00411"></a>00411                              k(A.lhs(), A.lhs().size1(), A.lhs().size2(), A.lhs().internal_size1(), A.lhs().internal_size2(),
-<a name="l00412"></a>00412                                B, B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00413"></a>00413                                C, C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00414"></a>00414                                <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size),
-<a name="l00415"></a>00415                                <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size) ));        
-<a name="l00416"></a>00416     }
-<a name="l00417"></a>00417 
-<a name="l00418"></a>00418 
-<a name="l00424"></a>00424     <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keyword">typename</span> F3, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00425"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a07e0985a7c2429067b483238d0ffeb2a">00425</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F1, ALIGNMENT></a> & A, 
-<a name="l00426"></a>00426                    <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00427"></a>00427                                                       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00428"></a>00428                                                       op_trans> & B,
-<a name="l00429"></a>00429                    <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> & C)
-<a name="l00430"></a>00430     {
-<a name="l00431"></a>00431       assert(A.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00432"></a>00432       assert(A.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == B.size2());
-<a name="l00433"></a>00433       assert(B.size1() == C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00434"></a>00434       <span class="comment">// Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead</span>
-<a name="l00435"></a>00435       assert(C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != A.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() 
-<a name="l00436"></a>00436              && C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != B.lhs().<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>()
-<a name="l00437"></a>00437              && <span class="stringliteral">"No direct inplace matrix-matrix product possible. Introduce a temporary!"</span>);
-<a name="l00438"></a>00438       
-<a name="l00439"></a>00439       <span class="keywordtype">int</span> block_size = 15;
-<a name="l00440"></a>00440 
-<a name="l00441"></a>00441       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00442"></a>00442                                                                           <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00443"></a>00443                                                                           <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00444"></a>00444       KernelClass::init();
-<a name="l00445"></a>00445       
-<a name="l00446"></a>00446       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"prod_AT"</span>);
-<a name="l00447"></a>00447       
-<a name="l00448"></a>00448       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), block_size));
-<a name="l00449"></a>00449       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), block_size));
-<a name="l00450"></a>00450       
-<a name="l00451"></a>00451       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, block_size);
-<a name="l00452"></a>00452       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(1, block_size);
-<a name="l00453"></a>00453       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(
-<a name="l00454"></a>00454                              k(A, A.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), A.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), A.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), A.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00455"></a>00455                                B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2(),
-<a name="l00456"></a>00456                                C, C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00457"></a>00457                                <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size),
-<a name="l00458"></a>00458                                <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size) ));        
-<a name="l00459"></a>00459     }
-<a name="l00460"></a>00460 
-<a name="l00461"></a>00461 
-<a name="l00462"></a>00462 
-<a name="l00468"></a>00468     <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keyword">typename</span> F3, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00469"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a21163d892b2568fa4fa3abe750a5504f">00469</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00470"></a>00470                                                       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00471"></a>00471                                                       op_trans> & A,
-<a name="l00472"></a>00472                    <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00473"></a>00473                                                       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00474"></a>00474                                                       op_trans> & B,
-<a name="l00475"></a>00475                    <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> & C)
-<a name="l00476"></a>00476     {
-<a name="l00477"></a>00477       assert(A.size2() == C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00478"></a>00478       assert(A.size1() == B.size2());
-<a name="l00479"></a>00479       assert(B.size1() == C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00480"></a>00480       <span class="comment">// Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead</span>
-<a name="l00481"></a>00481       assert(C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != A.lhs().<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>() 
-<a name="l00482"></a>00482              && C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != B.lhs().<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>()
-<a name="l00483"></a>00483              && <span class="stringliteral">"No direct inplace matrix-matrix product possible. Introduce a temporary!"</span>);
-<a name="l00484"></a>00484       
-<a name="l00485"></a>00485       <span class="keywordtype">int</span> block_size = 15;
-<a name="l00486"></a>00486 
-<a name="l00487"></a>00487       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00488"></a>00488                                                                           <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00489"></a>00489                                                                           <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00490"></a>00490       KernelClass::init();
-<a name="l00491"></a>00491       
-<a name="l00492"></a>00492       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"prod_TT"</span>);
-<a name="l00493"></a>00493       
-<a name="l00494"></a>00494       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), block_size));
-<a name="l00495"></a>00495       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), block_size));
-<a name="l00496"></a>00496       
-<a name="l00497"></a>00497       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, block_size);
-<a name="l00498"></a>00498       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(1, block_size);
-<a name="l00499"></a>00499       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(
-<a name="l00500"></a>00500                              k(A.lhs(), A.lhs().size1(), A.lhs().size2(), A.lhs().internal_size1(), A.lhs().internal_size2(),
-<a name="l00501"></a>00501                                B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2(),
-<a name="l00502"></a>00502                                C, C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00503"></a>00503                                <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size),
-<a name="l00504"></a>00504                                <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size) ));        
-<a name="l00505"></a>00505     }
-<a name="l00506"></a>00506 
-<a name="l00507"></a>00507 
-<a name="l00508"></a>00508 
-<a name="l00509"></a>00509 
-<a name="l00510"></a>00510 
-<a name="l00511"></a>00511 
-<a name="l00512"></a>00512 
-<a name="l00513"></a>00513 
-<a name="l00514"></a>00514 
-<a name="l00515"></a>00515 
-<a name="l00516"></a>00516 
-<a name="l00522"></a>00522     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VA1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VA2>
-<a name="l00523"></a>00523     <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VA1></a>,
-<a name="l00524"></a>00524                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA2></a>,
-<a name="l00525"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a1b56d764864ae3d91bb6bac2ae87bec8">00525</a>                                  op_prod> <a class="code" href="namespaceviennacl_1_1linalg.html#a1b56d764864ae3d91bb6bac2ae87bec8" title="Returns a proxy class for the operation mat += vec1 * vec2^T, i.e. a rank 1 update.">outer_prod</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA1></a> & vec1, 
-<a name="l00526"></a>00526                                                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA2></a> & vec2)
-<a name="l00527"></a>00527     {
-<a name="l00528"></a>00528       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VA1></a>,
-<a name="l00529"></a>00529                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA2></a>,
-<a name="l00530"></a>00530                                           op_prod>(vec1, vec2);
-<a name="l00531"></a>00531     }
-<a name="l00532"></a>00532     
-<a name="l00533"></a>00533     
-<a name="l00534"></a>00534 
-<a name="l00543"></a>00543     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00544"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716">00544</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716" title="The implementation of the operation mat += vec1 * vec2^T, i.e. a rank 1 update.">rank_1_update</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & mat1, 
-<a name="l00545"></a>00545                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1, 
-<a name="l00546"></a>00546                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2)
-<a name="l00547"></a>00547     {
-<a name="l00548"></a>00548       assert(mat1.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00549"></a>00549       assert(mat1.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00550"></a>00550 
-<a name="l00551"></a>00551       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00552"></a>00552       
-<a name="l00553"></a>00553       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"rank1_update"</span>);
-<a name="l00554"></a>00554 
-<a name="l00555"></a>00555       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat1, mat1.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat1.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat1.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat1.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(), vec1, vec2));        
-<a name="l00556"></a>00556     }
-<a name="l00557"></a>00557     
-<a name="l00558"></a>00558     
-<a name="l00568"></a>00568     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00569"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85">00569</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85" title="The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update...">scaled_rank_1_update</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & mat1,
-<a name="l00570"></a>00570                               SCALARTYPE val,
-<a name="l00571"></a>00571                               <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1, 
-<a name="l00572"></a>00572                               <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2)
-<a name="l00573"></a>00573     {
-<a name="l00574"></a>00574       assert(mat1.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00575"></a>00575       assert(mat1.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00576"></a>00576 
-<a name="l00577"></a>00577       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType    KernelClass;
-<a name="l00578"></a>00578       
-<a name="l00579"></a>00579       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00580"></a>00580 
-<a name="l00581"></a>00581       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat1, mat1.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat1.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat1.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat1.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(), 
-<a name="l00582"></a>00582                                                            val, vec1, vec2));        
-<a name="l00583"></a>00583     }
-<a name="l00584"></a>00584     
-<a name="l00585"></a>00585   } <span class="comment">//namespace linalg</span>
-<a name="l00586"></a>00586 
-<a name="l00587"></a>00587 
-<a name="l00588"></a>00588     <span class="comment">//v = A * x</span>
-<a name="l00593"></a>00593 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00594"></a>00594     <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00595"></a>00595     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & 
-<a name="l00596"></a><a class="code" href="classviennacl_1_1vector.html#abf65c6fc9600970e4ac00b693e0d04fb">00596</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00597"></a>00597                                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00598"></a>00598                                                                                           viennacl::op_prod> & proxy) 
-<a name="l00599"></a>00599     {
-<a name="l00600"></a>00600       <span class="comment">// check for the special case x = A * x</span>
-<a name="l00601"></a>00601       <span class="keywordflow">if</span> (proxy.rhs().handle() == this-><a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>())
-<a name="l00602"></a>00602       {
-<a name="l00603"></a>00603         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> result(proxy.rhs().size());
-<a name="l00604"></a>00604         <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00605"></a>00605         *<span class="keyword">this</span> = result;
-<a name="l00606"></a>00606         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00607"></a>00607       }
-<a name="l00608"></a>00608       <span class="keywordflow">else</span>
-<a name="l00609"></a>00609       {
-<a name="l00610"></a>00610         <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00611"></a>00611         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00612"></a>00612       }
-<a name="l00613"></a>00613       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00614"></a>00614     }
-<a name="l00615"></a>00615 
-<a name="l00616"></a>00616     <span class="comment">//v += A * x</span>
-<a name="l00621"></a>00621 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00622"></a>00622     <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00623"></a>00623     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & 
-<a name="l00624"></a><a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3">00624</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00625"></a>00625                                                                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00626"></a>00626                                                                                  op_prod> & proxy) 
-<a name="l00627"></a>00627     {
-<a name="l00628"></a>00628       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00629"></a>00629       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00630"></a>00630       *<span class="keyword">this</span> += result;
-<a name="l00631"></a>00631       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00632"></a>00632     }
-<a name="l00633"></a>00633 
-<a name="l00638"></a>00638     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00639"></a>00639     <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00640"></a>00640     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & 
-<a name="l00641"></a><a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68">00641</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00642"></a>00642                                                                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00643"></a>00643                                                                                  op_prod> & proxy) 
-<a name="l00644"></a>00644     {
-<a name="l00645"></a>00645       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00646"></a>00646       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00647"></a>00647       *<span class="keyword">this</span> -= result;
-<a name="l00648"></a>00648       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00649"></a>00649     }
-<a name="l00650"></a>00650     
-<a name="l00651"></a>00651     
-<a name="l00652"></a>00652     <span class="comment">//free functions:</span>
-<a name="l00657"></a>00657 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00658"></a>00658     <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00659"></a>00659     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> 
-<a name="l00660"></a><a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973">00660</a>     <a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659" title="Operator overload for the addition of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00661"></a>00661                                                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00662"></a>00662                                                                                 op_prod> & proxy) 
-<a name="l00663"></a>00663     {
-<a name="l00664"></a>00664       assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00665"></a>00665       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00666"></a>00666       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00667"></a>00667       result += *<span class="keyword">this</span>;
-<a name="l00668"></a>00668       <span class="keywordflow">return</span> result;
-<a name="l00669"></a>00669     }
-<a name="l00670"></a>00670 
-<a name="l00675"></a>00675     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00676"></a>00676     <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00677"></a>00677     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> 
-<a name="l00678"></a><a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1">00678</a>     <a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57" title="Operator overload for the subtraction of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00679"></a>00679                                                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00680"></a>00680                                                                                 op_prod> & proxy) 
-<a name="l00681"></a>00681     {
-<a name="l00682"></a>00682       assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00683"></a>00683       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00684"></a>00684       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00685"></a>00685       result = *<span class="keyword">this</span> - result;
-<a name="l00686"></a>00686       <span class="keywordflow">return</span> result;
-<a name="l00687"></a>00687     }
-<a name="l00688"></a>00688 
-<a name="l00689"></a>00689 
-<a name="l00691"></a>00691 
-<a name="l00692"></a>00692 
-<a name="l00693"></a>00693     <span class="comment">//v = trans(A) * x</span>
-<a name="l00698"></a>00698 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00699"></a>00699     <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00700"></a>00700     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & 
-<a name="l00701"></a><a class="code" href="classviennacl_1_1vector.html#aa34adb8d02e43797f23d78bd0fcb7ce9">00701</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00702"></a>00702                                                                                                                    <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00703"></a>00703                                                                                                                    op_trans>,
-<a name="l00704"></a>00704                                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00705"></a>00705                                                                                           viennacl::op_prod> & proxy) 
-<a name="l00706"></a>00706     {
-<a name="l00707"></a>00707       <span class="comment">// check for the special case x = trans(A) * x</span>
-<a name="l00708"></a>00708       <span class="keywordflow">if</span> (proxy.rhs().handle() == this-><a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>())
-<a name="l00709"></a>00709       {
-<a name="l00710"></a>00710         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> result(proxy.rhs().size());
-<a name="l00711"></a>00711         <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00712"></a>00712         *<span class="keyword">this</span> = result;
-<a name="l00713"></a>00713         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00714"></a>00714       }
-<a name="l00715"></a>00715       <span class="keywordflow">else</span>
-<a name="l00716"></a>00716       {
-<a name="l00717"></a>00717         <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00718"></a>00718         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00719"></a>00719       }
-<a name="l00720"></a>00720       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00721"></a>00721     }
-<a name="l00722"></a>00722 
-<a name="l00723"></a>00723     <span class="comment">//v += A * x</span>
-<a name="l00728"></a>00728 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00729"></a>00729     <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00730"></a>00730     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & 
-<a name="l00731"></a><a class="code" href="classviennacl_1_1vector.html#a7170c99b16798d529af0325845639839">00731</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00732"></a>00732                                                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00733"></a>00733                                                                                                           op_trans>,
-<a name="l00734"></a>00734                                                                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00735"></a>00735                                                                                  op_prod> & proxy) 
-<a name="l00736"></a>00736     {
-<a name="l00737"></a>00737       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00738"></a>00738       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00739"></a>00739       *<span class="keyword">this</span> += result;
-<a name="l00740"></a>00740       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00741"></a>00741     }
-<a name="l00742"></a>00742 
-<a name="l00747"></a>00747     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00748"></a>00748     <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00749"></a>00749     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & 
-<a name="l00750"></a><a class="code" href="classviennacl_1_1vector.html#a42a2bea8b973e703dc74e7ad0a21ad75">00750</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00751"></a>00751                                                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00752"></a>00752                                                                                                           op_trans>,
-<a name="l00753"></a>00753                                                                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00754"></a>00754                                                                                  op_prod> & proxy) 
-<a name="l00755"></a>00755     {
-<a name="l00756"></a>00756       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00757"></a>00757       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00758"></a>00758       *<span class="keyword">this</span> -= result;
-<a name="l00759"></a>00759       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00760"></a>00760     }
-<a name="l00761"></a>00761     
-<a name="l00762"></a>00762     
-<a name="l00763"></a>00763     <span class="comment">//free functions:</span>
-<a name="l00768"></a>00768 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00769"></a>00769     <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00770"></a>00770     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> 
-<a name="l00771"></a><a class="code" href="classviennacl_1_1vector.html#afa36924cb9eece8efec2a62996e0f97a">00771</a>     <a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659" title="Operator overload for the addition of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00772"></a>00772                                                                                                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00773"></a>00773                                                                                                          op_trans>,
-<a name="l00774"></a>00774                                                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00775"></a>00775                                                                                 op_prod> & proxy) 
-<a name="l00776"></a>00776     {
-<a name="l00777"></a>00777       assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00778"></a>00778       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00779"></a>00779       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00780"></a>00780       result += *<span class="keyword">this</span>;
-<a name="l00781"></a>00781       <span class="keywordflow">return</span> result;
-<a name="l00782"></a>00782     }
-<a name="l00783"></a>00783 
-<a name="l00788"></a>00788     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00789"></a>00789     <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00790"></a>00790     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> 
-<a name="l00791"></a><a class="code" href="classviennacl_1_1vector.html#a4ac366eca51e40271f505b2996173613">00791</a>     <a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57" title="Operator overload for the subtraction of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00792"></a>00792                                                                                                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00793"></a>00793                                                                                                          op_trans>,
-<a name="l00794"></a>00794                                                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00795"></a>00795                                                                                 op_prod> & proxy) 
-<a name="l00796"></a>00796     {
-<a name="l00797"></a>00797       assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00798"></a>00798       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00799"></a>00799       <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00800"></a>00800       result = *<span class="keyword">this</span> - result;
-<a name="l00801"></a>00801       <span class="keywordflow">return</span> result;
-<a name="l00802"></a>00802     }
-<a name="l00803"></a>00803 
-<a name="l00804"></a>00804 
-<a name="l00805"></a>00805 } <span class="comment">//namespace viennacl</span>
-<a name="l00806"></a>00806 
-<a name="l00807"></a>00807 
-<a name="l00808"></a>00808 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__col__kernels_8h.html b/doc/doxygen/html/matrix__prod__col__col__col__kernels_8h.html
deleted file mode 100644
index a74e930..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__col__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__col__col__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_col_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__col__col__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">matrix_prod_col_col_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">matrix_prod_col_col_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__col__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__col__col__col__kernels_8h_source.html
deleted file mode 100644
index b5ec4b4..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__col__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__col__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_COL_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_COL_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__col__col__source_8h.html">viennacl/linalg/kernels/matrix_prod_col_col_col_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_prod_col_col_col;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_prod_col_col_col<float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_col_col_col_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">matrix_prod_col_col_col_align1_prod_TT</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">matrix_prod_col_col_col_align1_prod_TA</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">matrix_prod_col_col_col_align1_prod_AA</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">matrix_prod_col_col_col_align1_prod_AT</a>);
-<a name="l00040"></a>00040         std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor">        #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051        } <span class="comment">//if</span>
-<a name="l00052"></a>00052      } <span class="comment">//init</span>
-<a name="l00053"></a>00053     }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056 
-<a name="l00058"></a>00058    <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">00059</a>    <span class="keyword">struct </span>matrix_prod_col_col_col<double, 1>
-<a name="l00060"></a>00060    {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062     {
-<a name="l00063"></a>00063       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_col_col_col_1"</span>;
-<a name="l00064"></a>00064     }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066     {
-<a name="l00067"></a>00067       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071       {
-<a name="l00072"></a>00072         std::string source;
-<a name="l00073"></a>00073         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">matrix_prod_col_col_col_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">matrix_prod_col_col_col_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">matrix_prod_col_col_col_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">matrix_prod_col_col_col_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078         std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor">        #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089        } <span class="comment">//if</span>
-<a name="l00090"></a>00090      } <span class="comment">//init</span>
-<a name="l00091"></a>00091     }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094   }  <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095  }  <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 }  <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__col__source_8h.html b/doc/doxygen/html/matrix__prod__col__col__col__source_8h.html
deleted file mode 100644
index 83b0a09..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__col__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__col__col__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">matrix_prod_col_col_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">matrix_prod_col_col_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">matrix_prod_col_col_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">matrix_prod_col_col_col_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__col__source_8h_source.html b/doc/doxygen/html/matrix__prod__col__col__col__source_8h_source.html
deleted file mode 100644
index a49d61c..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__col__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__col__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_COL_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_COL_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">matrix_prod_col_col_col_align1_prod_TT</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...col_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"  int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"  {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"    else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"    else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"  }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_col_col_col_align1_prod_TT</span>
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">matrix_prod_col_col_col_align1_prod_TA</a> = 
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...col_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"  {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"    else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"    else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"  }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_col_col_col_align1_prod_TA</span>
-<a name="l00133"></a>00133 
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">matrix_prod_col_col_col_align1_prod_AA</a> = 
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...col_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"  int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"    else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"    else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"  }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_col_col_col_align1_prod_AA</span>
-<a name="l00195"></a>00195 
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">matrix_prod_col_col_col_align1_prod_AT</a> = 
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...col_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"  int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"  int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"  {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"    else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"    else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"  }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_col_col_col_align1_prod_AT</span>
-<a name="l00257"></a>00257 
-<a name="l00258"></a>00258   }  <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259  }  <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 }  <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__row__kernels_8h.html b/doc/doxygen/html/matrix__prod__col__col__row__kernels_8h.html
deleted file mode 100644
index eaed50f..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__row__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__col__row__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_col_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__col__col__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">matrix_prod_col_col_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">matrix_prod_col_col_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__row__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__col__col__row__kernels_8h_source.html
deleted file mode 100644
index 3768870..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__row__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__col__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_COL_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_COL_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__col__row__source_8h.html">viennacl/linalg/kernels/matrix_prod_col_col_row_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_prod_col_col_row;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_prod_col_col_row<float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_col_col_row_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">matrix_prod_col_col_row_align1_prod_TT</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">matrix_prod_col_col_row_align1_prod_TA</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">matrix_prod_col_col_row_align1_prod_AA</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">matrix_prod_col_col_row_align1_prod_AT</a>);
-<a name="l00040"></a>00040         std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor">        #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051        } <span class="comment">//if</span>
-<a name="l00052"></a>00052      } <span class="comment">//init</span>
-<a name="l00053"></a>00053     }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056 
-<a name="l00058"></a>00058    <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">00059</a>    <span class="keyword">struct </span>matrix_prod_col_col_row<double, 1>
-<a name="l00060"></a>00060    {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062     {
-<a name="l00063"></a>00063       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_col_col_row_1"</span>;
-<a name="l00064"></a>00064     }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066     {
-<a name="l00067"></a>00067       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071       {
-<a name="l00072"></a>00072         std::string source;
-<a name="l00073"></a>00073         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">matrix_prod_col_col_row_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">matrix_prod_col_col_row_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">matrix_prod_col_col_row_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">matrix_prod_col_col_row_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078         std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor">        #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089        } <span class="comment">//if</span>
-<a name="l00090"></a>00090      } <span class="comment">//init</span>
-<a name="l00091"></a>00091     }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094   }  <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095  }  <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 }  <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__row__source_8h.html b/doc/doxygen/html/matrix__prod__col__col__row__source_8h.html
deleted file mode 100644
index 44ed5d6..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__row__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__col__col__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">matrix_prod_col_col_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">matrix_prod_col_col_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">matrix_prod_col_col_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">matrix_prod_col_col_row_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__row__source_8h_source.html b/doc/doxygen/html/matrix__prod__col__col__row__source_8h_source.html
deleted file mode 100644
index 522cf3c..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__row__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__col__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_COL_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_COL_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">matrix_prod_col_col_row_align1_prod_TT</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...col_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"  int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"  {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"    else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"    else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"  }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_col_col_row_align1_prod_TT</span>
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">matrix_prod_col_col_row_align1_prod_TA</a> = 
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...col_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"  {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"    else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"    else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"  }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_col_col_row_align1_prod_TA</span>
-<a name="l00133"></a>00133 
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">matrix_prod_col_col_row_align1_prod_AA</a> = 
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...col_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"  int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"    else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"    else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"  }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_col_col_row_align1_prod_AA</span>
-<a name="l00195"></a>00195 
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">matrix_prod_col_col_row_align1_prod_AT</a> = 
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...col_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"  int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"  int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"  {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"    else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"    else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"  }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_col_col_row_align1_prod_AT</span>
-<a name="l00257"></a>00257 
-<a name="l00258"></a>00258   }  <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259  }  <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 }  <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__col__kernels_8h.html b/doc/doxygen/html/matrix__prod__col__row__col__kernels_8h.html
deleted file mode 100644
index 01a7b67..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__col__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__row__col__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_row_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__col__row__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">matrix_prod_col_row_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">matrix_prod_col_row_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__col__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__col__row__col__kernels_8h_source.html
deleted file mode 100644
index 865e262..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__col__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__row__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_ROW_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__row__col__source_8h.html">viennacl/linalg/kernels/matrix_prod_col_row_col_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_prod_col_row_col;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_prod_col_row_col<float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_col_row_col_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">matrix_prod_col_row_col_align1_prod_TT</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">matrix_prod_col_row_col_align1_prod_TA</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">matrix_prod_col_row_col_align1_prod_AA</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">matrix_prod_col_row_col_align1_prod_AT</a>);
-<a name="l00040"></a>00040         std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor">        #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051        } <span class="comment">//if</span>
-<a name="l00052"></a>00052      } <span class="comment">//init</span>
-<a name="l00053"></a>00053     }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056 
-<a name="l00058"></a>00058    <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">00059</a>    <span class="keyword">struct </span>matrix_prod_col_row_col<double, 1>
-<a name="l00060"></a>00060    {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062     {
-<a name="l00063"></a>00063       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_col_row_col_1"</span>;
-<a name="l00064"></a>00064     }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066     {
-<a name="l00067"></a>00067       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071       {
-<a name="l00072"></a>00072         std::string source;
-<a name="l00073"></a>00073         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">matrix_prod_col_row_col_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">matrix_prod_col_row_col_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">matrix_prod_col_row_col_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">matrix_prod_col_row_col_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078         std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor">        #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089        } <span class="comment">//if</span>
-<a name="l00090"></a>00090      } <span class="comment">//init</span>
-<a name="l00091"></a>00091     }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094   }  <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095  }  <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 }  <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__col__source_8h.html b/doc/doxygen/html/matrix__prod__col__row__col__source_8h.html
deleted file mode 100644
index 508ad8f..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__col__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__col__row__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">matrix_prod_col_row_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">matrix_prod_col_row_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">matrix_prod_col_row_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">matrix_prod_col_row_col_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__col__source_8h_source.html b/doc/doxygen/html/matrix__prod__col__row__col__source_8h_source.html
deleted file mode 100644
index 167c5f5..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__col__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__row__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_ROW_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">matrix_prod_col_row_col_align1_prod_TT</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...row_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"  {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"    else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"    else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"  }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_col_row_col_align1_prod_TT</span>
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">matrix_prod_col_row_col_align1_prod_TA</a> = 
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...row_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"  int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"  {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"    else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"    else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"  }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_col_row_col_align1_prod_TA</span>
-<a name="l00133"></a>00133 
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">matrix_prod_col_row_col_align1_prod_AA</a> = 
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...row_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"  int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"  int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"    else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"    else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"  }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_col_row_col_align1_prod_AA</span>
-<a name="l00195"></a>00195 
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">matrix_prod_col_row_col_align1_prod_AT</a> = 
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...row_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"  int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"  {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"    else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"    else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"  }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_col_row_col_align1_prod_AT</span>
-<a name="l00257"></a>00257 
-<a name="l00258"></a>00258   }  <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259  }  <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 }  <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__row__kernels_8h.html b/doc/doxygen/html/matrix__prod__col__row__row__kernels_8h.html
deleted file mode 100644
index f397042..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__row__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__row__row__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_row_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__col__row__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">matrix_prod_col_row_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">matrix_prod_col_row_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__row__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__col__row__row__kernels_8h_source.html
deleted file mode 100644
index 23af303..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__row__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__row__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_ROW_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__row__row__source_8h.html">viennacl/linalg/kernels/matrix_prod_col_row_row_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_prod_col_row_row;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_prod_col_row_row<float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_col_row_row_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">matrix_prod_col_row_row_align1_prod_TT</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">matrix_prod_col_row_row_align1_prod_TA</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">matrix_prod_col_row_row_align1_prod_AA</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">matrix_prod_col_row_row_align1_prod_AT</a>);
-<a name="l00040"></a>00040         std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor">        #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051        } <span class="comment">//if</span>
-<a name="l00052"></a>00052      } <span class="comment">//init</span>
-<a name="l00053"></a>00053     }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056 
-<a name="l00058"></a>00058    <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">00059</a>    <span class="keyword">struct </span>matrix_prod_col_row_row<double, 1>
-<a name="l00060"></a>00060    {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062     {
-<a name="l00063"></a>00063       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_col_row_row_1"</span>;
-<a name="l00064"></a>00064     }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066     {
-<a name="l00067"></a>00067       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071       {
-<a name="l00072"></a>00072         std::string source;
-<a name="l00073"></a>00073         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">matrix_prod_col_row_row_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">matrix_prod_col_row_row_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">matrix_prod_col_row_row_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">matrix_prod_col_row_row_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078         std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor">        #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089        } <span class="comment">//if</span>
-<a name="l00090"></a>00090      } <span class="comment">//init</span>
-<a name="l00091"></a>00091     }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094   }  <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095  }  <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 }  <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__row__source_8h.html b/doc/doxygen/html/matrix__prod__col__row__row__source_8h.html
deleted file mode 100644
index 2e2a96a..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__row__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__col__row__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">matrix_prod_col_row_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">matrix_prod_col_row_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">matrix_prod_col_row_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">matrix_prod_col_row_row_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__row__source_8h_source.html b/doc/doxygen/html/matrix__prod__col__row__row__source_8h_source.html
deleted file mode 100644
index c3dd410..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__row__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__row__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_ROW_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">matrix_prod_col_row_row_align1_prod_TT</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...row_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"  {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"    else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"    else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"  }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_col_row_row_align1_prod_TT</span>
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">matrix_prod_col_row_row_align1_prod_TA</a> = 
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...row_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"  int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"  {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"    else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"    else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"  }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_col_row_row_align1_prod_TA</span>
-<a name="l00133"></a>00133 
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">matrix_prod_col_row_row_align1_prod_AA</a> = 
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...row_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"  int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"  int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"    else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"    else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"  }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_col_row_row_align1_prod_AA</span>
-<a name="l00195"></a>00195 
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">matrix_prod_col_row_row_align1_prod_AT</a> = 
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...row_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"  int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"  {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"    else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"    else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"  }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_col_row_row_align1_prod_AT</span>
-<a name="l00257"></a>00257 
-<a name="l00258"></a>00258   }  <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259  }  <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 }  <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__kernel__class__deducer_8hpp.html b/doc/doxygen/html/matrix__prod__kernel__class__deducer_8hpp.html
deleted file mode 100644
index a1e7ae9..0000000
--- a/doc/doxygen/html/matrix__prod__kernel__class__deducer_8hpp.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_prod_kernel_class_deducer.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_prod_kernel_class_deducer.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementation of a helper meta class for deducing the correct kernels for matrix-matrix products.  
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__col__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__col__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__row__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__row__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__col__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__col__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__row__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__row__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="matrix__prod__kernel__class__deducer_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectively  <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of a helper meta class for deducing the correct kernels for matrix-matrix products. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__kernel__class__deducer_8hpp_source.html b/doc/doxygen/html/matrix__prod__kernel__class__deducer_8hpp_source.html
deleted file mode 100644
index 3b6c0d6..0000000
--- a/doc/doxygen/html/matrix__prod__kernel__class__deducer_8hpp_source.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_prod_kernel_class_deducer.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_prod_kernel_class_deducer.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__kernel__class__deducer_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_MATRIX_PROD_KERNEL_CLASS_DEDUCER_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_MATRIX_PROD_KERNEL_CLASS_DEDUCER_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <fstream></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sstream></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__col__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__col__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__row__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__row__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h</a>"</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__col__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h</a>"</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__col__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h</a>"</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__row__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h</a>"</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__row__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h</a>"</span>
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035 <span class="preprocessor">#include <vector></span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include <map></span>
-<a name="l00037"></a>00037 
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>viennacl
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040   <span class="keyword">namespace </span>tools
-<a name="l00041"></a>00041   {
-<a name="l00043"></a>00043     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType1, <span class="keyword">typename</span> MatrixType2, <span class="keyword">typename</span> MatrixType3>
-<a name="l00044"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">00044</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>
-<a name="l00045"></a>00045     {};
-<a name="l00046"></a>00046     
-<a name="l00047"></a>00047     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00048"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">00048</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00049"></a>00049                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00050"></a>00050                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00051"></a>00051     {
-<a name="l00052"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html#a3eb764b159bfae3b099eabbb99c418fe">00052</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_row_row_row<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00053"></a>00053     };
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00056"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">00056</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00057"></a>00057                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00058"></a>00058                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00059"></a>00059     {
-<a name="l00060"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html#a4a11371fee17337eb321c3ff824787c8">00060</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_row_row_col<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00061"></a>00061     };
-<a name="l00062"></a>00062     
-<a name="l00063"></a>00063     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00064"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">00064</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00065"></a>00065                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00066"></a>00066                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00067"></a>00067     {
-<a name="l00068"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html#a318762097ca7212b82ae6ab04cbfa2d7">00068</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_row_col_row<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00069"></a>00069     };
-<a name="l00070"></a>00070 
-<a name="l00071"></a>00071     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00072"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">00072</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00073"></a>00073                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00074"></a>00074                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00075"></a>00075     {
-<a name="l00076"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html#a3fe128220ee8ae489e1fdc1ec248c74a">00076</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_row_col_col<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00077"></a>00077     };
-<a name="l00078"></a>00078 
-<a name="l00079"></a>00079     
-<a name="l00080"></a>00080     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00081"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">00081</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00082"></a>00082                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00083"></a>00083                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00084"></a>00084     {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html#a041d7c18583a2b96a0b43bb0c0c185fe">00085</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_col_row_row<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00086"></a>00086     };
-<a name="l00087"></a>00087 
-<a name="l00088"></a>00088     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00089"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">00089</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00090"></a>00090                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00091"></a>00091                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00092"></a>00092     {
-<a name="l00093"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html#a12f59df85ae233bdb473e7826811972c">00093</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_col_row_col<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00094"></a>00094     };
-<a name="l00095"></a>00095     
-<a name="l00096"></a>00096     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00097"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">00097</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00098"></a>00098                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00099"></a>00099                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00100"></a>00100     {
-<a name="l00101"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html#a98c8263eaa3a4bc70fd346d1737f0f71">00101</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_col_col_row<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00102"></a>00102     };
-<a name="l00103"></a>00103 
-<a name="l00104"></a>00104     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00105"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">00105</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00106"></a>00106                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00107"></a>00107                                              viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00108"></a>00108     {
-<a name="l00109"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html#a4a44006b05b679a3af93ea6fa03560b5">00109</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_col_col_col<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00110"></a>00110     };
-<a name="l00111"></a>00111     
-<a name="l00112"></a>00112   }
-<a name="l00113"></a>00113 
-<a name="l00114"></a>00114 }
-<a name="l00115"></a>00115 
-<a name="l00116"></a>00116 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__col__kernels_8h.html b/doc/doxygen/html/matrix__prod__row__col__col__kernels_8h.html
deleted file mode 100644
index f9ff0f4..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__col__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__col__col__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_col_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__row__col__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">matrix_prod_row_col_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">matrix_prod_row_col_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__col__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__row__col__col__kernels_8h_source.html
deleted file mode 100644
index ff3b84a..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__col__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__col__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_COL_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__col__col__source_8h.html">viennacl/linalg/kernels/matrix_prod_row_col_col_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_prod_row_col_col;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_prod_row_col_col<float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_row_col_col_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">matrix_prod_row_col_col_align1_prod_TT</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">matrix_prod_row_col_col_align1_prod_TA</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">matrix_prod_row_col_col_align1_prod_AA</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">matrix_prod_row_col_col_align1_prod_AT</a>);
-<a name="l00040"></a>00040         std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor">        #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051        } <span class="comment">//if</span>
-<a name="l00052"></a>00052      } <span class="comment">//init</span>
-<a name="l00053"></a>00053     }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056 
-<a name="l00058"></a>00058    <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">00059</a>    <span class="keyword">struct </span>matrix_prod_row_col_col<double, 1>
-<a name="l00060"></a>00060    {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062     {
-<a name="l00063"></a>00063       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_row_col_col_1"</span>;
-<a name="l00064"></a>00064     }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066     {
-<a name="l00067"></a>00067       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071       {
-<a name="l00072"></a>00072         std::string source;
-<a name="l00073"></a>00073         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">matrix_prod_row_col_col_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">matrix_prod_row_col_col_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">matrix_prod_row_col_col_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">matrix_prod_row_col_col_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078         std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor">        #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089        } <span class="comment">//if</span>
-<a name="l00090"></a>00090      } <span class="comment">//init</span>
-<a name="l00091"></a>00091     }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094   }  <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095  }  <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 }  <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__col__source_8h.html b/doc/doxygen/html/matrix__prod__row__col__col__source_8h.html
deleted file mode 100644
index 7b44a71..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__col__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__row__col__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">matrix_prod_row_col_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">matrix_prod_row_col_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">matrix_prod_row_col_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">matrix_prod_row_col_col_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__col__source_8h_source.html b/doc/doxygen/html/matrix__prod__row__col__col__source_8h_source.html
deleted file mode 100644
index d0d69cf..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__col__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__col__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_COL_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">matrix_prod_row_col_col_align1_prod_TT</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...col_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">"  int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"  int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"  {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"    else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"    else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"  }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_row_col_col_align1_prod_TT</span>
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">matrix_prod_row_col_col_align1_prod_TA</a> = 
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...col_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"  int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"  {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"    else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"    else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"  }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_row_col_col_align1_prod_TA</span>
-<a name="l00133"></a>00133 
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">matrix_prod_row_col_col_align1_prod_AA</a> = 
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...col_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"    else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"    else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"  }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_row_col_col_align1_prod_AA</span>
-<a name="l00195"></a>00195 
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">matrix_prod_row_col_col_align1_prod_AT</a> = 
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...col_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"  int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"  {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"    else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"    else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"  }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_row_col_col_align1_prod_AT</span>
-<a name="l00257"></a>00257 
-<a name="l00258"></a>00258   }  <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259  }  <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 }  <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__row__kernels_8h.html b/doc/doxygen/html/matrix__prod__row__col__row__kernels_8h.html
deleted file mode 100644
index 324ed35..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__row__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__col__row__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_col_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__row__col__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">matrix_prod_row_col_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">matrix_prod_row_col_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__row__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__row__col__row__kernels_8h_source.html
deleted file mode 100644
index a49647b..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__row__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__col__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_COL_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__col__row__source_8h.html">viennacl/linalg/kernels/matrix_prod_row_col_row_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_prod_row_col_row;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_prod_row_col_row<float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_row_col_row_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">matrix_prod_row_col_row_align1_prod_TT</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">matrix_prod_row_col_row_align1_prod_TA</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">matrix_prod_row_col_row_align1_prod_AA</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">matrix_prod_row_col_row_align1_prod_AT</a>);
-<a name="l00040"></a>00040         std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor">        #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051        } <span class="comment">//if</span>
-<a name="l00052"></a>00052      } <span class="comment">//init</span>
-<a name="l00053"></a>00053     }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056 
-<a name="l00058"></a>00058    <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">00059</a>    <span class="keyword">struct </span>matrix_prod_row_col_row<double, 1>
-<a name="l00060"></a>00060    {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062     {
-<a name="l00063"></a>00063       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_row_col_row_1"</span>;
-<a name="l00064"></a>00064     }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066     {
-<a name="l00067"></a>00067       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071       {
-<a name="l00072"></a>00072         std::string source;
-<a name="l00073"></a>00073         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">matrix_prod_row_col_row_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">matrix_prod_row_col_row_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">matrix_prod_row_col_row_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">matrix_prod_row_col_row_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078         std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor">        #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089        } <span class="comment">//if</span>
-<a name="l00090"></a>00090      } <span class="comment">//init</span>
-<a name="l00091"></a>00091     }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094   }  <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095  }  <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 }  <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__row__source_8h.html b/doc/doxygen/html/matrix__prod__row__col__row__source_8h.html
deleted file mode 100644
index 10a4180..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__row__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__row__col__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">matrix_prod_row_col_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">matrix_prod_row_col_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">matrix_prod_row_col_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">matrix_prod_row_col_row_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__row__source_8h_source.html b/doc/doxygen/html/matrix__prod__row__col__row__source_8h_source.html
deleted file mode 100644
index 2acf058..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__row__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__col__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_COL_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">matrix_prod_row_col_row_align1_prod_TT</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...col_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">"  int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"  int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"  {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"    else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"    else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"  }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_row_col_row_align1_prod_TT</span>
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">matrix_prod_row_col_row_align1_prod_TA</a> = 
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...col_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"  int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"  {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"    else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"    else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"  }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_row_col_row_align1_prod_TA</span>
-<a name="l00133"></a>00133 
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">matrix_prod_row_col_row_align1_prod_AA</a> = 
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...col_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"    else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"    else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"  }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_row_col_row_align1_prod_AA</span>
-<a name="l00195"></a>00195 
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">matrix_prod_row_col_row_align1_prod_AT</a> = 
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...col_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"  int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"  {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"    else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"    else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"  }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_row_col_row_align1_prod_AT</span>
-<a name="l00257"></a>00257 
-<a name="l00258"></a>00258   }  <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259  }  <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 }  <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__col__kernels_8h.html b/doc/doxygen/html/matrix__prod__row__row__col__kernels_8h.html
deleted file mode 100644
index 6499422..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__col__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__row__col__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_row_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__row__row__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">matrix_prod_row_row_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">matrix_prod_row_row_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__col__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__row__row__col__kernels_8h_source.html
deleted file mode 100644
index 5000916..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__col__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__row__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_ROW_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__row__col__source_8h.html">viennacl/linalg/kernels/matrix_prod_row_row_col_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_prod_row_row_col;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_prod_row_row_col<float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_row_row_col_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">matrix_prod_row_row_col_align1_prod_TT</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">matrix_prod_row_row_col_align1_prod_TA</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">matrix_prod_row_row_col_align1_prod_AA</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">matrix_prod_row_row_col_align1_prod_AT</a>);
-<a name="l00040"></a>00040         std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor">        #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051        } <span class="comment">//if</span>
-<a name="l00052"></a>00052      } <span class="comment">//init</span>
-<a name="l00053"></a>00053     }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056 
-<a name="l00058"></a>00058    <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">00059</a>    <span class="keyword">struct </span>matrix_prod_row_row_col<double, 1>
-<a name="l00060"></a>00060    {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062     {
-<a name="l00063"></a>00063       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_row_row_col_1"</span>;
-<a name="l00064"></a>00064     }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066     {
-<a name="l00067"></a>00067       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071       {
-<a name="l00072"></a>00072         std::string source;
-<a name="l00073"></a>00073         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">matrix_prod_row_row_col_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">matrix_prod_row_row_col_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">matrix_prod_row_row_col_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">matrix_prod_row_row_col_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078         std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor">        #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089        } <span class="comment">//if</span>
-<a name="l00090"></a>00090      } <span class="comment">//init</span>
-<a name="l00091"></a>00091     }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094   }  <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095  }  <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 }  <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__col__source_8h.html b/doc/doxygen/html/matrix__prod__row__row__col__source_8h.html
deleted file mode 100644
index e56af0a..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__col__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__row__row__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">matrix_prod_row_row_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">matrix_prod_row_row_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">matrix_prod_row_row_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">matrix_prod_row_row_col_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__col__source_8h_source.html b/doc/doxygen/html/matrix__prod__row__row__col__source_8h_source.html
deleted file mode 100644
index 615d1bc..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__col__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__row__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_ROW_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">matrix_prod_row_row_col_align1_prod_TT</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...row_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">"  int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"  {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"    else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"    else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"  }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_row_row_col_align1_prod_TT</span>
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">matrix_prod_row_row_col_align1_prod_TA</a> = 
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...row_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"  int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"  int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"  {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"    else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"    else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"  }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_row_row_col_align1_prod_TA</span>
-<a name="l00133"></a>00133 
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">matrix_prod_row_row_col_align1_prod_AA</a> = 
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...row_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"  int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"    else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"    else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"  }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_row_row_col_align1_prod_AA</span>
-<a name="l00195"></a>00195 
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">matrix_prod_row_row_col_align1_prod_AT</a> = 
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...row_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"  {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"    else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"    else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"  }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_row_row_col_align1_prod_AT</span>
-<a name="l00257"></a>00257 
-<a name="l00258"></a>00258   }  <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259  }  <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 }  <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__row__kernels_8h.html b/doc/doxygen/html/matrix__prod__row__row__row__kernels_8h.html
deleted file mode 100644
index 0f7553d..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__row__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__row__row__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_row_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__row__row__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">matrix_prod_row_row_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">matrix_prod_row_row_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__row__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__row__row__row__kernels_8h_source.html
deleted file mode 100644
index e2dcad1..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__row__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__row__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__row__row__source_8h.html">viennacl/linalg/kernels/matrix_prod_row_row_row_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_prod_row_row_row;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_prod_row_row_row<float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_row_row_row_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">matrix_prod_row_row_row_align1_prod_TT</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">matrix_prod_row_row_row_align1_prod_TA</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">matrix_prod_row_row_row_align1_prod_AA</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">matrix_prod_row_row_row_align1_prod_AT</a>);
-<a name="l00040"></a>00040         std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor">        #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051        } <span class="comment">//if</span>
-<a name="l00052"></a>00052      } <span class="comment">//init</span>
-<a name="l00053"></a>00053     }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056 
-<a name="l00058"></a>00058    <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">00059</a>    <span class="keyword">struct </span>matrix_prod_row_row_row<double, 1>
-<a name="l00060"></a>00060    {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062     {
-<a name="l00063"></a>00063       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_row_row_row_1"</span>;
-<a name="l00064"></a>00064     }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066     {
-<a name="l00067"></a>00067       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071       {
-<a name="l00072"></a>00072         std::string source;
-<a name="l00073"></a>00073         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">matrix_prod_row_row_row_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">matrix_prod_row_row_row_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">matrix_prod_row_row_row_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">matrix_prod_row_row_row_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078         std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor">        #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089        } <span class="comment">//if</span>
-<a name="l00090"></a>00090      } <span class="comment">//init</span>
-<a name="l00091"></a>00091     }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094   }  <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095  }  <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 }  <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__row__source_8h.html b/doc/doxygen/html/matrix__prod__row__row__row__source_8h.html
deleted file mode 100644
index 034e4cf..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__row__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__row__row__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">matrix_prod_row_row_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">matrix_prod_row_row_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">matrix_prod_row_row_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">matrix_prod_row_row_row_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__row__source_8h_source.html b/doc/doxygen/html/matrix__prod__row__row__row__source_8h_source.html
deleted file mode 100644
index 8040e2f..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__row__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__row__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">matrix_prod_row_row_row_align1_prod_TT</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...row_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">"  int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"  {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"    else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"    else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"  }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_row_row_row_align1_prod_TT</span>
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">matrix_prod_row_row_row_align1_prod_TA</a> = 
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...row_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"  int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"  int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"  int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"  int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"  if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"  {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"    else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"    else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"  }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_row_row_row_align1_prod_TA</span>
-<a name="l00133"></a>00133 
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">matrix_prod_row_row_row_align1_prod_AA</a> = 
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...row_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"  int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"  int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"    else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"    else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"  }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_row_row_row_align1_prod_AA</span>
-<a name="l00195"></a>00195 
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">matrix_prod_row_row_row_align1_prod_AT</a> = 
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...row_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"          __global const float * B,  \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"          unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"          __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"          unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">"          unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"          unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">"          unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">"          __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"          __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"  int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"  int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"  int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"  int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"  int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"  int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"  int aStep = block_size;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"  int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"  int bStep = block_size;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"  int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"  if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"    ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"  float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"  for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"           block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"           ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"  {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"    else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"    else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"    for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"    aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"    bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"  }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_row_row_row_align1_prod_AT</span>
-<a name="l00257"></a>00257 
-<a name="l00258"></a>00258   }  <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259  }  <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 }  <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__row__kernels_8h.html b/doc/doxygen/html/matrix__row__kernels_8h.html
deleted file mode 100644
index 8e3d48e..0000000
--- a/doc/doxygen/html/matrix__row__kernels_8h.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__row__source_8h_source.html">viennacl/linalg/kernels/matrix_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">matrix_row< float, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">matrix_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">matrix_row< double, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">matrix_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__row__kernels_8h_source.html b/doc/doxygen/html/matrix__row__kernels_8h_source.html
deleted file mode 100644
index 84f9893..0000000
--- a/doc/doxygen/html/matrix__row__kernels_8h_source.html
+++ /dev/null
@@ -1,337 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__row__source_8h.html">viennacl/linalg/kernels/matrix_row_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_row;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_row<float, 16>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_row_16"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a>);
-<a name="l00040"></a>00040         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a>);
-<a name="l00041"></a>00041         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a>);
-<a name="l00042"></a>00042         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00043"></a>00043         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a>);
-<a name="l00044"></a>00044         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a>);
-<a name="l00045"></a>00045         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a>);
-<a name="l00046"></a>00046         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a>);
-<a name="l00047"></a>00047         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a>);
-<a name="l00048"></a>00048         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a>);
-<a name="l00049"></a>00049         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00050"></a>00050         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a>);
-<a name="l00051"></a>00051         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00052"></a>00052         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a>);
-<a name="l00053"></a>00053         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a>);
-<a name="l00054"></a>00054         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a>);
-<a name="l00055"></a>00055         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a>);
-<a name="l00056"></a>00056         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a>);
-<a name="l00057"></a>00057         std::string prog_name = program_name();
-<a name="l00058"></a>00058 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00060"></a>00060 <span class="preprocessor">        #endif</span>
-<a name="l00061"></a>00061 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00062"></a>00062         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00063"></a>00063         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00064"></a>00064         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00065"></a>00065         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00066"></a>00066         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00067"></a>00067         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00068"></a>00068         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00069"></a>00069         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00070"></a>00070         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00071"></a>00071         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00072"></a>00072         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00073"></a>00073         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00074"></a>00074         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00075"></a>00075         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00076"></a>00076         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00077"></a>00077         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00078"></a>00078         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00079"></a>00079         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00080"></a>00080         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00081"></a>00081         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00082"></a>00082         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00083"></a>00083         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00084"></a>00084         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00085"></a>00085        } <span class="comment">//if</span>
-<a name="l00086"></a>00086      } <span class="comment">//init</span>
-<a name="l00087"></a>00087     }; <span class="comment">// struct</span>
-<a name="l00088"></a>00088 
-<a name="l00089"></a>00089    <span class="keyword">template</span> <>
-<a name="l00090"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">00090</a>    <span class="keyword">struct </span>matrix_row<float, 1>
-<a name="l00091"></a>00091    {
-<a name="l00092"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00092</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00093"></a>00093     {
-<a name="l00094"></a>00094       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_row_1"</span>;
-<a name="l00095"></a>00095     }
-<a name="l00096"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00096</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00097"></a>00097     {
-<a name="l00098"></a>00098       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00099"></a>00099       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00100"></a>00100       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00101"></a>00101       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00102"></a>00102       {
-<a name="l00103"></a>00103         std::string source;
-<a name="l00104"></a>00104         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00105"></a>00105         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a>);
-<a name="l00106"></a>00106         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a>);
-<a name="l00107"></a>00107         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a>);
-<a name="l00108"></a>00108         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a>);
-<a name="l00109"></a>00109         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a>);
-<a name="l00110"></a>00110         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00111"></a>00111         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a>);
-<a name="l00112"></a>00112         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a>);
-<a name="l00113"></a>00113         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a>);
-<a name="l00114"></a>00114         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a>);
-<a name="l00115"></a>00115         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a>);
-<a name="l00116"></a>00116         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a>);
-<a name="l00117"></a>00117         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00118"></a>00118         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a>);
-<a name="l00119"></a>00119         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00120"></a>00120         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a>);
-<a name="l00121"></a>00121         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a>);
-<a name="l00122"></a>00122         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a>);
-<a name="l00123"></a>00123         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a>);
-<a name="l00124"></a>00124         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a>);
-<a name="l00125"></a>00125         std::string prog_name = program_name();
-<a name="l00126"></a>00126 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00127"></a>00127 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00128"></a>00128 <span class="preprocessor">        #endif</span>
-<a name="l00129"></a>00129 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00130"></a>00130         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00131"></a>00131         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00132"></a>00132         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00133"></a>00133         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00134"></a>00134         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00135"></a>00135         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00136"></a>00136         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00137"></a>00137         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00138"></a>00138         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00139"></a>00139         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00140"></a>00140         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00141"></a>00141         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00142"></a>00142         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00143"></a>00143         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00144"></a>00144         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00145"></a>00145         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00146"></a>00146         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00147"></a>00147         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00148"></a>00148         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00149"></a>00149         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00150"></a>00150         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00151"></a>00151         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00152"></a>00152         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00153"></a>00153        } <span class="comment">//if</span>
-<a name="l00154"></a>00154      } <span class="comment">//init</span>
-<a name="l00155"></a>00155     }; <span class="comment">// struct</span>
-<a name="l00156"></a>00156 
-<a name="l00157"></a>00157 
-<a name="l00158"></a>00158 
-<a name="l00160"></a>00160    <span class="keyword">template</span> <>
-<a name="l00161"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">00161</a>    <span class="keyword">struct </span>matrix_row<double, 16>
-<a name="l00162"></a>00162    {
-<a name="l00163"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">00163</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00164"></a>00164     {
-<a name="l00165"></a>00165       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_row_16"</span>;
-<a name="l00166"></a>00166     }
-<a name="l00167"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">00167</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00168"></a>00168     {
-<a name="l00169"></a>00169       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00170"></a>00170       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00171"></a>00171       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00172"></a>00172       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00173"></a>00173       {
-<a name="l00174"></a>00174         std::string source;
-<a name="l00175"></a>00175         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00176"></a>00176         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00177"></a>00177         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a>, fp64_ext));
-<a name="l00178"></a>00178         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00179"></a>00179         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a>, fp64_ext));
-<a name="l00180"></a>00180         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a>, fp64_ext));
-<a name="l00181"></a>00181         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a>, fp64_ext));
-<a name="l00182"></a>00182         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00183"></a>00183         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a>, fp64_ext));
-<a name="l00184"></a>00184         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a>, fp64_ext));
-<a name="l00185"></a>00185         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a>, fp64_ext));
-<a name="l00186"></a>00186         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00187"></a>00187         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a>, fp64_ext));
-<a name="l00188"></a>00188         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00189"></a>00189         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00190"></a>00190         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a>, fp64_ext));
-<a name="l00191"></a>00191         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00192"></a>00192         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a>, fp64_ext));
-<a name="l00193"></a>00193         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a>, fp64_ext));
-<a name="l00194"></a>00194         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00195"></a>00195         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a>, fp64_ext));
-<a name="l00196"></a>00196         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00197"></a>00197         std::string prog_name = program_name();
-<a name="l00198"></a>00198 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00199"></a>00199 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00200"></a>00200 <span class="preprocessor">        #endif</span>
-<a name="l00201"></a>00201 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00202"></a>00202         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00203"></a>00203         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00204"></a>00204         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00205"></a>00205         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00206"></a>00206         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00207"></a>00207         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00208"></a>00208         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00209"></a>00209         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00210"></a>00210         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00211"></a>00211         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00212"></a>00212         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00213"></a>00213         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00214"></a>00214         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00215"></a>00215         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00216"></a>00216         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00217"></a>00217         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00218"></a>00218         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00219"></a>00219         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00220"></a>00220         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00221"></a>00221         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00222"></a>00222         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00223"></a>00223         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00224"></a>00224         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00225"></a>00225        } <span class="comment">//if</span>
-<a name="l00226"></a>00226      } <span class="comment">//init</span>
-<a name="l00227"></a>00227     }; <span class="comment">// struct</span>
-<a name="l00228"></a>00228 
-<a name="l00229"></a>00229    <span class="keyword">template</span> <>
-<a name="l00230"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">00230</a>    <span class="keyword">struct </span>matrix_row<double, 1>
-<a name="l00231"></a>00231    {
-<a name="l00232"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00232</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00233"></a>00233     {
-<a name="l00234"></a>00234       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_row_1"</span>;
-<a name="l00235"></a>00235     }
-<a name="l00236"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00236</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00237"></a>00237     {
-<a name="l00238"></a>00238       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00239"></a>00239       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00240"></a>00240       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00241"></a>00241       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00242"></a>00242       {
-<a name="l00243"></a>00243         std::string source;
-<a name="l00244"></a>00244         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00245"></a>00245         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00246"></a>00246         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a>, fp64_ext));
-<a name="l00247"></a>00247         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00248"></a>00248         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a>, fp64_ext));
-<a name="l00249"></a>00249         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a>, fp64_ext));
-<a name="l00250"></a>00250         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a>, fp64_ext));
-<a name="l00251"></a>00251         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00252"></a>00252         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a>, fp64_ext));
-<a name="l00253"></a>00253         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a>, fp64_ext));
-<a name="l00254"></a>00254         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a>, fp64_ext));
-<a name="l00255"></a>00255         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00256"></a>00256         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a>, fp64_ext));
-<a name="l00257"></a>00257         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00258"></a>00258         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00259"></a>00259         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a>, fp64_ext));
-<a name="l00260"></a>00260         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00261"></a>00261         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a>, fp64_ext));
-<a name="l00262"></a>00262         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a>, fp64_ext));
-<a name="l00263"></a>00263         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00264"></a>00264         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a>, fp64_ext));
-<a name="l00265"></a>00265         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00266"></a>00266         std::string prog_name = program_name();
-<a name="l00267"></a>00267 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00268"></a>00268 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00269"></a>00269 <span class="preprocessor">        #endif</span>
-<a name="l00270"></a>00270 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00271"></a>00271         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00272"></a>00272         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00273"></a>00273         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00274"></a>00274         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00275"></a>00275         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00276"></a>00276         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00277"></a>00277         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00278"></a>00278         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00279"></a>00279         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00280"></a>00280         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00281"></a>00281         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00282"></a>00282         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00283"></a>00283         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00284"></a>00284         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00285"></a>00285         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00286"></a>00286         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00287"></a>00287         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00288"></a>00288         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00289"></a>00289         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00290"></a>00290         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00291"></a>00291         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00292"></a>00292         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00293"></a>00293         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00294"></a>00294        } <span class="comment">//if</span>
-<a name="l00295"></a>00295      } <span class="comment">//init</span>
-<a name="l00296"></a>00296     }; <span class="comment">// struct</span>
-<a name="l00297"></a>00297 
-<a name="l00298"></a>00298 
-<a name="l00299"></a>00299   }  <span class="comment">//namespace kernels</span>
-<a name="l00300"></a>00300  }  <span class="comment">//namespace linalg</span>
-<a name="l00301"></a>00301 }  <span class="comment">//namespace viennacl</span>
-<a name="l00302"></a>00302 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__row__source_8h.html b/doc/doxygen/html/matrix__row__source_8h.html
deleted file mode 100644
index d22511d..0000000
--- a/doc/doxygen/html/matrix__row__source_8h.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a> = "} \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__row__source_8h_source.html b/doc/doxygen/html/matrix__row__source_8h_source.html
deleted file mode 100644
index a482297..0000000
--- a/doc/doxygen/html/matrix__row__source_8h_source.html
+++ /dev/null
@@ -1,452 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"__kernel void unit_lower_triangular_substitute_inplace(\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"          __global const float * matrix,\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          __global float * vector)\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"{\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"  float temp;\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"  for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"  {\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"    temp = vector[row];\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"      vector[elim] -= temp * matrix[elim * matrix_internal_cols + row];\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"  }\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"}\n"</span>
-<a name="l00028"></a>00028 ; <span class="comment">//matrix_row_align1_unit_lower_triangular_substitute_inplace</span>
-<a name="l00029"></a>00029 
-<a name="l00030"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">00030</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a> = 
-<a name="l00031"></a>00031 <span class="stringliteral">"__kernel void inplace_sub(\n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"{ \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"    vec1[i] -= vec2[i];\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"}\n"</span>
-<a name="l00039"></a>00039 ; <span class="comment">//matrix_row_align1_inplace_sub</span>
-<a name="l00040"></a>00040 
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">00041</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a> = 
-<a name="l00042"></a>00042 <span class="stringliteral">"__kernel void lower_triangular_substitute_inplace(\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"          __global const float * matrix,\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"          __global float * vector)\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"{\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"  float temp;\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"  for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"  {\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"    if (get_global_id(0) == 0)\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"      vector[row] /= matrix[row+row*matrix_internal_cols];\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"    temp = vector[row];\n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"      vector[elim] -= temp * matrix[elim * matrix_internal_cols + row];\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"  }\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"}\n"</span>
-<a name="l00062"></a>00062 ; <span class="comment">//matrix_row_align1_lower_triangular_substitute_inplace</span>
-<a name="l00063"></a>00063 
-<a name="l00064"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">00064</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a> = 
-<a name="l00065"></a>00065 <span class="stringliteral">"__kernel void trans_vec_mul(\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"          __global const float * matrix,\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00070"></a>00070 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00071"></a>00071 <span class="stringliteral">"          __global const float * vector,  \n"</span>
-<a name="l00072"></a>00072 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00073"></a>00073 <span class="stringliteral">"{ \n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"  //row and col indicate indices within transposed matrix\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < matrix_cols; row += get_global_size(0))\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"  {\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"    float dot_prod2 = 0.0f;\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"    for (unsigned int col = 0; col < matrix_rows; ++col)\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"      dot_prod2 += matrix[row + col*matrix_internal_cols] * vector[col];\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"    result[row] = dot_prod2;\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"  }\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"}\n"</span>
-<a name="l00083"></a>00083 ; <span class="comment">//matrix_row_align1_trans_vec_mul</span>
-<a name="l00084"></a>00084 
-<a name="l00085"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">00085</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a> = 
-<a name="l00086"></a>00086 <span class="stringliteral">"//perform a rank-1 update of the matrix, i.e. A += x * x^T\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"__kernel void rank1_update(\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"          __global float * matrix,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"          __global const float * vector1,  \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"          __global const float * vector2) \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"{ \n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"  float tmp;\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"  unsigned int offset;\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"  {\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"    tmp = vector1[row];\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"    offset = row*matrix_internal_cols;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"    for (unsigned int col = 0; col < matrix_cols; ++col)\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"      matrix[offset+col] += tmp * vector2[col];\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"  }\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"}\n"</span>
-<a name="l00106"></a>00106 ; <span class="comment">//matrix_row_align1_rank1_update</span>
-<a name="l00107"></a>00107 
-<a name="l00108"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">00108</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a> = 
-<a name="l00109"></a>00109 <span class="stringliteral">"__kernel void sub(\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"          __global const float * vec2, \n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"          unsigned int size)\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"{ \n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"    result[i] = vec1[i] - vec2[i];\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"}\n"</span>
-<a name="l00118"></a>00118 ; <span class="comment">//matrix_row_align1_sub</span>
-<a name="l00119"></a>00119 
-<a name="l00120"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">00120</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a> = 
-<a name="l00121"></a>00121 <span class="stringliteral">"//transposed lower triangular matrix\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"__kernel void trans_unit_upper_triangular_substitute_inplace(\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"          __global const float * matrix, \n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"          __global float * vector) \n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"{ \n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"  for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">"  { \n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">"    temp = vector[row]; \n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">"    //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"      vector[elim] -= temp * matrix[row * matrix_internal_cols + elim]; \n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"  } \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"   \n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"}\n"</span>
-<a name="l00141"></a>00141 ; <span class="comment">//matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</span>
-<a name="l00142"></a>00142 
-<a name="l00143"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">00143</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a> = 
-<a name="l00144"></a>00144 <span class="stringliteral">"__kernel void lu_factorize(\n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"          __global float * matrix,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"          unsigned int matrix_internal_cols) \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"{ \n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"  float temp;\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"  unsigned rowi;\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"  unsigned rowk;\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"  for (unsigned int i=1; i<matrix_rows; ++i)\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"  {\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"    rowi = i * matrix_internal_cols;\n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"    for (unsigned int k=0; k<i; ++k)\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">"    {\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">"      rowk = k * matrix_internal_cols;\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">"      if (get_global_id(0) == 0)\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"        matrix[rowi + k] /= matrix[rowk + k];\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"      barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"      temp = matrix[rowi + k];\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"      \n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"      //parallel subtraction:\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"      for (unsigned int j=k+1 + get_global_id(0); j<matrix_rows; j += get_global_size(0))\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"        matrix[rowi + j] -= temp * matrix[rowk + j];\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"    }\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"  }\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"} \n"</span>
-<a name="l00171"></a>00171 ; <span class="comment">//matrix_row_align1_lu_factorize</span>
-<a name="l00172"></a>00172 
-<a name="l00173"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">00173</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a> = 
-<a name="l00174"></a>00174 <span class="stringliteral">"__kernel void add(\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"          __global const float * vec2, \n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"{ \n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"    result[i] = vec1[i] + vec2[i];\n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"}\n"</span>
-<a name="l00183"></a>00183 ; <span class="comment">//matrix_row_align1_add</span>
-<a name="l00184"></a>00184 
-<a name="l00185"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">00185</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a> = 
-<a name="l00186"></a>00186 <span class="stringliteral">"\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"__kernel void vec_mul(\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"          __global const float * matrix,\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">"          __global const float * vector,  \n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"{ \n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"  {\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"    float dot_prod = 0.0f;\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"    for (unsigned int col = 0; col < matrix_cols; ++col)\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"      dot_prod += matrix[row*matrix_internal_cols + col] * vector[col];\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"    result[row] = dot_prod;\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"  }\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"}\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"\n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"\n"</span>
-<a name="l00208"></a>00208 ; <span class="comment">//matrix_row_align1_vec_mul</span>
-<a name="l00209"></a>00209 
-<a name="l00210"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">00210</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a> = 
-<a name="l00211"></a>00211 <span class="stringliteral">"__kernel void trans_lower_triangular_substitute_inplace(\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"          __global const float * matrix,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"          __global float * vector)\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"  float temp;\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"  for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"  {\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"    if (get_global_id(0) == 0)\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"      vector[row] /= matrix[row+row*matrix_internal_cols];\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"    temp = vector[row];\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"      vector[elim] -= temp * matrix[row * matrix_internal_cols + elim];\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"  }\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"}\n"</span>
-<a name="l00231"></a>00231 ; <span class="comment">//matrix_row_align1_trans_lower_triangular_substitute_inplace</span>
-<a name="l00232"></a>00232 
-<a name="l00233"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">00233</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a> = 
-<a name="l00234"></a>00234 <span class="stringliteral">"__kernel void inplace_divide(\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"          __global const float * fac,  //note: CPU variant is mapped to prod_scalar\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"{ \n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"    vec[i] /= factor;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">"}\n"</span>
-<a name="l00243"></a>00243 ; <span class="comment">//matrix_row_align1_inplace_divide</span>
-<a name="l00244"></a>00244 
-<a name="l00245"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">00245</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a> = 
-<a name="l00246"></a>00246 <span class="stringliteral">"//transposed lower triangular matrix\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"__kernel void trans_upper_triangular_substitute_inplace(\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"          __global const float * matrix, \n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"          __global float * vector) \n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"{ \n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">"  for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">"  { \n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">"    if (get_global_id(0) == 0) \n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">"      vector[row] /= matrix[row*matrix_internal_cols + row]; \n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">" \n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">"    temp = vector[row]; \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">"    //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">"      vector[elim] -= temp * matrix[row * matrix_internal_cols + elim]; \n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">"  } \n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">"   \n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">"}\n"</span>
-<a name="l00270"></a>00270 ; <span class="comment">//matrix_row_align1_trans_upper_triangular_substitute_inplace</span>
-<a name="l00271"></a>00271 
-<a name="l00272"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">00272</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a> = 
-<a name="l00273"></a>00273 <span class="stringliteral">"__kernel void unit_upper_triangular_substitute_inplace( \n"</span>
-<a name="l00274"></a>00274 <span class="stringliteral">"          __global const float * matrix, \n"</span>
-<a name="l00275"></a>00275 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">"          __global float * vector) \n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">"{ \n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">"  for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00283"></a>00283 <span class="stringliteral">"  { \n"</span>
-<a name="l00284"></a>00284 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">"    temp = vector[row]; \n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">"    //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">"      vector[elim] -= temp * matrix[elim * matrix_internal_cols + row]; \n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">"  } \n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">"   \n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">"}\n"</span>
-<a name="l00292"></a>00292 ; <span class="comment">//matrix_row_align1_unit_upper_triangular_substitute_inplace</span>
-<a name="l00293"></a>00293 
-<a name="l00294"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">00294</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a> = 
-<a name="l00295"></a>00295 <span class="stringliteral">"__kernel void inplace_add(\n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">"{ \n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">"    vec1[i] += vec2[i];\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">"}\n"</span>
-<a name="l00303"></a>00303 ; <span class="comment">//matrix_row_align1_inplace_add</span>
-<a name="l00304"></a>00304 
-<a name="l00305"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">00305</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a> = 
-<a name="l00306"></a>00306 <span class="stringliteral">"\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"__kernel void trans_unit_lower_triangular_substitute_inplace(\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">"          __global const float * matrix,\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">"          __global float * vector)\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">"{\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">"  float temp;\n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">"  for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">"  {\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">"\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">"    temp = vector[row];\n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">"\n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">"      vector[elim] -= temp * matrix[row * matrix_internal_cols + elim];\n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">"  }\n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">"}\n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">"\n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">"\n"</span>
-<a name="l00328"></a>00328 ; <span class="comment">//matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</span>
-<a name="l00329"></a>00329 
-<a name="l00330"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">00330</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a> = 
-<a name="l00331"></a>00331 <span class="stringliteral">"__kernel void scaled_rank1_update(\n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">"          __global float * matrix,\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00334"></a>00334 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00335"></a>00335 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00336"></a>00336 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00337"></a>00337 <span class="stringliteral">"          float val,\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">"          __global const float * vector1,  \n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">"          __global const float * vector2) \n"</span>
-<a name="l00340"></a>00340 <span class="stringliteral">"{ \n"</span>
-<a name="l00341"></a>00341 <span class="stringliteral">"  float tmp;\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">"  unsigned int offset;\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">"  for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">"  {\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">"    tmp = val * vector1[row];\n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">"    offset = row * matrix_internal_cols;\n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">"    for (unsigned int col = 0; col < matrix_cols; ++col)\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">"      matrix[offset+col] += tmp * vector2[col];\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">"  }\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">"}\n"</span>
-<a name="l00351"></a>00351 ; <span class="comment">//matrix_row_align1_scaled_rank1_update</span>
-<a name="l00352"></a>00352 
-<a name="l00353"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">00353</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a> = 
-<a name="l00354"></a>00354 <span class="stringliteral">"__kernel void clear(\n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">"{ \n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">"    vec[i] = 0;\n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">"}\n"</span>
-<a name="l00361"></a>00361 ; <span class="comment">//matrix_row_align1_clear</span>
-<a name="l00362"></a>00362 
-<a name="l00363"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">00363</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a> = 
-<a name="l00364"></a>00364 <span class="stringliteral">"__kernel void cpu_inplace_mult(\n"</span>
-<a name="l00365"></a>00365 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00366"></a>00366 <span class="stringliteral">"          float factor, \n"</span>
-<a name="l00367"></a>00367 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00368"></a>00368 <span class="stringliteral">"{ \n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">"    vec[i] *= factor;\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">"}\n"</span>
-<a name="l00372"></a>00372 ; <span class="comment">//matrix_row_align1_cpu_inplace_mult</span>
-<a name="l00373"></a>00373 
-<a name="l00374"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">00374</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a> = 
-<a name="l00375"></a>00375 <span class="stringliteral">"__kernel void inplace_mult(\n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">"          __global const float * fac, \n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">"{ \n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">"    vec[i] *= factor;\n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">"}\n"</span>
-<a name="l00384"></a>00384 ; <span class="comment">//matrix_row_align1_inplace_mult</span>
-<a name="l00385"></a>00385 
-<a name="l00386"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">00386</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a> = 
-<a name="l00387"></a>00387 <span class="stringliteral">"__kernel void upper_triangular_substitute_inplace( \n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">"          __global const float * matrix, \n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">"          unsigned int matrix_rows,\n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">"          unsigned int matrix_cols,\n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">"          unsigned int matrix_internal_rows,\n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">"          unsigned int matrix_internal_cols,\n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">"          __global float * vector) \n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">"{ \n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00396"></a>00396 <span class="stringliteral">"  for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00397"></a>00397 <span class="stringliteral">"  { \n"</span>
-<a name="l00398"></a>00398 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00399"></a>00399 <span class="stringliteral">"    if (get_global_id(0) == 0) \n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">"      vector[row] /= matrix[row*matrix_internal_cols + row]; \n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">" \n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">"    temp = vector[row]; \n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">"    //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">"      vector[elim] -= temp * matrix[elim * matrix_internal_cols + row]; \n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">"  } \n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">"   \n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">"}\n"</span>
-<a name="l00410"></a>00410 ; <span class="comment">//matrix_row_align1_upper_triangular_substitute_inplace</span>
-<a name="l00411"></a>00411 
-<a name="l00412"></a>00412   }  <span class="comment">//namespace kernels</span>
-<a name="l00413"></a>00413  }  <span class="comment">//namespace linalg</span>
-<a name="l00414"></a>00414 }  <span class="comment">//namespace viennacl</span>
-<a name="l00415"></a>00415 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__size__deducer_8hpp.html b/doc/doxygen/html/matrix__size__deducer_8hpp.html
deleted file mode 100644
index e93c62e..0000000
--- a/doc/doxygen/html/matrix__size__deducer_8hpp.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_size_deducer.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_size_deducer.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Helper implementations that deduce the dimensions of the supplied matrix-valued expressions.  
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="adapter_8hpp_source.html">viennacl/tools/adapter.hpp</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="matrix__size__deducer_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands.  <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Helper implementations that deduce the dimensions of the supplied matrix-valued expressions. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__size__deducer_8hpp_source.html b/doc/doxygen/html/matrix__size__deducer_8hpp_source.html
deleted file mode 100644
index 702df1f..0000000
--- a/doc/doxygen/html/matrix__size__deducer_8hpp_source.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_size_deducer.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_size_deducer.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__size__deducer_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <fstream></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sstream></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="adapter_8hpp.html" title="Adapter classes for sparse matrices made of the STL type std::vector&lt;std::map&lt;unsigned int...">viennacl/tools/adapter.hpp</a>"</span>
-<a name="l00027"></a>00027 
-<a name="l00028"></a>00028 <span class="preprocessor">#include <vector></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <map></span>
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033   <span class="keyword">namespace </span>tools
-<a name="l00034"></a>00034   {
-<a name="l00035"></a>00035 
-<a name="l00042"></a>00042     <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00043"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">00043</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">MATRIX_SIZE_DEDUCER</a>
-<a name="l00044"></a>00044     {
-<a name="l00045"></a>00045       <span class="comment">//Standard case: size1 from lhs, size2 from rhs (fits most cases)</span>
-<a name="l00046"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">00046</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">size1</a>(LHS & lhs, RHS & rhs) { <span class="keywordflow">return</span> lhs.size1(); }
-<a name="l00047"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">00047</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">size2</a>(LHS & lhs, RHS & rhs) { <span class="keywordflow">return</span> rhs.size2(); }
-<a name="l00048"></a>00048     };
-<a name="l00049"></a>00049     
-<a name="l00050"></a>00050     <span class="comment">//special case: outer vector product:</span>
-<a name="l00051"></a>00051     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00052"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">00052</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">MATRIX_SIZE_DEDUCER</a><viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A1>,
-<a name="l00053"></a>00053                                viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A2>,
-<a name="l00054"></a>00054                                viennacl::op_prod>
-<a name="l00055"></a>00055     {
-<a name="l00056"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a09398ed02392ac3d11157533353a8f31">00056</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">size1</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A1></a> & lhs,
-<a name="l00057"></a>00057                           <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A2></a> & rhs) { <span class="keywordflow">return</span> lhs.size1(); }
-<a name="l00058"></a>00058 
-<a name="l00059"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a65cfc5b2cfed688bed410fe6f983586d">00059</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">size2</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A1></a> & lhs,
-<a name="l00060"></a>00060                           <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A2></a> & rhs) { <span class="keywordflow">return</span> rhs.size2(); }
-<a name="l00061"></a>00061     };
-<a name="l00062"></a>00062 
-<a name="l00063"></a>00063     <span class="comment">//special case: transposed matrix-Something product: Return the number of rows of the matrix</span>
-<a name="l00064"></a>00064     <span class="comment">/*template <typename MatrixType, typename ScalarType, unsigned int A></span>
-<a name="l00065"></a>00065 <span class="comment">    struct MATRIX_SIZE_DEDUCER<MatrixType, const viennacl::vector<ScalarType, A>, viennacl::op_prod></span>
-<a name="l00066"></a>00066 <span class="comment">    {</span>
-<a name="l00067"></a>00067 <span class="comment">      static unsigned int size(MatrixType & lhs, const viennacl::vector<ScalarType, A> & rhs) { return lhs.size1(); }</span>
-<a name="l00068"></a>00068 <span class="comment">    };*/</span>
-<a name="l00069"></a>00069 
-<a name="l00070"></a>00070     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> F1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00071"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">00071</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">MATRIX_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a><const viennacl::matrix<ScalarType, F1, A1>,
-<a name="l00072"></a>00072                                                                  const viennacl::matrix<ScalarType, F1, A1>, op_trans>,
-<a name="l00073"></a>00073                                const viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><ScalarType, F2, A2>,
-<a name="l00074"></a>00074                                viennacl::op_prod>
-<a name="l00075"></a>00075     {
-<a name="l00076"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a618c0d75593fe1fe328adc6eb422bc93">00076</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">size1</a>(<a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F1, A1></a>,
-<a name="l00077"></a>00077                                                       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F1, A1></a>,
-<a name="l00078"></a>00078                                                       op_trans> <span class="keyword">const</span> & lhs,
-<a name="l00079"></a>00079                           <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F2, A2></a> <span class="keyword">const</span> & rhs) { <span class="keywordflow">return</span> lhs.lhs().size2(); }
-<a name="l00080"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a8c9fa937480c316bd57a1c3254d00292">00080</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">size2</a>(<a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F1, A1></a>,
-<a name="l00081"></a>00081                                                       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F1, A1></a>,
-<a name="l00082"></a>00082                                                       op_trans> <span class="keyword">const</span> & lhs,
-<a name="l00083"></a>00083                           <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F2, A2></a> <span class="keyword">const</span> & rhs) { <span class="keywordflow">return</span> rhs.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(); }
-<a name="l00084"></a>00084     };
-<a name="l00085"></a>00085     
-<a name="l00086"></a>00086     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> F1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00087"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">00087</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">MATRIX_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><ScalarType, F1, A1>,
-<a name="l00088"></a>00088                                const viennacl::<a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a><const viennacl::matrix<ScalarType, F2, A2>,
-<a name="l00089"></a>00089                                                                  const viennacl::matrix<ScalarType, F2, A2>, op_trans>,
-<a name="l00090"></a>00090                                viennacl::op_prod>
-<a name="l00091"></a>00091     {
-<a name="l00092"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#a1cdacb8e14a2f56cbc0abf2927b27a2b">00092</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">size1</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F1, A1></a> <span class="keyword">const</span> & lhs,
-<a name="l00093"></a>00093                           <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F2, A2></a>,
-<a name="l00094"></a>00094                                                       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F2, A2></a>,
-<a name="l00095"></a>00095                                                       op_trans> <span class="keyword">const</span> & rhs) { <span class="keywordflow">return</span> lhs.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); }
-<a name="l00096"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#adc37fe885156acbab596641f515a0f82">00096</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">size2</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F1, A1></a> <span class="keyword">const</span> & lhs,
-<a name="l00097"></a>00097                           <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F2, A2></a>,
-<a name="l00098"></a>00098                                                       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F2, A2></a>,
-<a name="l00099"></a>00099                                                       op_trans> <span class="keyword">const</span> & rhs) { <span class="keywordflow">return</span> rhs.lhs().size1(); }
-<a name="l00100"></a>00100     };
-<a name="l00101"></a>00101     
-<a name="l00102"></a>00102   }
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 
-<a name="l00105"></a>00105 <span class="preprocessor">#endif</span>
-<a name="l00106"></a>00106 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__col__kernels_8h.html b/doc/doxygen/html/matrix__solve__col__col__kernels_8h.html
deleted file mode 100644
index 0a7ee90..0000000
--- a/doc/doxygen/html/matrix__solve__col__col__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__col__col__source_8h_source.html">viennacl/linalg/kernels/matrix_solve_col_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__solve__col__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">matrix_solve_col_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">matrix_solve_col_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__col__kernels_8h_source.html b/doc/doxygen/html/matrix__solve__col__col__kernels_8h_source.html
deleted file mode 100644
index bd12e4f..0000000
--- a/doc/doxygen/html/matrix__solve__col__col__kernels_8h_source.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__col__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_COL_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_COL_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__solve__col__col__source_8h.html">viennacl/linalg/kernels/matrix_solve_col_col_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_solve_col_col;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_solve_col_col<float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_solve_col_col_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">matrix_solve_col_col_align1_upper_trans_solve</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">matrix_solve_col_col_align1_trans_upper_trans_solve</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">matrix_solve_col_col_align1_unit_lower_solve</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">matrix_solve_col_col_align1_trans_unit_upper_trans_solve</a>);
-<a name="l00040"></a>00040         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">matrix_solve_col_col_align1_trans_upper_solve</a>);
-<a name="l00041"></a>00041         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">matrix_solve_col_col_align1_unit_lower_trans_solve</a>);
-<a name="l00042"></a>00042         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">matrix_solve_col_col_align1_trans_unit_upper_solve</a>);
-<a name="l00043"></a>00043         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">matrix_solve_col_col_align1_trans_unit_lower_trans_solve</a>);
-<a name="l00044"></a>00044         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">matrix_solve_col_col_align1_lower_trans_solve</a>);
-<a name="l00045"></a>00045         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">matrix_solve_col_col_align1_upper_solve</a>);
-<a name="l00046"></a>00046         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">matrix_solve_col_col_align1_trans_lower_trans_solve</a>);
-<a name="l00047"></a>00047         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">matrix_solve_col_col_align1_lower_solve</a>);
-<a name="l00048"></a>00048         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">matrix_solve_col_col_align1_trans_lower_solve</a>);
-<a name="l00049"></a>00049         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">matrix_solve_col_col_align1_unit_upper_trans_solve</a>);
-<a name="l00050"></a>00050         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">matrix_solve_col_col_align1_unit_upper_solve</a>);
-<a name="l00051"></a>00051         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">matrix_solve_col_col_align1_trans_unit_lower_solve</a>);
-<a name="l00052"></a>00052         std::string prog_name = program_name();
-<a name="l00053"></a>00053 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00055"></a>00055 <span class="preprocessor">        #endif</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00057"></a>00057         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00058"></a>00058         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00059"></a>00059         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00060"></a>00060         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00061"></a>00061         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00062"></a>00062         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00063"></a>00063         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00064"></a>00064         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00065"></a>00065         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00066"></a>00066         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00067"></a>00067         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00068"></a>00068         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00069"></a>00069         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00070"></a>00070         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00071"></a>00071         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00072"></a>00072         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00073"></a>00073         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00074"></a>00074         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00075"></a>00075        } <span class="comment">//if</span>
-<a name="l00076"></a>00076      } <span class="comment">//init</span>
-<a name="l00077"></a>00077     }; <span class="comment">// struct</span>
-<a name="l00078"></a>00078 
-<a name="l00079"></a>00079 
-<a name="l00080"></a>00080 
-<a name="l00082"></a>00082    <span class="keyword">template</span> <>
-<a name="l00083"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">00083</a>    <span class="keyword">struct </span>matrix_solve_col_col<double, 1>
-<a name="l00084"></a>00084    {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00085</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00086"></a>00086     {
-<a name="l00087"></a>00087       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_solve_col_col_1"</span>;
-<a name="l00088"></a>00088     }
-<a name="l00089"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00089</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00090"></a>00090     {
-<a name="l00091"></a>00091       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00092"></a>00092       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00093"></a>00093       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00094"></a>00094       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00095"></a>00095       {
-<a name="l00096"></a>00096         std::string source;
-<a name="l00097"></a>00097         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00098"></a>00098         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">matrix_solve_col_col_align1_upper_trans_solve</a>, fp64_ext));
-<a name="l00099"></a>00099         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">matrix_solve_col_col_align1_trans_upper_trans_solve</a>, fp64_ext));
-<a name="l00100"></a>00100         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">matrix_solve_col_col_align1_unit_lower_solve</a>, fp64_ext));
-<a name="l00101"></a>00101         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">matrix_solve_col_col_align1_trans_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00102"></a>00102         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">matrix_solve_col_col_align1_trans_upper_solve</a>, fp64_ext));
-<a name="l00103"></a>00103         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">matrix_solve_col_col_align1_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00104"></a>00104         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">matrix_solve_col_col_align1_trans_unit_upper_solve</a>, fp64_ext));
-<a name="l00105"></a>00105         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">matrix_solve_col_col_align1_trans_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00106"></a>00106         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">matrix_solve_col_col_align1_lower_trans_solve</a>, fp64_ext));
-<a name="l00107"></a>00107         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">matrix_solve_col_col_align1_upper_solve</a>, fp64_ext));
-<a name="l00108"></a>00108         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">matrix_solve_col_col_align1_trans_lower_trans_solve</a>, fp64_ext));
-<a name="l00109"></a>00109         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">matrix_solve_col_col_align1_lower_solve</a>, fp64_ext));
-<a name="l00110"></a>00110         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">matrix_solve_col_col_align1_trans_lower_solve</a>, fp64_ext));
-<a name="l00111"></a>00111         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">matrix_solve_col_col_align1_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00112"></a>00112         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">matrix_solve_col_col_align1_unit_upper_solve</a>, fp64_ext));
-<a name="l00113"></a>00113         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">matrix_solve_col_col_align1_trans_unit_lower_solve</a>, fp64_ext));
-<a name="l00114"></a>00114         std::string prog_name = program_name();
-<a name="l00115"></a>00115 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00117"></a>00117 <span class="preprocessor">        #endif</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00119"></a>00119         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00120"></a>00120         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00121"></a>00121         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00122"></a>00122         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00123"></a>00123         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00124"></a>00124         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00125"></a>00125         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00126"></a>00126         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00127"></a>00127         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00128"></a>00128         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00129"></a>00129         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00130"></a>00130         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00131"></a>00131         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00132"></a>00132         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00133"></a>00133         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00134"></a>00134         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00135"></a>00135         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00136"></a>00136         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00137"></a>00137        } <span class="comment">//if</span>
-<a name="l00138"></a>00138      } <span class="comment">//init</span>
-<a name="l00139"></a>00139     }; <span class="comment">// struct</span>
-<a name="l00140"></a>00140 
-<a name="l00141"></a>00141 
-<a name="l00142"></a>00142   }  <span class="comment">//namespace kernels</span>
-<a name="l00143"></a>00143  }  <span class="comment">//namespace linalg</span>
-<a name="l00144"></a>00144 }  <span class="comment">//namespace viennacl</span>
-<a name="l00145"></a>00145 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__col__source_8h.html b/doc/doxygen/html/matrix__solve__col__col__source_8h.html
deleted file mode 100644
index 580a710..0000000
--- a/doc/doxygen/html/matrix__solve__col__col__source_8h.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__solve__col__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">matrix_solve_col_col_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">matrix_solve_col_col_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">matrix_solve_col_col_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">matrix_solve_col_col_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">matrix_solve_col_col_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">matrix_solve_col_col_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">matrix_solve_col_col_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">matrix_solve_col_col_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">matrix_solve_col_col_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">matrix_solve_col_col_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">matrix_solve_col_col_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">matrix_solve_col_col_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">matrix_solve_col_col_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">matrix_solve_col_col_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">matrix_solve_col_col_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">matrix_solve_col_col_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__col__source_8h_source.html b/doc/doxygen/html/matrix__solve__col__col__source_8h_source.html
deleted file mode 100644
index 09d59ce..0000000
--- a/doc/doxygen/html/matrix__solve__col__col__source_8h_source.html
+++ /dev/null
@@ -1,522 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__col__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_COL_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_COL_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">matrix_solve_col_col_align1_upper_trans_solve</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void upper_trans_solve(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"{ \n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"  { \n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"   }\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"}\n"</span>
-<a name="l00039"></a>00039 ; <span class="comment">//matrix_solve_col_col_align1_upper_trans_solve</span>
-<a name="l00040"></a>00040 
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">00041</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">matrix_solve_col_col_align1_trans_upper_trans_solve</a> = 
-<a name="l00042"></a>00042 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"__kernel void trans_upper_trans_solve(\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"{ \n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"  { \n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"   }\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_solve_col_col_align1_trans_upper_trans_solve</span>
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">matrix_solve_col_col_align1_unit_lower_solve</a> = 
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void unit_lower_solve(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"{ \n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"  { \n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"   }\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"}\n"</span>
-<a name="l00098"></a>00098 ; <span class="comment">//matrix_solve_col_col_align1_unit_lower_solve</span>
-<a name="l00099"></a>00099 
-<a name="l00100"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">00100</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">matrix_solve_col_col_align1_trans_unit_upper_trans_solve</a> = 
-<a name="l00101"></a>00101 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"__kernel void trans_unit_upper_trans_solve(\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"{ \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"  { \n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"   }\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"}\n"</span>
-<a name="l00126"></a>00126 ; <span class="comment">//matrix_solve_col_col_align1_trans_unit_upper_trans_solve</span>
-<a name="l00127"></a>00127 
-<a name="l00128"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">00128</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">matrix_solve_col_col_align1_trans_upper_solve</a> = 
-<a name="l00129"></a>00129 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">"__kernel void trans_upper_solve(\n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"{ \n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"  { \n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"   }\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"}\n"</span>
-<a name="l00157"></a>00157 ; <span class="comment">//matrix_solve_col_col_align1_trans_upper_solve</span>
-<a name="l00158"></a>00158 
-<a name="l00159"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">00159</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">matrix_solve_col_col_align1_unit_lower_trans_solve</a> = 
-<a name="l00160"></a>00160 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"__kernel void unit_lower_trans_solve(\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"{ \n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"  { \n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"   }\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"}\n"</span>
-<a name="l00185"></a>00185 ; <span class="comment">//matrix_solve_col_col_align1_unit_lower_trans_solve</span>
-<a name="l00186"></a>00186 
-<a name="l00187"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">00187</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">matrix_solve_col_col_align1_trans_unit_upper_solve</a> = 
-<a name="l00188"></a>00188 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"__kernel void trans_unit_upper_solve(\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"{ \n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"  { \n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"   }\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"}\n"</span>
-<a name="l00213"></a>00213 ; <span class="comment">//matrix_solve_col_col_align1_trans_unit_upper_solve</span>
-<a name="l00214"></a>00214 
-<a name="l00215"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">00215</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">matrix_solve_col_col_align1_trans_unit_lower_trans_solve</a> = 
-<a name="l00216"></a>00216 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"__kernel void trans_unit_lower_trans_solve(\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"{ \n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  { \n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"   }\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"}\n"</span>
-<a name="l00241"></a>00241 ; <span class="comment">//matrix_solve_col_col_align1_trans_unit_lower_trans_solve</span>
-<a name="l00242"></a>00242 
-<a name="l00243"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">00243</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">matrix_solve_col_col_align1_lower_trans_solve</a> = 
-<a name="l00244"></a>00244 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"__kernel void lower_trans_solve(\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">"{ \n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">"  { \n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">"   }\n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">"}\n"</span>
-<a name="l00272"></a>00272 ; <span class="comment">//matrix_solve_col_col_align1_lower_trans_solve</span>
-<a name="l00273"></a>00273 
-<a name="l00274"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">00274</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">matrix_solve_col_col_align1_upper_solve</a> = 
-<a name="l00275"></a>00275 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">"__kernel void upper_solve(\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00283"></a>00283 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00284"></a>00284 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">"{ \n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">"  { \n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00294"></a>00294 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00295"></a>00295 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">"   }\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">"}\n"</span>
-<a name="l00303"></a>00303 ; <span class="comment">//matrix_solve_col_col_align1_upper_solve</span>
-<a name="l00304"></a>00304 
-<a name="l00305"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">00305</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">matrix_solve_col_col_align1_trans_lower_trans_solve</a> = 
-<a name="l00306"></a>00306 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">"__kernel void trans_lower_trans_solve(\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">"{ \n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">"  { \n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">"   }\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">"}\n"</span>
-<a name="l00334"></a>00334 ; <span class="comment">//matrix_solve_col_col_align1_trans_lower_trans_solve</span>
-<a name="l00335"></a>00335 
-<a name="l00336"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">00336</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">matrix_solve_col_col_align1_lower_solve</a> = 
-<a name="l00337"></a>00337 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00340"></a>00340 <span class="stringliteral">"__kernel void lower_solve(\n"</span>
-<a name="l00341"></a>00341 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00351"></a>00351 <span class="stringliteral">"{ \n"</span>
-<a name="l00352"></a>00352 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00353"></a>00353 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00354"></a>00354 <span class="stringliteral">"  { \n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00361"></a>00361 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00362"></a>00362 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00363"></a>00363 <span class="stringliteral">"   }\n"</span>
-<a name="l00364"></a>00364 <span class="stringliteral">"}\n"</span>
-<a name="l00365"></a>00365 ; <span class="comment">//matrix_solve_col_col_align1_lower_solve</span>
-<a name="l00366"></a>00366 
-<a name="l00367"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">00367</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">matrix_solve_col_col_align1_trans_lower_solve</a> = 
-<a name="l00368"></a>00368 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">"__kernel void trans_lower_solve(\n"</span>
-<a name="l00372"></a>00372 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00373"></a>00373 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00374"></a>00374 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00375"></a>00375 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">"{ \n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00385"></a>00385 <span class="stringliteral">"  { \n"</span>
-<a name="l00386"></a>00386 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00387"></a>00387 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">"   }\n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">"}\n"</span>
-<a name="l00396"></a>00396 ; <span class="comment">//matrix_solve_col_col_align1_trans_lower_solve</span>
-<a name="l00397"></a>00397 
-<a name="l00398"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">00398</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">matrix_solve_col_col_align1_unit_upper_trans_solve</a> = 
-<a name="l00399"></a>00399 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">"__kernel void unit_upper_trans_solve(\n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00410"></a>00410 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00411"></a>00411 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00412"></a>00412 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00413"></a>00413 <span class="stringliteral">"{ \n"</span>
-<a name="l00414"></a>00414 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00415"></a>00415 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00416"></a>00416 <span class="stringliteral">"  { \n"</span>
-<a name="l00417"></a>00417 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00418"></a>00418 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00419"></a>00419 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00420"></a>00420 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00421"></a>00421 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00422"></a>00422 <span class="stringliteral">"   }\n"</span>
-<a name="l00423"></a>00423 <span class="stringliteral">"}\n"</span>
-<a name="l00424"></a>00424 ; <span class="comment">//matrix_solve_col_col_align1_unit_upper_trans_solve</span>
-<a name="l00425"></a>00425 
-<a name="l00426"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">00426</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">matrix_solve_col_col_align1_unit_upper_solve</a> = 
-<a name="l00427"></a>00427 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00428"></a>00428 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00429"></a>00429 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00430"></a>00430 <span class="stringliteral">"__kernel void unit_upper_solve(\n"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00435"></a>00435 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00436"></a>00436 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00437"></a>00437 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00438"></a>00438 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00439"></a>00439 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00440"></a>00440 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00441"></a>00441 <span class="stringliteral">"{ \n"</span>
-<a name="l00442"></a>00442 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00443"></a>00443 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00444"></a>00444 <span class="stringliteral">"  { \n"</span>
-<a name="l00445"></a>00445 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00446"></a>00446 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00447"></a>00447 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00448"></a>00448 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00449"></a>00449 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00450"></a>00450 <span class="stringliteral">"   }\n"</span>
-<a name="l00451"></a>00451 <span class="stringliteral">"}\n"</span>
-<a name="l00452"></a>00452 ; <span class="comment">//matrix_solve_col_col_align1_unit_upper_solve</span>
-<a name="l00453"></a>00453 
-<a name="l00454"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">00454</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">matrix_solve_col_col_align1_trans_unit_lower_solve</a> = 
-<a name="l00455"></a>00455 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00456"></a>00456 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00457"></a>00457 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00458"></a>00458 <span class="stringliteral">"__kernel void trans_unit_lower_solve(\n"</span>
-<a name="l00459"></a>00459 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00460"></a>00460 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00461"></a>00461 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00462"></a>00462 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00463"></a>00463 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00464"></a>00464 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00466"></a>00466 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00467"></a>00467 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00468"></a>00468 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00469"></a>00469 <span class="stringliteral">"{ \n"</span>
-<a name="l00470"></a>00470 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00471"></a>00471 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00472"></a>00472 <span class="stringliteral">"  { \n"</span>
-<a name="l00473"></a>00473 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00474"></a>00474 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00475"></a>00475 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00476"></a>00476 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00477"></a>00477 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00478"></a>00478 <span class="stringliteral">"   }\n"</span>
-<a name="l00479"></a>00479 <span class="stringliteral">"}\n"</span>
-<a name="l00480"></a>00480 ; <span class="comment">//matrix_solve_col_col_align1_trans_unit_lower_solve</span>
-<a name="l00481"></a>00481 
-<a name="l00482"></a>00482   }  <span class="comment">//namespace kernels</span>
-<a name="l00483"></a>00483  }  <span class="comment">//namespace linalg</span>
-<a name="l00484"></a>00484 }  <span class="comment">//namespace viennacl</span>
-<a name="l00485"></a>00485 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__row__kernels_8h.html b/doc/doxygen/html/matrix__solve__col__row__kernels_8h.html
deleted file mode 100644
index af7b1a1..0000000
--- a/doc/doxygen/html/matrix__solve__col__row__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__col__row__source_8h_source.html">viennacl/linalg/kernels/matrix_solve_col_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__solve__col__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">matrix_solve_col_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">matrix_solve_col_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__row__kernels_8h_source.html b/doc/doxygen/html/matrix__solve__col__row__kernels_8h_source.html
deleted file mode 100644
index 8b1076f..0000000
--- a/doc/doxygen/html/matrix__solve__col__row__kernels_8h_source.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__col__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_COL_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_COL_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__solve__col__row__source_8h.html">viennacl/linalg/kernels/matrix_solve_col_row_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_solve_col_row;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_solve_col_row<float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_solve_col_row_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">matrix_solve_col_row_align1_upper_trans_solve</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">matrix_solve_col_row_align1_trans_upper_trans_solve</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">matrix_solve_col_row_align1_unit_lower_solve</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">matrix_solve_col_row_align1_trans_unit_upper_trans_solve</a>);
-<a name="l00040"></a>00040         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">matrix_solve_col_row_align1_trans_upper_solve</a>);
-<a name="l00041"></a>00041         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">matrix_solve_col_row_align1_unit_lower_trans_solve</a>);
-<a name="l00042"></a>00042         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">matrix_solve_col_row_align1_trans_unit_upper_solve</a>);
-<a name="l00043"></a>00043         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">matrix_solve_col_row_align1_trans_unit_lower_trans_solve</a>);
-<a name="l00044"></a>00044         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">matrix_solve_col_row_align1_lower_trans_solve</a>);
-<a name="l00045"></a>00045         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">matrix_solve_col_row_align1_upper_solve</a>);
-<a name="l00046"></a>00046         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">matrix_solve_col_row_align1_trans_lower_trans_solve</a>);
-<a name="l00047"></a>00047         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">matrix_solve_col_row_align1_lower_solve</a>);
-<a name="l00048"></a>00048         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">matrix_solve_col_row_align1_trans_lower_solve</a>);
-<a name="l00049"></a>00049         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">matrix_solve_col_row_align1_unit_upper_trans_solve</a>);
-<a name="l00050"></a>00050         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">matrix_solve_col_row_align1_unit_upper_solve</a>);
-<a name="l00051"></a>00051         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">matrix_solve_col_row_align1_trans_unit_lower_solve</a>);
-<a name="l00052"></a>00052         std::string prog_name = program_name();
-<a name="l00053"></a>00053 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00055"></a>00055 <span class="preprocessor">        #endif</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00057"></a>00057         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00058"></a>00058         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00059"></a>00059         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00060"></a>00060         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00061"></a>00061         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00062"></a>00062         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00063"></a>00063         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00064"></a>00064         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00065"></a>00065         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00066"></a>00066         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00067"></a>00067         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00068"></a>00068         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00069"></a>00069         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00070"></a>00070         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00071"></a>00071         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00072"></a>00072         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00073"></a>00073         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00074"></a>00074         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00075"></a>00075        } <span class="comment">//if</span>
-<a name="l00076"></a>00076      } <span class="comment">//init</span>
-<a name="l00077"></a>00077     }; <span class="comment">// struct</span>
-<a name="l00078"></a>00078 
-<a name="l00079"></a>00079 
-<a name="l00080"></a>00080 
-<a name="l00082"></a>00082    <span class="keyword">template</span> <>
-<a name="l00083"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">00083</a>    <span class="keyword">struct </span>matrix_solve_col_row<double, 1>
-<a name="l00084"></a>00084    {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00085</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00086"></a>00086     {
-<a name="l00087"></a>00087       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_solve_col_row_1"</span>;
-<a name="l00088"></a>00088     }
-<a name="l00089"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00089</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00090"></a>00090     {
-<a name="l00091"></a>00091       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00092"></a>00092       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00093"></a>00093       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00094"></a>00094       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00095"></a>00095       {
-<a name="l00096"></a>00096         std::string source;
-<a name="l00097"></a>00097         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00098"></a>00098         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">matrix_solve_col_row_align1_upper_trans_solve</a>, fp64_ext));
-<a name="l00099"></a>00099         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">matrix_solve_col_row_align1_trans_upper_trans_solve</a>, fp64_ext));
-<a name="l00100"></a>00100         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">matrix_solve_col_row_align1_unit_lower_solve</a>, fp64_ext));
-<a name="l00101"></a>00101         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">matrix_solve_col_row_align1_trans_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00102"></a>00102         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">matrix_solve_col_row_align1_trans_upper_solve</a>, fp64_ext));
-<a name="l00103"></a>00103         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">matrix_solve_col_row_align1_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00104"></a>00104         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">matrix_solve_col_row_align1_trans_unit_upper_solve</a>, fp64_ext));
-<a name="l00105"></a>00105         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">matrix_solve_col_row_align1_trans_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00106"></a>00106         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">matrix_solve_col_row_align1_lower_trans_solve</a>, fp64_ext));
-<a name="l00107"></a>00107         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">matrix_solve_col_row_align1_upper_solve</a>, fp64_ext));
-<a name="l00108"></a>00108         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">matrix_solve_col_row_align1_trans_lower_trans_solve</a>, fp64_ext));
-<a name="l00109"></a>00109         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">matrix_solve_col_row_align1_lower_solve</a>, fp64_ext));
-<a name="l00110"></a>00110         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">matrix_solve_col_row_align1_trans_lower_solve</a>, fp64_ext));
-<a name="l00111"></a>00111         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">matrix_solve_col_row_align1_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00112"></a>00112         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">matrix_solve_col_row_align1_unit_upper_solve</a>, fp64_ext));
-<a name="l00113"></a>00113         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">matrix_solve_col_row_align1_trans_unit_lower_solve</a>, fp64_ext));
-<a name="l00114"></a>00114         std::string prog_name = program_name();
-<a name="l00115"></a>00115 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00117"></a>00117 <span class="preprocessor">        #endif</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00119"></a>00119         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00120"></a>00120         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00121"></a>00121         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00122"></a>00122         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00123"></a>00123         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00124"></a>00124         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00125"></a>00125         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00126"></a>00126         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00127"></a>00127         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00128"></a>00128         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00129"></a>00129         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00130"></a>00130         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00131"></a>00131         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00132"></a>00132         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00133"></a>00133         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00134"></a>00134         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00135"></a>00135         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00136"></a>00136         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00137"></a>00137        } <span class="comment">//if</span>
-<a name="l00138"></a>00138      } <span class="comment">//init</span>
-<a name="l00139"></a>00139     }; <span class="comment">// struct</span>
-<a name="l00140"></a>00140 
-<a name="l00141"></a>00141 
-<a name="l00142"></a>00142   }  <span class="comment">//namespace kernels</span>
-<a name="l00143"></a>00143  }  <span class="comment">//namespace linalg</span>
-<a name="l00144"></a>00144 }  <span class="comment">//namespace viennacl</span>
-<a name="l00145"></a>00145 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__row__source_8h.html b/doc/doxygen/html/matrix__solve__col__row__source_8h.html
deleted file mode 100644
index e37662a..0000000
--- a/doc/doxygen/html/matrix__solve__col__row__source_8h.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__solve__col__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">matrix_solve_col_row_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">matrix_solve_col_row_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">matrix_solve_col_row_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">matrix_solve_col_row_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">matrix_solve_col_row_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">matrix_solve_col_row_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">matrix_solve_col_row_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">matrix_solve_col_row_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">matrix_solve_col_row_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">matrix_solve_col_row_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">matrix_solve_col_row_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">matrix_solve_col_row_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">matrix_solve_col_row_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">matrix_solve_col_row_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">matrix_solve_col_row_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">matrix_solve_col_row_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__row__source_8h_source.html b/doc/doxygen/html/matrix__solve__col__row__source_8h_source.html
deleted file mode 100644
index 22c78c1..0000000
--- a/doc/doxygen/html/matrix__solve__col__row__source_8h_source.html
+++ /dev/null
@@ -1,522 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__col__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_COL_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_COL_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">matrix_solve_col_row_align1_upper_trans_solve</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void upper_trans_solve(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"{ \n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"  { \n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"   }\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"}\n"</span>
-<a name="l00039"></a>00039 ; <span class="comment">//matrix_solve_col_row_align1_upper_trans_solve</span>
-<a name="l00040"></a>00040 
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">00041</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">matrix_solve_col_row_align1_trans_upper_trans_solve</a> = 
-<a name="l00042"></a>00042 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"__kernel void trans_upper_trans_solve(\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"{ \n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"  { \n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"   }\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_solve_col_row_align1_trans_upper_trans_solve</span>
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">matrix_solve_col_row_align1_unit_lower_solve</a> = 
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void unit_lower_solve(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"{ \n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"  { \n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"   }\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"}\n"</span>
-<a name="l00098"></a>00098 ; <span class="comment">//matrix_solve_col_row_align1_unit_lower_solve</span>
-<a name="l00099"></a>00099 
-<a name="l00100"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">00100</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">matrix_solve_col_row_align1_trans_unit_upper_trans_solve</a> = 
-<a name="l00101"></a>00101 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"__kernel void trans_unit_upper_trans_solve(\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"{ \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"  { \n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"   }\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"}\n"</span>
-<a name="l00126"></a>00126 ; <span class="comment">//matrix_solve_col_row_align1_trans_unit_upper_trans_solve</span>
-<a name="l00127"></a>00127 
-<a name="l00128"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">00128</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">matrix_solve_col_row_align1_trans_upper_solve</a> = 
-<a name="l00129"></a>00129 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">"__kernel void trans_upper_solve(\n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"{ \n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"  { \n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"   }\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"}\n"</span>
-<a name="l00157"></a>00157 ; <span class="comment">//matrix_solve_col_row_align1_trans_upper_solve</span>
-<a name="l00158"></a>00158 
-<a name="l00159"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">00159</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">matrix_solve_col_row_align1_unit_lower_trans_solve</a> = 
-<a name="l00160"></a>00160 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"__kernel void unit_lower_trans_solve(\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"{ \n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"  { \n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"   }\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"}\n"</span>
-<a name="l00185"></a>00185 ; <span class="comment">//matrix_solve_col_row_align1_unit_lower_trans_solve</span>
-<a name="l00186"></a>00186 
-<a name="l00187"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">00187</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">matrix_solve_col_row_align1_trans_unit_upper_solve</a> = 
-<a name="l00188"></a>00188 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"__kernel void trans_unit_upper_solve(\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"{ \n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"  { \n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"   }\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"}\n"</span>
-<a name="l00213"></a>00213 ; <span class="comment">//matrix_solve_col_row_align1_trans_unit_upper_solve</span>
-<a name="l00214"></a>00214 
-<a name="l00215"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">00215</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">matrix_solve_col_row_align1_trans_unit_lower_trans_solve</a> = 
-<a name="l00216"></a>00216 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"__kernel void trans_unit_lower_trans_solve(\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"{ \n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  { \n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"   }\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"}\n"</span>
-<a name="l00241"></a>00241 ; <span class="comment">//matrix_solve_col_row_align1_trans_unit_lower_trans_solve</span>
-<a name="l00242"></a>00242 
-<a name="l00243"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">00243</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">matrix_solve_col_row_align1_lower_trans_solve</a> = 
-<a name="l00244"></a>00244 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"__kernel void lower_trans_solve(\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">"{ \n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">"  { \n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">"   }\n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">"}\n"</span>
-<a name="l00272"></a>00272 ; <span class="comment">//matrix_solve_col_row_align1_lower_trans_solve</span>
-<a name="l00273"></a>00273 
-<a name="l00274"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">00274</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">matrix_solve_col_row_align1_upper_solve</a> = 
-<a name="l00275"></a>00275 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">"__kernel void upper_solve(\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00283"></a>00283 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00284"></a>00284 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">"{ \n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">"  { \n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00294"></a>00294 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00295"></a>00295 <span class="stringliteral">"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">"   }\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">"}\n"</span>
-<a name="l00303"></a>00303 ; <span class="comment">//matrix_solve_col_row_align1_upper_solve</span>
-<a name="l00304"></a>00304 
-<a name="l00305"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">00305</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">matrix_solve_col_row_align1_trans_lower_trans_solve</a> = 
-<a name="l00306"></a>00306 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">"__kernel void trans_lower_trans_solve(\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">"{ \n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">"  { \n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">"   }\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">"}\n"</span>
-<a name="l00334"></a>00334 ; <span class="comment">//matrix_solve_col_row_align1_trans_lower_trans_solve</span>
-<a name="l00335"></a>00335 
-<a name="l00336"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">00336</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">matrix_solve_col_row_align1_lower_solve</a> = 
-<a name="l00337"></a>00337 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00340"></a>00340 <span class="stringliteral">"__kernel void lower_solve(\n"</span>
-<a name="l00341"></a>00341 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00351"></a>00351 <span class="stringliteral">"{ \n"</span>
-<a name="l00352"></a>00352 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00353"></a>00353 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00354"></a>00354 <span class="stringliteral">"  { \n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00361"></a>00361 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00362"></a>00362 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00363"></a>00363 <span class="stringliteral">"   }\n"</span>
-<a name="l00364"></a>00364 <span class="stringliteral">"}\n"</span>
-<a name="l00365"></a>00365 ; <span class="comment">//matrix_solve_col_row_align1_lower_solve</span>
-<a name="l00366"></a>00366 
-<a name="l00367"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">00367</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">matrix_solve_col_row_align1_trans_lower_solve</a> = 
-<a name="l00368"></a>00368 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">"__kernel void trans_lower_solve(\n"</span>
-<a name="l00372"></a>00372 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00373"></a>00373 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00374"></a>00374 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00375"></a>00375 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">"{ \n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00385"></a>00385 <span class="stringliteral">"  { \n"</span>
-<a name="l00386"></a>00386 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00387"></a>00387 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">"   }\n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">"}\n"</span>
-<a name="l00396"></a>00396 ; <span class="comment">//matrix_solve_col_row_align1_trans_lower_solve</span>
-<a name="l00397"></a>00397 
-<a name="l00398"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">00398</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">matrix_solve_col_row_align1_unit_upper_trans_solve</a> = 
-<a name="l00399"></a>00399 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">"__kernel void unit_upper_trans_solve(\n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00410"></a>00410 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00411"></a>00411 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00412"></a>00412 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00413"></a>00413 <span class="stringliteral">"{ \n"</span>
-<a name="l00414"></a>00414 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00415"></a>00415 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00416"></a>00416 <span class="stringliteral">"  { \n"</span>
-<a name="l00417"></a>00417 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00418"></a>00418 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00419"></a>00419 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00420"></a>00420 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00421"></a>00421 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00422"></a>00422 <span class="stringliteral">"   }\n"</span>
-<a name="l00423"></a>00423 <span class="stringliteral">"}\n"</span>
-<a name="l00424"></a>00424 ; <span class="comment">//matrix_solve_col_row_align1_unit_upper_trans_solve</span>
-<a name="l00425"></a>00425 
-<a name="l00426"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">00426</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">matrix_solve_col_row_align1_unit_upper_solve</a> = 
-<a name="l00427"></a>00427 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00428"></a>00428 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00429"></a>00429 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00430"></a>00430 <span class="stringliteral">"__kernel void unit_upper_solve(\n"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00435"></a>00435 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00436"></a>00436 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00437"></a>00437 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00438"></a>00438 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00439"></a>00439 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00440"></a>00440 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00441"></a>00441 <span class="stringliteral">"{ \n"</span>
-<a name="l00442"></a>00442 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00443"></a>00443 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00444"></a>00444 <span class="stringliteral">"  { \n"</span>
-<a name="l00445"></a>00445 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00446"></a>00446 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00447"></a>00447 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00448"></a>00448 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00449"></a>00449 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00450"></a>00450 <span class="stringliteral">"   }\n"</span>
-<a name="l00451"></a>00451 <span class="stringliteral">"}\n"</span>
-<a name="l00452"></a>00452 ; <span class="comment">//matrix_solve_col_row_align1_unit_upper_solve</span>
-<a name="l00453"></a>00453 
-<a name="l00454"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">00454</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">matrix_solve_col_row_align1_trans_unit_lower_solve</a> = 
-<a name="l00455"></a>00455 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00456"></a>00456 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00457"></a>00457 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00458"></a>00458 <span class="stringliteral">"__kernel void trans_unit_lower_solve(\n"</span>
-<a name="l00459"></a>00459 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00460"></a>00460 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00461"></a>00461 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00462"></a>00462 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00463"></a>00463 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00464"></a>00464 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00466"></a>00466 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00467"></a>00467 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00468"></a>00468 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00469"></a>00469 <span class="stringliteral">"{ \n"</span>
-<a name="l00470"></a>00470 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00471"></a>00471 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00472"></a>00472 <span class="stringliteral">"  { \n"</span>
-<a name="l00473"></a>00473 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00474"></a>00474 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00475"></a>00475 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00476"></a>00476 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00477"></a>00477 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00478"></a>00478 <span class="stringliteral">"   }\n"</span>
-<a name="l00479"></a>00479 <span class="stringliteral">"}\n"</span>
-<a name="l00480"></a>00480 ; <span class="comment">//matrix_solve_col_row_align1_trans_unit_lower_solve</span>
-<a name="l00481"></a>00481 
-<a name="l00482"></a>00482   }  <span class="comment">//namespace kernels</span>
-<a name="l00483"></a>00483  }  <span class="comment">//namespace linalg</span>
-<a name="l00484"></a>00484 }  <span class="comment">//namespace viennacl</span>
-<a name="l00485"></a>00485 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__kernel__class__deducer_8hpp.html b/doc/doxygen/html/matrix__solve__kernel__class__deducer_8hpp.html
deleted file mode 100644
index c36b00b..0000000
--- a/doc/doxygen/html/matrix__solve__kernel__class__deducer_8hpp.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_solve_kernel_class_deducer.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_solve_kernel_class_deducer.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementation of a helper meta class for deducing the correct kernels for the dense matrix solver.  
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__col__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_solve_col_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__col__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_solve_col_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__row__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_solve_row_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__row__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_solve_row_row_kernels.h</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="matrix__solve__kernel__class__deducer_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2  <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of a helper meta class for deducing the correct kernels for the dense matrix solver. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__kernel__class__deducer_8hpp_source.html b/doc/doxygen/html/matrix__solve__kernel__class__deducer_8hpp_source.html
deleted file mode 100644
index bbdd368..0000000
--- a/doc/doxygen/html/matrix__solve__kernel__class__deducer_8hpp_source.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_solve_kernel_class_deducer.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_solve_kernel_class_deducer.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__kernel__class__deducer_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <fstream></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sstream></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="matrix__solve__col__col__kernels_8h.html">viennacl/linalg/kernels/matrix_solve_col_col_kernels.h</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="matrix__solve__col__row__kernels_8h.html">viennacl/linalg/kernels/matrix_solve_col_row_kernels.h</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="matrix__solve__row__col__kernels_8h.html">viennacl/linalg/kernels/matrix_solve_row_col_kernels.h</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="matrix__solve__row__row__kernels_8h.html">viennacl/linalg/kernels/matrix_solve_row_row_kernels.h</a>"</span>
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 <span class="preprocessor">#include <vector></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include <map></span>
-<a name="l00033"></a>00033 
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>viennacl
-<a name="l00035"></a>00035 {
-<a name="l00036"></a>00036   <span class="keyword">namespace </span>tools
-<a name="l00037"></a>00037   {
-<a name="l00039"></a>00039     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType1, <span class="keyword">typename</span> MatrixType2>
-<a name="l00040"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">00040</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a>
-<a name="l00041"></a>00041     {};
-<a name="l00042"></a>00042     
-<a name="l00043"></a>00043     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00044"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">00044</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00045"></a>00045                                               viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00046"></a>00046     {
-<a name="l00047"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html#a6a870d032c93af230efb9a2585d0d8fe">00047</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_solve_row_row<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00048"></a>00048     };
-<a name="l00049"></a>00049 
-<a name="l00050"></a>00050     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00051"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">00051</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00052"></a>00052                                               viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00053"></a>00053     {
-<a name="l00054"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html#a0a0f393da391149f6db6d56f5f763838">00054</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_solve_row_col<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00055"></a>00055     };
-<a name="l00056"></a>00056 
-<a name="l00057"></a>00057     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00058"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">00058</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00059"></a>00059                                               viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00060"></a>00060     {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html#a565860d7eec92d6d3bf47c191f2b9935">00061</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_solve_col_row<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00062"></a>00062     };
-<a name="l00063"></a>00063 
-<a name="l00064"></a>00064     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00065"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">00065</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00066"></a>00066                                               viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00067"></a>00067     {
-<a name="l00068"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html#a7dbff6faccea0ad583517deda3c2b7de">00068</a>       <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_solve_col_col<SCALARTYPE, ALIGNMENT>     ResultType;
-<a name="l00069"></a>00069     };
-<a name="l00070"></a>00070     
-<a name="l00071"></a>00071   }
-<a name="l00072"></a>00072 
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074 
-<a name="l00075"></a>00075 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__col__kernels_8h.html b/doc/doxygen/html/matrix__solve__row__col__kernels_8h.html
deleted file mode 100644
index 7bb5b44..0000000
--- a/doc/doxygen/html/matrix__solve__row__col__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__row__col__source_8h_source.html">viennacl/linalg/kernels/matrix_solve_row_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__solve__row__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">matrix_solve_row_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">matrix_solve_row_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__col__kernels_8h_source.html b/doc/doxygen/html/matrix__solve__row__col__kernels_8h_source.html
deleted file mode 100644
index b5063ce..0000000
--- a/doc/doxygen/html/matrix__solve__row__col__kernels_8h_source.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__row__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_ROW_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_ROW_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__solve__row__col__source_8h.html">viennacl/linalg/kernels/matrix_solve_row_col_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_solve_row_col;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_solve_row_col<float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_solve_row_col_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">matrix_solve_row_col_align1_upper_trans_solve</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">matrix_solve_row_col_align1_trans_upper_trans_solve</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">matrix_solve_row_col_align1_unit_lower_solve</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">matrix_solve_row_col_align1_trans_unit_upper_trans_solve</a>);
-<a name="l00040"></a>00040         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">matrix_solve_row_col_align1_trans_upper_solve</a>);
-<a name="l00041"></a>00041         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">matrix_solve_row_col_align1_unit_lower_trans_solve</a>);
-<a name="l00042"></a>00042         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">matrix_solve_row_col_align1_trans_unit_upper_solve</a>);
-<a name="l00043"></a>00043         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">matrix_solve_row_col_align1_trans_unit_lower_trans_solve</a>);
-<a name="l00044"></a>00044         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">matrix_solve_row_col_align1_lower_trans_solve</a>);
-<a name="l00045"></a>00045         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">matrix_solve_row_col_align1_upper_solve</a>);
-<a name="l00046"></a>00046         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">matrix_solve_row_col_align1_trans_lower_trans_solve</a>);
-<a name="l00047"></a>00047         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">matrix_solve_row_col_align1_lower_solve</a>);
-<a name="l00048"></a>00048         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">matrix_solve_row_col_align1_trans_lower_solve</a>);
-<a name="l00049"></a>00049         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">matrix_solve_row_col_align1_unit_upper_trans_solve</a>);
-<a name="l00050"></a>00050         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">matrix_solve_row_col_align1_unit_upper_solve</a>);
-<a name="l00051"></a>00051         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">matrix_solve_row_col_align1_trans_unit_lower_solve</a>);
-<a name="l00052"></a>00052         std::string prog_name = program_name();
-<a name="l00053"></a>00053 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00055"></a>00055 <span class="preprocessor">        #endif</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00057"></a>00057         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00058"></a>00058         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00059"></a>00059         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00060"></a>00060         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00061"></a>00061         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00062"></a>00062         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00063"></a>00063         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00064"></a>00064         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00065"></a>00065         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00066"></a>00066         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00067"></a>00067         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00068"></a>00068         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00069"></a>00069         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00070"></a>00070         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00071"></a>00071         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00072"></a>00072         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00073"></a>00073         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00074"></a>00074         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00075"></a>00075        } <span class="comment">//if</span>
-<a name="l00076"></a>00076      } <span class="comment">//init</span>
-<a name="l00077"></a>00077     }; <span class="comment">// struct</span>
-<a name="l00078"></a>00078 
-<a name="l00079"></a>00079 
-<a name="l00080"></a>00080 
-<a name="l00082"></a>00082    <span class="keyword">template</span> <>
-<a name="l00083"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">00083</a>    <span class="keyword">struct </span>matrix_solve_row_col<double, 1>
-<a name="l00084"></a>00084    {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00085</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00086"></a>00086     {
-<a name="l00087"></a>00087       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_solve_row_col_1"</span>;
-<a name="l00088"></a>00088     }
-<a name="l00089"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00089</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00090"></a>00090     {
-<a name="l00091"></a>00091       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00092"></a>00092       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00093"></a>00093       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00094"></a>00094       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00095"></a>00095       {
-<a name="l00096"></a>00096         std::string source;
-<a name="l00097"></a>00097         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00098"></a>00098         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">matrix_solve_row_col_align1_upper_trans_solve</a>, fp64_ext));
-<a name="l00099"></a>00099         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">matrix_solve_row_col_align1_trans_upper_trans_solve</a>, fp64_ext));
-<a name="l00100"></a>00100         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">matrix_solve_row_col_align1_unit_lower_solve</a>, fp64_ext));
-<a name="l00101"></a>00101         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">matrix_solve_row_col_align1_trans_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00102"></a>00102         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">matrix_solve_row_col_align1_trans_upper_solve</a>, fp64_ext));
-<a name="l00103"></a>00103         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">matrix_solve_row_col_align1_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00104"></a>00104         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">matrix_solve_row_col_align1_trans_unit_upper_solve</a>, fp64_ext));
-<a name="l00105"></a>00105         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">matrix_solve_row_col_align1_trans_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00106"></a>00106         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">matrix_solve_row_col_align1_lower_trans_solve</a>, fp64_ext));
-<a name="l00107"></a>00107         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">matrix_solve_row_col_align1_upper_solve</a>, fp64_ext));
-<a name="l00108"></a>00108         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">matrix_solve_row_col_align1_trans_lower_trans_solve</a>, fp64_ext));
-<a name="l00109"></a>00109         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">matrix_solve_row_col_align1_lower_solve</a>, fp64_ext));
-<a name="l00110"></a>00110         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">matrix_solve_row_col_align1_trans_lower_solve</a>, fp64_ext));
-<a name="l00111"></a>00111         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">matrix_solve_row_col_align1_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00112"></a>00112         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">matrix_solve_row_col_align1_unit_upper_solve</a>, fp64_ext));
-<a name="l00113"></a>00113         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">matrix_solve_row_col_align1_trans_unit_lower_solve</a>, fp64_ext));
-<a name="l00114"></a>00114         std::string prog_name = program_name();
-<a name="l00115"></a>00115 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00117"></a>00117 <span class="preprocessor">        #endif</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00119"></a>00119         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00120"></a>00120         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00121"></a>00121         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00122"></a>00122         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00123"></a>00123         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00124"></a>00124         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00125"></a>00125         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00126"></a>00126         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00127"></a>00127         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00128"></a>00128         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00129"></a>00129         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00130"></a>00130         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00131"></a>00131         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00132"></a>00132         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00133"></a>00133         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00134"></a>00134         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00135"></a>00135         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00136"></a>00136         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00137"></a>00137        } <span class="comment">//if</span>
-<a name="l00138"></a>00138      } <span class="comment">//init</span>
-<a name="l00139"></a>00139     }; <span class="comment">// struct</span>
-<a name="l00140"></a>00140 
-<a name="l00141"></a>00141 
-<a name="l00142"></a>00142   }  <span class="comment">//namespace kernels</span>
-<a name="l00143"></a>00143  }  <span class="comment">//namespace linalg</span>
-<a name="l00144"></a>00144 }  <span class="comment">//namespace viennacl</span>
-<a name="l00145"></a>00145 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__col__source_8h.html b/doc/doxygen/html/matrix__solve__row__col__source_8h.html
deleted file mode 100644
index 5ca9c99..0000000
--- a/doc/doxygen/html/matrix__solve__row__col__source_8h.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__solve__row__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">matrix_solve_row_col_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">matrix_solve_row_col_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">matrix_solve_row_col_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">matrix_solve_row_col_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">matrix_solve_row_col_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">matrix_solve_row_col_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">matrix_solve_row_col_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">matrix_solve_row_col_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">matrix_solve_row_col_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">matrix_solve_row_col_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">matrix_solve_row_col_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">matrix_solve_row_col_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">matrix_solve_row_col_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">matrix_solve_row_col_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">matrix_solve_row_col_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">matrix_solve_row_col_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__col__source_8h_source.html b/doc/doxygen/html/matrix__solve__row__col__source_8h_source.html
deleted file mode 100644
index feccd82..0000000
--- a/doc/doxygen/html/matrix__solve__row__col__source_8h_source.html
+++ /dev/null
@@ -1,522 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__row__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_ROW_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_ROW_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">matrix_solve_row_col_align1_upper_trans_solve</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void upper_trans_solve(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"{ \n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"  { \n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"   }\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"}\n"</span>
-<a name="l00039"></a>00039 ; <span class="comment">//matrix_solve_row_col_align1_upper_trans_solve</span>
-<a name="l00040"></a>00040 
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">00041</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">matrix_solve_row_col_align1_trans_upper_trans_solve</a> = 
-<a name="l00042"></a>00042 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"__kernel void trans_upper_trans_solve(\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"{ \n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"  { \n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"   }\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_solve_row_col_align1_trans_upper_trans_solve</span>
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">matrix_solve_row_col_align1_unit_lower_solve</a> = 
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void unit_lower_solve(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"{ \n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"  { \n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"   }\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"}\n"</span>
-<a name="l00098"></a>00098 ; <span class="comment">//matrix_solve_row_col_align1_unit_lower_solve</span>
-<a name="l00099"></a>00099 
-<a name="l00100"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">00100</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">matrix_solve_row_col_align1_trans_unit_upper_trans_solve</a> = 
-<a name="l00101"></a>00101 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"__kernel void trans_unit_upper_trans_solve(\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"{ \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"  { \n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"   }\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"}\n"</span>
-<a name="l00126"></a>00126 ; <span class="comment">//matrix_solve_row_col_align1_trans_unit_upper_trans_solve</span>
-<a name="l00127"></a>00127 
-<a name="l00128"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">00128</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">matrix_solve_row_col_align1_trans_upper_solve</a> = 
-<a name="l00129"></a>00129 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">"__kernel void trans_upper_solve(\n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"{ \n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"  { \n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"   }\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"}\n"</span>
-<a name="l00157"></a>00157 ; <span class="comment">//matrix_solve_row_col_align1_trans_upper_solve</span>
-<a name="l00158"></a>00158 
-<a name="l00159"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">00159</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">matrix_solve_row_col_align1_unit_lower_trans_solve</a> = 
-<a name="l00160"></a>00160 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"__kernel void unit_lower_trans_solve(\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"{ \n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"  { \n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"   }\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"}\n"</span>
-<a name="l00185"></a>00185 ; <span class="comment">//matrix_solve_row_col_align1_unit_lower_trans_solve</span>
-<a name="l00186"></a>00186 
-<a name="l00187"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">00187</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">matrix_solve_row_col_align1_trans_unit_upper_solve</a> = 
-<a name="l00188"></a>00188 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"__kernel void trans_unit_upper_solve(\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"{ \n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"  { \n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"   }\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"}\n"</span>
-<a name="l00213"></a>00213 ; <span class="comment">//matrix_solve_row_col_align1_trans_unit_upper_solve</span>
-<a name="l00214"></a>00214 
-<a name="l00215"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">00215</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">matrix_solve_row_col_align1_trans_unit_lower_trans_solve</a> = 
-<a name="l00216"></a>00216 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"__kernel void trans_unit_lower_trans_solve(\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"{ \n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  { \n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"   }\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"}\n"</span>
-<a name="l00241"></a>00241 ; <span class="comment">//matrix_solve_row_col_align1_trans_unit_lower_trans_solve</span>
-<a name="l00242"></a>00242 
-<a name="l00243"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">00243</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">matrix_solve_row_col_align1_lower_trans_solve</a> = 
-<a name="l00244"></a>00244 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"__kernel void lower_trans_solve(\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">"{ \n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">"  { \n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">"   }\n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">"}\n"</span>
-<a name="l00272"></a>00272 ; <span class="comment">//matrix_solve_row_col_align1_lower_trans_solve</span>
-<a name="l00273"></a>00273 
-<a name="l00274"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">00274</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">matrix_solve_row_col_align1_upper_solve</a> = 
-<a name="l00275"></a>00275 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">"__kernel void upper_solve(\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00283"></a>00283 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00284"></a>00284 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">"{ \n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">"  { \n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00294"></a>00294 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00295"></a>00295 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">"   }\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">"}\n"</span>
-<a name="l00303"></a>00303 ; <span class="comment">//matrix_solve_row_col_align1_upper_solve</span>
-<a name="l00304"></a>00304 
-<a name="l00305"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">00305</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">matrix_solve_row_col_align1_trans_lower_trans_solve</a> = 
-<a name="l00306"></a>00306 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">"__kernel void trans_lower_trans_solve(\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">"{ \n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">"  { \n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">"   }\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">"}\n"</span>
-<a name="l00334"></a>00334 ; <span class="comment">//matrix_solve_row_col_align1_trans_lower_trans_solve</span>
-<a name="l00335"></a>00335 
-<a name="l00336"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">00336</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">matrix_solve_row_col_align1_lower_solve</a> = 
-<a name="l00337"></a>00337 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00340"></a>00340 <span class="stringliteral">"__kernel void lower_solve(\n"</span>
-<a name="l00341"></a>00341 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00351"></a>00351 <span class="stringliteral">"{ \n"</span>
-<a name="l00352"></a>00352 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00353"></a>00353 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00354"></a>00354 <span class="stringliteral">"  { \n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00361"></a>00361 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00362"></a>00362 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00363"></a>00363 <span class="stringliteral">"   }\n"</span>
-<a name="l00364"></a>00364 <span class="stringliteral">"}\n"</span>
-<a name="l00365"></a>00365 ; <span class="comment">//matrix_solve_row_col_align1_lower_solve</span>
-<a name="l00366"></a>00366 
-<a name="l00367"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">00367</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">matrix_solve_row_col_align1_trans_lower_solve</a> = 
-<a name="l00368"></a>00368 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">"__kernel void trans_lower_solve(\n"</span>
-<a name="l00372"></a>00372 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00373"></a>00373 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00374"></a>00374 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00375"></a>00375 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">"{ \n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00385"></a>00385 <span class="stringliteral">"  { \n"</span>
-<a name="l00386"></a>00386 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00387"></a>00387 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">"   }\n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">"}\n"</span>
-<a name="l00396"></a>00396 ; <span class="comment">//matrix_solve_row_col_align1_trans_lower_solve</span>
-<a name="l00397"></a>00397 
-<a name="l00398"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">00398</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">matrix_solve_row_col_align1_unit_upper_trans_solve</a> = 
-<a name="l00399"></a>00399 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">"__kernel void unit_upper_trans_solve(\n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00410"></a>00410 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00411"></a>00411 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00412"></a>00412 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00413"></a>00413 <span class="stringliteral">"{ \n"</span>
-<a name="l00414"></a>00414 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00415"></a>00415 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00416"></a>00416 <span class="stringliteral">"  { \n"</span>
-<a name="l00417"></a>00417 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00418"></a>00418 <span class="stringliteral">"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00419"></a>00419 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00420"></a>00420 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00421"></a>00421 <span class="stringliteral">"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00422"></a>00422 <span class="stringliteral">"   }\n"</span>
-<a name="l00423"></a>00423 <span class="stringliteral">"}\n"</span>
-<a name="l00424"></a>00424 ; <span class="comment">//matrix_solve_row_col_align1_unit_upper_trans_solve</span>
-<a name="l00425"></a>00425 
-<a name="l00426"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">00426</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">matrix_solve_row_col_align1_unit_upper_solve</a> = 
-<a name="l00427"></a>00427 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00428"></a>00428 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00429"></a>00429 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00430"></a>00430 <span class="stringliteral">"__kernel void unit_upper_solve(\n"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00435"></a>00435 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00436"></a>00436 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00437"></a>00437 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00438"></a>00438 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00439"></a>00439 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00440"></a>00440 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00441"></a>00441 <span class="stringliteral">"{ \n"</span>
-<a name="l00442"></a>00442 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00443"></a>00443 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00444"></a>00444 <span class="stringliteral">"  { \n"</span>
-<a name="l00445"></a>00445 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00446"></a>00446 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00447"></a>00447 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00448"></a>00448 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00449"></a>00449 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00450"></a>00450 <span class="stringliteral">"   }\n"</span>
-<a name="l00451"></a>00451 <span class="stringliteral">"}\n"</span>
-<a name="l00452"></a>00452 ; <span class="comment">//matrix_solve_row_col_align1_unit_upper_solve</span>
-<a name="l00453"></a>00453 
-<a name="l00454"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">00454</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">matrix_solve_row_col_align1_trans_unit_lower_solve</a> = 
-<a name="l00455"></a>00455 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00456"></a>00456 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00457"></a>00457 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00458"></a>00458 <span class="stringliteral">"__kernel void trans_unit_lower_solve(\n"</span>
-<a name="l00459"></a>00459 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00460"></a>00460 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00461"></a>00461 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00462"></a>00462 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00463"></a>00463 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00464"></a>00464 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00466"></a>00466 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00467"></a>00467 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00468"></a>00468 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00469"></a>00469 <span class="stringliteral">"{ \n"</span>
-<a name="l00470"></a>00470 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00471"></a>00471 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00472"></a>00472 <span class="stringliteral">"  { \n"</span>
-<a name="l00473"></a>00473 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00474"></a>00474 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00475"></a>00475 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00476"></a>00476 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00477"></a>00477 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00478"></a>00478 <span class="stringliteral">"   }\n"</span>
-<a name="l00479"></a>00479 <span class="stringliteral">"}\n"</span>
-<a name="l00480"></a>00480 ; <span class="comment">//matrix_solve_row_col_align1_trans_unit_lower_solve</span>
-<a name="l00481"></a>00481 
-<a name="l00482"></a>00482   }  <span class="comment">//namespace kernels</span>
-<a name="l00483"></a>00483  }  <span class="comment">//namespace linalg</span>
-<a name="l00484"></a>00484 }  <span class="comment">//namespace viennacl</span>
-<a name="l00485"></a>00485 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__row__kernels_8h.html b/doc/doxygen/html/matrix__solve__row__row__kernels_8h.html
deleted file mode 100644
index 4bfc188..0000000
--- a/doc/doxygen/html/matrix__solve__row__row__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__row__row__source_8h_source.html">viennacl/linalg/kernels/matrix_solve_row_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__solve__row__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">matrix_solve_row_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">matrix_solve_row_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__row__kernels_8h_source.html b/doc/doxygen/html/matrix__solve__row__row__kernels_8h_source.html
deleted file mode 100644
index f568859..0000000
--- a/doc/doxygen/html/matrix__solve__row__row__kernels_8h_source.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__row__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_ROW_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_ROW_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__solve__row__row__source_8h.html">viennacl/linalg/kernels/matrix_solve_row_row_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>matrix_solve_row_row;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span>matrix_solve_row_row<float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_solve_row_row_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">matrix_solve_row_row_align1_upper_trans_solve</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">matrix_solve_row_row_align1_trans_upper_trans_solve</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">matrix_solve_row_row_align1_unit_lower_solve</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">matrix_solve_row_row_align1_trans_unit_upper_trans_solve</a>);
-<a name="l00040"></a>00040         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">matrix_solve_row_row_align1_trans_upper_solve</a>);
-<a name="l00041"></a>00041         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">matrix_solve_row_row_align1_unit_lower_trans_solve</a>);
-<a name="l00042"></a>00042         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">matrix_solve_row_row_align1_trans_unit_upper_solve</a>);
-<a name="l00043"></a>00043         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">matrix_solve_row_row_align1_trans_unit_lower_trans_solve</a>);
-<a name="l00044"></a>00044         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">matrix_solve_row_row_align1_lower_trans_solve</a>);
-<a name="l00045"></a>00045         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">matrix_solve_row_row_align1_upper_solve</a>);
-<a name="l00046"></a>00046         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">matrix_solve_row_row_align1_trans_lower_trans_solve</a>);
-<a name="l00047"></a>00047         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">matrix_solve_row_row_align1_lower_solve</a>);
-<a name="l00048"></a>00048         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">matrix_solve_row_row_align1_trans_lower_solve</a>);
-<a name="l00049"></a>00049         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">matrix_solve_row_row_align1_unit_upper_trans_solve</a>);
-<a name="l00050"></a>00050         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">matrix_solve_row_row_align1_unit_upper_solve</a>);
-<a name="l00051"></a>00051         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">matrix_solve_row_row_align1_trans_unit_lower_solve</a>);
-<a name="l00052"></a>00052         std::string prog_name = program_name();
-<a name="l00053"></a>00053 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00055"></a>00055 <span class="preprocessor">        #endif</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00057"></a>00057         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00058"></a>00058         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00059"></a>00059         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00060"></a>00060         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00061"></a>00061         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00062"></a>00062         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00063"></a>00063         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00064"></a>00064         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00065"></a>00065         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00066"></a>00066         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00067"></a>00067         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00068"></a>00068         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00069"></a>00069         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00070"></a>00070         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00071"></a>00071         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00072"></a>00072         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00073"></a>00073         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00074"></a>00074         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00075"></a>00075        } <span class="comment">//if</span>
-<a name="l00076"></a>00076      } <span class="comment">//init</span>
-<a name="l00077"></a>00077     }; <span class="comment">// struct</span>
-<a name="l00078"></a>00078 
-<a name="l00079"></a>00079 
-<a name="l00080"></a>00080 
-<a name="l00082"></a>00082    <span class="keyword">template</span> <>
-<a name="l00083"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">00083</a>    <span class="keyword">struct </span>matrix_solve_row_row<double, 1>
-<a name="l00084"></a>00084    {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00085</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00086"></a>00086     {
-<a name="l00087"></a>00087       <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_solve_row_row_1"</span>;
-<a name="l00088"></a>00088     }
-<a name="l00089"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00089</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00090"></a>00090     {
-<a name="l00091"></a>00091       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00092"></a>00092       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00093"></a>00093       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00094"></a>00094       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00095"></a>00095       {
-<a name="l00096"></a>00096         std::string source;
-<a name="l00097"></a>00097         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00098"></a>00098         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">matrix_solve_row_row_align1_upper_trans_solve</a>, fp64_ext));
-<a name="l00099"></a>00099         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">matrix_solve_row_row_align1_trans_upper_trans_solve</a>, fp64_ext));
-<a name="l00100"></a>00100         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">matrix_solve_row_row_align1_unit_lower_solve</a>, fp64_ext));
-<a name="l00101"></a>00101         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">matrix_solve_row_row_align1_trans_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00102"></a>00102         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">matrix_solve_row_row_align1_trans_upper_solve</a>, fp64_ext));
-<a name="l00103"></a>00103         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">matrix_solve_row_row_align1_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00104"></a>00104         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">matrix_solve_row_row_align1_trans_unit_upper_solve</a>, fp64_ext));
-<a name="l00105"></a>00105         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">matrix_solve_row_row_align1_trans_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00106"></a>00106         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">matrix_solve_row_row_align1_lower_trans_solve</a>, fp64_ext));
-<a name="l00107"></a>00107         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">matrix_solve_row_row_align1_upper_solve</a>, fp64_ext));
-<a name="l00108"></a>00108         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">matrix_solve_row_row_align1_trans_lower_trans_solve</a>, fp64_ext));
-<a name="l00109"></a>00109         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">matrix_solve_row_row_align1_lower_solve</a>, fp64_ext));
-<a name="l00110"></a>00110         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">matrix_solve_row_row_align1_trans_lower_solve</a>, fp64_ext));
-<a name="l00111"></a>00111         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">matrix_solve_row_row_align1_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00112"></a>00112         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">matrix_solve_row_row_align1_unit_upper_solve</a>, fp64_ext));
-<a name="l00113"></a>00113         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">matrix_solve_row_row_align1_trans_unit_lower_solve</a>, fp64_ext));
-<a name="l00114"></a>00114         std::string prog_name = program_name();
-<a name="l00115"></a>00115 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00117"></a>00117 <span class="preprocessor">        #endif</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00119"></a>00119         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00120"></a>00120         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00121"></a>00121         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00122"></a>00122         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00123"></a>00123         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00124"></a>00124         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00125"></a>00125         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00126"></a>00126         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00127"></a>00127         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00128"></a>00128         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00129"></a>00129         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00130"></a>00130         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00131"></a>00131         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00132"></a>00132         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00133"></a>00133         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00134"></a>00134         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00135"></a>00135         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00136"></a>00136         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00137"></a>00137        } <span class="comment">//if</span>
-<a name="l00138"></a>00138      } <span class="comment">//init</span>
-<a name="l00139"></a>00139     }; <span class="comment">// struct</span>
-<a name="l00140"></a>00140 
-<a name="l00141"></a>00141 
-<a name="l00142"></a>00142   }  <span class="comment">//namespace kernels</span>
-<a name="l00143"></a>00143  }  <span class="comment">//namespace linalg</span>
-<a name="l00144"></a>00144 }  <span class="comment">//namespace viennacl</span>
-<a name="l00145"></a>00145 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__row__source_8h.html b/doc/doxygen/html/matrix__solve__row__row__source_8h.html
deleted file mode 100644
index a829b27..0000000
--- a/doc/doxygen/html/matrix__solve__row__row__source_8h.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__solve__row__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">matrix_solve_row_row_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">matrix_solve_row_row_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">matrix_solve_row_row_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">matrix_solve_row_row_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">matrix_solve_row_row_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">matrix_solve_row_row_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">matrix_solve_row_row_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">matrix_solve_row_row_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">matrix_solve_row_row_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">matrix_solve_row_row_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">matrix_solve_row_row_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">matrix_solve_row_row_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">matrix_solve_row_row_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">matrix_solve_row_row_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">matrix_solve_row_row_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">matrix_solve_row_row_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__row__source_8h_source.html b/doc/doxygen/html/matrix__solve__row__row__source_8h_source.html
deleted file mode 100644
index 2a8b402..0000000
--- a/doc/doxygen/html/matrix__solve__row__row__source_8h_source.html
+++ /dev/null
@@ -1,522 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__row__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_ROW_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_ROW_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">matrix_solve_row_row_align1_upper_trans_solve</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void upper_trans_solve(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"{ \n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"  { \n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"   }\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"}\n"</span>
-<a name="l00039"></a>00039 ; <span class="comment">//matrix_solve_row_row_align1_upper_trans_solve</span>
-<a name="l00040"></a>00040 
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">00041</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">matrix_solve_row_row_align1_trans_upper_trans_solve</a> = 
-<a name="l00042"></a>00042 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"__kernel void trans_upper_trans_solve(\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"{ \n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"  { \n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"   }\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_solve_row_row_align1_trans_upper_trans_solve</span>
-<a name="l00071"></a>00071 
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">matrix_solve_row_row_align1_unit_lower_solve</a> = 
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void unit_lower_solve(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"{ \n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"  { \n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">"   }\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"}\n"</span>
-<a name="l00098"></a>00098 ; <span class="comment">//matrix_solve_row_row_align1_unit_lower_solve</span>
-<a name="l00099"></a>00099 
-<a name="l00100"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">00100</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">matrix_solve_row_row_align1_trans_unit_upper_trans_solve</a> = 
-<a name="l00101"></a>00101 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"__kernel void trans_unit_upper_trans_solve(\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"{ \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"  { \n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"   }\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"}\n"</span>
-<a name="l00126"></a>00126 ; <span class="comment">//matrix_solve_row_row_align1_trans_unit_upper_trans_solve</span>
-<a name="l00127"></a>00127 
-<a name="l00128"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">00128</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">matrix_solve_row_row_align1_trans_upper_solve</a> = 
-<a name="l00129"></a>00129 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">"__kernel void trans_upper_solve(\n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"{ \n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">"  { \n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"   }\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"}\n"</span>
-<a name="l00157"></a>00157 ; <span class="comment">//matrix_solve_row_row_align1_trans_upper_solve</span>
-<a name="l00158"></a>00158 
-<a name="l00159"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">00159</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">matrix_solve_row_row_align1_unit_lower_trans_solve</a> = 
-<a name="l00160"></a>00160 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"__kernel void unit_lower_trans_solve(\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"{ \n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"  { \n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"   }\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"}\n"</span>
-<a name="l00185"></a>00185 ; <span class="comment">//matrix_solve_row_row_align1_unit_lower_trans_solve</span>
-<a name="l00186"></a>00186 
-<a name="l00187"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">00187</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">matrix_solve_row_row_align1_trans_unit_upper_solve</a> = 
-<a name="l00188"></a>00188 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"__kernel void trans_unit_upper_solve(\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"{ \n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"  { \n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"   }\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"}\n"</span>
-<a name="l00213"></a>00213 ; <span class="comment">//matrix_solve_row_row_align1_trans_unit_upper_solve</span>
-<a name="l00214"></a>00214 
-<a name="l00215"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">00215</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">matrix_solve_row_row_align1_trans_unit_lower_trans_solve</a> = 
-<a name="l00216"></a>00216 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"__kernel void trans_unit_lower_trans_solve(\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"{ \n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"  { \n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"   }\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"}\n"</span>
-<a name="l00241"></a>00241 ; <span class="comment">//matrix_solve_row_row_align1_trans_unit_lower_trans_solve</span>
-<a name="l00242"></a>00242 
-<a name="l00243"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">00243</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">matrix_solve_row_row_align1_lower_trans_solve</a> = 
-<a name="l00244"></a>00244 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"__kernel void lower_trans_solve(\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">"{ \n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">"  { \n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">"   }\n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">"}\n"</span>
-<a name="l00272"></a>00272 ; <span class="comment">//matrix_solve_row_row_align1_lower_trans_solve</span>
-<a name="l00273"></a>00273 
-<a name="l00274"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">00274</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">matrix_solve_row_row_align1_upper_solve</a> = 
-<a name="l00275"></a>00275 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">"__kernel void upper_solve(\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00283"></a>00283 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00284"></a>00284 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">"{ \n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">"  { \n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00294"></a>00294 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00295"></a>00295 <span class="stringliteral">"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">"   }\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">"}\n"</span>
-<a name="l00303"></a>00303 ; <span class="comment">//matrix_solve_row_row_align1_upper_solve</span>
-<a name="l00304"></a>00304 
-<a name="l00305"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">00305</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">matrix_solve_row_row_align1_trans_lower_trans_solve</a> = 
-<a name="l00306"></a>00306 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">"__kernel void trans_lower_trans_solve(\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">"{ \n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">"  { \n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">"   }\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">"}\n"</span>
-<a name="l00334"></a>00334 ; <span class="comment">//matrix_solve_row_row_align1_trans_lower_trans_solve</span>
-<a name="l00335"></a>00335 
-<a name="l00336"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">00336</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">matrix_solve_row_row_align1_lower_solve</a> = 
-<a name="l00337"></a>00337 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00340"></a>00340 <span class="stringliteral">"__kernel void lower_solve(\n"</span>
-<a name="l00341"></a>00341 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00351"></a>00351 <span class="stringliteral">"{ \n"</span>
-<a name="l00352"></a>00352 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00353"></a>00353 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00354"></a>00354 <span class="stringliteral">"  { \n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00361"></a>00361 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00362"></a>00362 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00363"></a>00363 <span class="stringliteral">"   }\n"</span>
-<a name="l00364"></a>00364 <span class="stringliteral">"}\n"</span>
-<a name="l00365"></a>00365 ; <span class="comment">//matrix_solve_row_row_align1_lower_solve</span>
-<a name="l00366"></a>00366 
-<a name="l00367"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">00367</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">matrix_solve_row_row_align1_trans_lower_solve</a> = 
-<a name="l00368"></a>00368 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">"__kernel void trans_lower_solve(\n"</span>
-<a name="l00372"></a>00372 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00373"></a>00373 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00374"></a>00374 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00375"></a>00375 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">"{ \n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00385"></a>00385 <span class="stringliteral">"  { \n"</span>
-<a name="l00386"></a>00386 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00387"></a>00387 <span class="stringliteral">"    if (get_local_id(0) == 0) \n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">"   }\n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">"}\n"</span>
-<a name="l00396"></a>00396 ; <span class="comment">//matrix_solve_row_row_align1_trans_lower_solve</span>
-<a name="l00397"></a>00397 
-<a name="l00398"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">00398</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">matrix_solve_row_row_align1_unit_upper_trans_solve</a> = 
-<a name="l00399"></a>00399 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">"__kernel void unit_upper_trans_solve(\n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00410"></a>00410 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00411"></a>00411 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00412"></a>00412 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00413"></a>00413 <span class="stringliteral">"{ \n"</span>
-<a name="l00414"></a>00414 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00415"></a>00415 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00416"></a>00416 <span class="stringliteral">"  { \n"</span>
-<a name="l00417"></a>00417 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00418"></a>00418 <span class="stringliteral">"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00419"></a>00419 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00420"></a>00420 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00421"></a>00421 <span class="stringliteral">"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00422"></a>00422 <span class="stringliteral">"   }\n"</span>
-<a name="l00423"></a>00423 <span class="stringliteral">"}\n"</span>
-<a name="l00424"></a>00424 ; <span class="comment">//matrix_solve_row_row_align1_unit_upper_trans_solve</span>
-<a name="l00425"></a>00425 
-<a name="l00426"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">00426</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">matrix_solve_row_row_align1_unit_upper_solve</a> = 
-<a name="l00427"></a>00427 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00428"></a>00428 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00429"></a>00429 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00430"></a>00430 <span class="stringliteral">"__kernel void unit_upper_solve(\n"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00435"></a>00435 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00436"></a>00436 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00437"></a>00437 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00438"></a>00438 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00439"></a>00439 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00440"></a>00440 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00441"></a>00441 <span class="stringliteral">"{ \n"</span>
-<a name="l00442"></a>00442 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00443"></a>00443 <span class="stringliteral">"  for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00444"></a>00444 <span class="stringliteral">"  { \n"</span>
-<a name="l00445"></a>00445 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00446"></a>00446 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00447"></a>00447 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00448"></a>00448 <span class="stringliteral">"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00449"></a>00449 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00450"></a>00450 <span class="stringliteral">"   }\n"</span>
-<a name="l00451"></a>00451 <span class="stringliteral">"}\n"</span>
-<a name="l00452"></a>00452 ; <span class="comment">//matrix_solve_row_row_align1_unit_upper_solve</span>
-<a name="l00453"></a>00453 
-<a name="l00454"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">00454</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">matrix_solve_row_row_align1_trans_unit_lower_solve</a> = 
-<a name="l00455"></a>00455 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00456"></a>00456 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00457"></a>00457 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00458"></a>00458 <span class="stringliteral">"__kernel void trans_unit_lower_solve(\n"</span>
-<a name="l00459"></a>00459 <span class="stringliteral">"          __global const float * A,\n"</span>
-<a name="l00460"></a>00460 <span class="stringliteral">"          unsigned int A_rows,\n"</span>
-<a name="l00461"></a>00461 <span class="stringliteral">"          unsigned int A_cols,\n"</span>
-<a name="l00462"></a>00462 <span class="stringliteral">"          unsigned int A_internal_rows,\n"</span>
-<a name="l00463"></a>00463 <span class="stringliteral">"          unsigned int A_internal_cols,\n"</span>
-<a name="l00464"></a>00464 <span class="stringliteral">"          __global float * B,  \n"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">"          unsigned int B_rows,\n"</span>
-<a name="l00466"></a>00466 <span class="stringliteral">"          unsigned int B_cols,\n"</span>
-<a name="l00467"></a>00467 <span class="stringliteral">"          unsigned int B_internal_rows,\n"</span>
-<a name="l00468"></a>00468 <span class="stringliteral">"          unsigned int B_internal_cols)\n"</span>
-<a name="l00469"></a>00469 <span class="stringliteral">"{ \n"</span>
-<a name="l00470"></a>00470 <span class="stringliteral">"  float temp; \n"</span>
-<a name="l00471"></a>00471 <span class="stringliteral">"  for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00472"></a>00472 <span class="stringliteral">"  { \n"</span>
-<a name="l00473"></a>00473 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00474"></a>00474 <span class="stringliteral">"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00475"></a>00475 <span class="stringliteral">"    //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00476"></a>00476 <span class="stringliteral">"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00477"></a>00477 <span class="stringliteral">"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00478"></a>00478 <span class="stringliteral">"   }\n"</span>
-<a name="l00479"></a>00479 <span class="stringliteral">"}\n"</span>
-<a name="l00480"></a>00480 ; <span class="comment">//matrix_solve_row_row_align1_trans_unit_lower_solve</span>
-<a name="l00481"></a>00481 
-<a name="l00482"></a>00482   }  <span class="comment">//namespace kernels</span>
-<a name="l00483"></a>00483  }  <span class="comment">//namespace linalg</span>
-<a name="l00484"></a>00484 }  <span class="comment">//namespace viennacl</span>
-<a name="l00485"></a>00485 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers.html b/doc/doxygen/html/namespacemembers.html
deleted file mode 100644
index cab7d84..0000000
--- a/doc/doxygen/html/namespacemembers.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f">viennacl::linalg</a>
-</li>
-<li>alignment
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x63.html b/doc/doxygen/html/namespacemembers_0x63.html
deleted file mode 100644
index 8137624..0000000
--- a/doc/doxygen/html/namespacemembers_0x63.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li class="current"><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>clear()
-: <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits</a>
-</li>
-<li>compmat
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">viennacl::io::val</a>
-</li>
-<li>compressed_matrix_align1_bicgstab_kernel1
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_bicgstab_kernel2
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_jacobi_precond
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_lu_backward
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_lu_forward
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_row_scaling_1
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_row_scaling_2
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align4_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align8_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">viennacl::linalg::kernels</a>
-</li>
-<li>compun
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">viennacl::io::tag</a>
-</li>
-<li>coordinate_matrix_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">viennacl::linalg::kernels</a>
-</li>
-<li>copy()
-: <a class="el" href="namespaceviennacl.html#a0b4ced508c064fe8b45f437b538ed2ca">viennacl</a>
-</li>
-<li>current_context()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf">viennacl::ocl</a>
-</li>
-<li>current_device()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5">viennacl::ocl</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x64.html b/doc/doxygen/html/namespacemembers_0x64.html
deleted file mode 100644
index 75ab0ec..0000000
--- a/doc/doxygen/html/namespacemembers_0x64.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li class="current"><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>dbl
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">viennacl::io::val</a>
-</li>
-<li>device
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">viennacl::io::tag</a>
-</li>
-<li>devices
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">viennacl::io::tag</a>
-</li>
-<li>divide()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61">viennacl::linalg</a>
-</li>
-<li>driver
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x65.html b/doc/doxygen/html/namespacemembers_0x65.html
deleted file mode 100644
index 30c9c68..0000000
--- a/doc/doxygen/html/namespacemembers_0x65.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li class="current"><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
-<li>enqueue()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084">viennacl::ocl</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x66.html b/doc/doxygen/html/namespacemembers_0x66.html
deleted file mode 100644
index 75172f2..0000000
--- a/doc/doxygen/html/namespacemembers_0x66.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li class="current"><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fast_copy()
-: <a class="el" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99">viennacl</a>
-</li>
-<li>fast_swap()
-: <a class="el" href="namespaceviennacl.html#a976181b1f6aa698b64a4746f0949fce0">viennacl</a>
-</li>
-<li>fl
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">viennacl::io::val</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x67.html b/doc/doxygen/html/namespacemembers_0x67.html
deleted file mode 100644
index e98f94c..0000000
--- a/doc/doxygen/html/namespacemembers_0x67.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li class="current"><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
-<li>get_kernel()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f">viennacl::ocl</a>
-</li>
-<li>get_queue()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a">viennacl::ocl</a>
-</li>
-<li>globsize
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">viennacl::io::val</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x69.html b/doc/doxygen/html/namespacemembers_0x69.html
deleted file mode 100644
index b0a1a40..0000000
--- a/doc/doxygen/html/namespacemembers_0x69.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li class="current"><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>ilu_inplace_solve()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb">viennacl::linalg</a>
-</li>
-<li>ilu_lu_substitute()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0">viennacl::linalg</a>
-</li>
-<li>ilut_inc_row_iterator_to_row_index()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817">viennacl::linalg</a>
-</li>
-<li>index_norm_inf()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ad87b9ecda483a69e5d5eed36928840da">viennacl::linalg</a>
-</li>
-<li>inner_prod()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg</a>
-</li>
-<li>inner_prod_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b">viennacl::linalg</a>
-</li>
-<li>inplace_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950">viennacl::linalg</a>
-</li>
-<li>inplace_div_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83">viennacl::linalg</a>
-</li>
-<li>inplace_div_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21">viennacl::linalg</a>
-</li>
-<li>inplace_divide()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33">viennacl::linalg</a>
-</li>
-<li>inplace_mul_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7">viennacl::linalg</a>
-</li>
-<li>inplace_mul_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e">viennacl::linalg</a>
-</li>
-<li>inplace_mult()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35">viennacl::linalg</a>
-</li>
-<li>inplace_solve()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aae8acccfb7520c1c75d8bbb10130aa4a">viennacl::linalg</a>
-</li>
-<li>inplace_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a04b2c67e5839525ba813da61fde893ab">viennacl::linalg</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x6b.html b/doc/doxygen/html/namespacemembers_0x6b.html
deleted file mode 100644
index d0e2bd5..0000000
--- a/doc/doxygen/html/namespacemembers_0x6b.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li class="current"><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
-<li>kernel
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">viennacl::io::tag</a>
-</li>
-<li>kernels
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x6c.html b/doc/doxygen/html/namespacemembers_0x6c.html
deleted file mode 100644
index 1fa44dc..0000000
--- a/doc/doxygen/html/namespacemembers_0x6c.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li class="current"><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>locsize
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">viennacl::io::val</a>
-</li>
-<li>lu_factorize()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a2aa3e7727b42bd95f5d1e5dd5366f807">viennacl::linalg</a>
-</li>
-<li>lu_substitute()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a1407e42bdce9d821baaf5d4163a09dd1">viennacl::linalg</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x6d.html b/doc/doxygen/html/namespacemembers_0x6d.html
deleted file mode 100644
index c25735e..0000000
--- a/doc/doxygen/html/namespacemembers_0x6d.html
+++ /dev/null
@@ -1,496 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li class="current"><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
-<li>make_double_kernel()
-: <a class="el" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0">viennacl::tools</a>
-</li>
-<li>matrix
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">viennacl::io::val</a>
-</li>
-<li>matrix_col_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_clear
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_cpu_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_lu_factorize
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_scaled_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_clear
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_cpu_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_lu_factorize
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_scaled_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">viennacl::linalg::kernels</a>
-</li>
-<li>mul_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df">viennacl::linalg</a>
-</li>
-<li>mul_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0bf813502bb4d25ab2613f1575a4fca3">viennacl::linalg</a>
-</li>
-<li>mult()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0">viennacl::linalg</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x6e.html b/doc/doxygen/html/namespacemembers_0x6e.html
deleted file mode 100644
index 8f476ea..0000000
--- a/doc/doxygen/html/namespacemembers_0x6e.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li class="current"><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>name
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">viennacl::io::tag</a>
-</li>
-<li>norm_1()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">viennacl::linalg</a>
-</li>
-<li>norm_1_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30">viennacl::linalg</a>
-</li>
-<li>norm_2()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">viennacl::linalg</a>
-</li>
-<li>norm_2_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a">viennacl::linalg</a>
-</li>
-<li>norm_inf()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aadc500239f2e1967e584b71171cba268">viennacl::linalg</a>
-</li>
-<li>norm_inf_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca">viennacl::linalg</a>
-</li>
-<li>numeric
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x6f.html b/doc/doxygen/html/namespacemembers_0x6f.html
deleted file mode 100644
index 9f0c5e7..0000000
--- a/doc/doxygen/html/namespacemembers_0x6f.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li class="current"><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>operator*()
-: <a class="el" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">viennacl</a>
-</li>
-<li>operator+()
-: <a class="el" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659">viennacl</a>
-</li>
-<li>operator-()
-: <a class="el" href="namespaceviennacl.html#ae00e47f8124b08cbeb8b7fc9ff537081">viennacl</a>
-</li>
-<li>operator/()
-: <a class="el" href="namespaceviennacl.html#a3aeb5b431a9c6d0b3af24a1513e8e9ad">viennacl</a>
-</li>
-<li>operator<<()
-: <a class="el" href="namespaceviennacl.html#ab7b70e43299f65259cc61849f9ad997c">viennacl</a>
-</li>
-<li>operator>>()
-: <a class="el" href="namespaceviennacl.html#ab4ea659d4449111a55f748c34226f305">viennacl</a>
-</li>
-<li>outer_prod()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a1b56d764864ae3d91bb6bac2ae87bec8">viennacl::linalg</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x70.html b/doc/doxygen/html/namespacemembers_0x70.html
deleted file mode 100644
index b2ac6a6..0000000
--- a/doc/doxygen/html/namespacemembers_0x70.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li class="current"><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>param
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">viennacl::io::tag</a>
-</li>
-<li>params
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">viennacl::io::tag</a>
-</li>
-<li>plane_rotation()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a38eb0d2bea8cb4a78253c9fe329000a9">viennacl::linalg</a>
-</li>
-<li>precondition()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578">viennacl::linalg</a>
-</li>
-<li>prod()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#acfb30430740c1e7b8ab2c81aee31878a">viennacl::linalg</a>
-</li>
-<li>prod_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a4f088d9329b8c801492830a519fdef15">viennacl::linalg</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x72.html b/doc/doxygen/html/namespacemembers_0x72.html
deleted file mode 100644
index 39ef63e..0000000
--- a/doc/doxygen/html/namespacemembers_0x72.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li class="current"><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>rank_1_update()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716">viennacl::linalg</a>
-</li>
-<li>read_kernel_parameters()
-: <a class="el" href="namespaceviennacl_1_1io.html#a09e577fc61b06c9d35573ca2bc9b4181">viennacl::io</a>
-</li>
-<li>read_matrix_market_file()
-: <a class="el" href="namespaceviennacl_1_1io.html#a634d5858a6a3e828bb10d12e3c41ccb9">viennacl::io</a>
-</li>
-<li>read_matrix_market_file_impl()
-: <a class="el" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd">viennacl::io</a>
-</li>
-<li>readTextFromFile()
-: <a class="el" href="namespaceviennacl_1_1tools.html#ae0476afc58ea44d5d67ffe7384f59389">viennacl::tools</a>
-</li>
-<li>resize()
-: <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a331bbc1a30fe491fc4416993c336bc06">viennacl::tools::traits</a>
-</li>
-<li>root
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">viennacl::io::tag</a>
-</li>
-<li>roundUpToNextMultiple()
-: <a class="el" href="namespaceviennacl_1_1tools.html#a8422b8f21a3e19bc1dcd4cc3a8447227">viennacl::tools</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x73.html b/doc/doxygen/html/namespacemembers_0x73.html
deleted file mode 100644
index 5b48bf7..0000000
--- a/doc/doxygen/html/namespacemembers_0x73.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li class="current"><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>scalar_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_div
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_div
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_div
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">viennacl::linalg::kernels</a>
-</li>
-<li>scaled_rank_1_update()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85">viennacl::linalg</a>
-</li>
-<li>set_context_device_type()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd">viennacl::ocl</a>
-</li>
-<li>set_kernel_params()
-: <a class="el" href="namespaceviennacl_1_1io.html#a932f77ca6debf7b246b785607a6a291e">viennacl::io</a>
-</li>
-<li>setup_context()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb">viennacl::ocl</a>
-</li>
-<li>size()
-: <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits</a>
-</li>
-<li>solve()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55">viennacl::linalg</a>
-</li>
-<li>strReplace()
-: <a class="el" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8">viennacl::tools</a>
-</li>
-<li>sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aad5f201a0e90a230b4376deb311c019a">viennacl::linalg</a>
-</li>
-<li>swap()
-: <a class="el" href="namespaceviennacl.html#a0c01dfab44c6d3849f7d0eac55539142">viennacl</a>
-</li>
-<li>switch_context()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6">viennacl::ocl</a>
-</li>
-<li>switch_device()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#ac8bcead4c47a372eef33d7d660fa0072">viennacl::ocl</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x74.html b/doc/doxygen/html/namespacemembers_0x74.html
deleted file mode 100644
index 3e90427..0000000
--- a/doc/doxygen/html/namespacemembers_0x74.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li class="current"><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>test
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">viennacl::io::tag</a>
-</li>
-<li>tests
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">viennacl::io::tag</a>
-</li>
-<li>trans()
-: <a class="el" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c">viennacl</a>
-</li>
-<li>trans_prod_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c">viennacl::linalg</a>
-</li>
-<li>tune_impl()
-: <a class="el" href="namespaceviennacl_1_1io.html#a8f1538d0d1d8b463f02416775f9b5160">viennacl::io</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x76.html b/doc/doxygen/html/namespacemembers_0x76.html
deleted file mode 100644
index 5b01f0c..0000000
--- a/doc/doxygen/html/namespacemembers_0x76.html
+++ /dev/null
@@ -1,220 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li class="current"><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
-<li>value
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">viennacl::io::tag</a>
-</li>
-<li>vcl_ptrdiff_t
-: <a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">viennacl</a>
-</li>
-<li>vcl_size_t
-: <a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">viennacl</a>
-</li>
-<li>vec
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">viennacl::io::val</a>
-</li>
-<li>vector_align16_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_cpu_inplace_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_cpu_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_clear
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_diag_precond
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_index_norm_inf
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inner_prod
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_div_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_div_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_mul_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_mul_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_norm_1
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_norm_2
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_norm_inf
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_plane_rotation
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_sqrt_sum
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_sum
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_swap
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_vmax
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_cpu_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_cpu_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_div_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_div_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_mul_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">viennacl::linalg::kernels</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x77.html b/doc/doxygen/html/namespacemembers_0x77.html
deleted file mode 100644
index db88190..0000000
--- a/doc/doxygen/html/namespacemembers_0x77.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
-      <li class="current"><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
-<li>workgrp
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">viennacl::io::tag</a>
-</li>
-<li>write_matrix_market_file()
-: <a class="el" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">viennacl::io</a>
-</li>
-<li>write_matrix_market_file_impl()
-: <a class="el" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">viennacl::io</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_func.html b/doc/doxygen/html/namespacemembers_func.html
deleted file mode 100644
index 5a0ef7d..0000000
--- a/doc/doxygen/html/namespacemembers_func.html
+++ /dev/null
@@ -1,341 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li class="current"><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index_a"><span>a</span></a></li>
-      <li><a href="#index_c"><span>c</span></a></li>
-      <li><a href="#index_d"><span>d</span></a></li>
-      <li><a href="#index_e"><span>e</span></a></li>
-      <li><a href="#index_f"><span>f</span></a></li>
-      <li><a href="#index_g"><span>g</span></a></li>
-      <li><a href="#index_i"><span>i</span></a></li>
-      <li><a href="#index_l"><span>l</span></a></li>
-      <li><a href="#index_m"><span>m</span></a></li>
-      <li><a href="#index_n"><span>n</span></a></li>
-      <li><a href="#index_o"><span>o</span></a></li>
-      <li><a href="#index_p"><span>p</span></a></li>
-      <li><a href="#index_r"><span>r</span></a></li>
-      <li><a href="#index_s"><span>s</span></a></li>
-      <li><a href="#index_t"><span>t</span></a></li>
-      <li><a href="#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>clear()
-: <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits</a>
-</li>
-<li>copy()
-: <a class="el" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0">viennacl</a>
-</li>
-<li>current_context()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf">viennacl::ocl</a>
-</li>
-<li>current_device()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5">viennacl::ocl</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>divide()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
-<li>enqueue()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084">viennacl::ocl</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fast_copy()
-: <a class="el" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99">viennacl</a>
-</li>
-<li>fast_swap()
-: <a class="el" href="namespaceviennacl.html#a976181b1f6aa698b64a4746f0949fce0">viennacl</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
-<li>get_kernel()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f">viennacl::ocl</a>
-</li>
-<li>get_queue()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#aaa732391e632ec192953cc997fa269df">viennacl::ocl</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>ilu_inplace_solve()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb">viennacl::linalg</a>
-</li>
-<li>ilu_lu_substitute()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0">viennacl::linalg</a>
-</li>
-<li>ilut_inc_row_iterator_to_row_index()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817">viennacl::linalg</a>
-</li>
-<li>index_norm_inf()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ad87b9ecda483a69e5d5eed36928840da">viennacl::linalg</a>
-</li>
-<li>inner_prod()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg</a>
-</li>
-<li>inner_prod_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b">viennacl::linalg</a>
-</li>
-<li>inplace_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950">viennacl::linalg</a>
-</li>
-<li>inplace_div_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83">viennacl::linalg</a>
-</li>
-<li>inplace_div_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21">viennacl::linalg</a>
-</li>
-<li>inplace_divide()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33">viennacl::linalg</a>
-</li>
-<li>inplace_mul_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7">viennacl::linalg</a>
-</li>
-<li>inplace_mul_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e">viennacl::linalg</a>
-</li>
-<li>inplace_mult()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35">viennacl::linalg</a>
-</li>
-<li>inplace_solve()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aae8acccfb7520c1c75d8bbb10130aa4a">viennacl::linalg</a>
-</li>
-<li>inplace_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a04b2c67e5839525ba813da61fde893ab">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>lu_factorize()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a2aa3e7727b42bd95f5d1e5dd5366f807">viennacl::linalg</a>
-</li>
-<li>lu_substitute()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a9da85acf3d7f22c869dfd52791a25d55">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
-<li>make_double_kernel()
-: <a class="el" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0">viennacl::tools</a>
-</li>
-<li>mul_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df">viennacl::linalg</a>
-</li>
-<li>mul_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0bf813502bb4d25ab2613f1575a4fca3">viennacl::linalg</a>
-</li>
-<li>mult()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>norm_1()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">viennacl::linalg</a>
-</li>
-<li>norm_1_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30">viennacl::linalg</a>
-</li>
-<li>norm_2()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">viennacl::linalg</a>
-</li>
-<li>norm_2_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a">viennacl::linalg</a>
-</li>
-<li>norm_inf()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aadc500239f2e1967e584b71171cba268">viennacl::linalg</a>
-</li>
-<li>norm_inf_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>operator*()
-: <a class="el" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">viennacl</a>
-</li>
-<li>operator+()
-: <a class="el" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659">viennacl</a>
-</li>
-<li>operator-()
-: <a class="el" href="namespaceviennacl.html#ae00e47f8124b08cbeb8b7fc9ff537081">viennacl</a>
-</li>
-<li>operator/()
-: <a class="el" href="namespaceviennacl.html#a3aeb5b431a9c6d0b3af24a1513e8e9ad">viennacl</a>
-</li>
-<li>operator<<()
-: <a class="el" href="namespaceviennacl.html#ab7b70e43299f65259cc61849f9ad997c">viennacl</a>
-</li>
-<li>operator>>()
-: <a class="el" href="namespaceviennacl.html#ab4ea659d4449111a55f748c34226f305">viennacl</a>
-</li>
-<li>outer_prod()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a1b56d764864ae3d91bb6bac2ae87bec8">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>plane_rotation()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a38eb0d2bea8cb4a78253c9fe329000a9">viennacl::linalg</a>
-</li>
-<li>precondition()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578">viennacl::linalg</a>
-</li>
-<li>prod()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#abe959c83610141222955cfa6c52ed961">viennacl::linalg</a>
-</li>
-<li>prod_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a1294bf672bcc55c62d1622b07b44425e">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>rank_1_update()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716">viennacl::linalg</a>
-</li>
-<li>read_kernel_parameters()
-: <a class="el" href="namespaceviennacl_1_1io.html#a09e577fc61b06c9d35573ca2bc9b4181">viennacl::io</a>
-</li>
-<li>read_matrix_market_file()
-: <a class="el" href="namespaceviennacl_1_1io.html#a634d5858a6a3e828bb10d12e3c41ccb9">viennacl::io</a>
-</li>
-<li>read_matrix_market_file_impl()
-: <a class="el" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd">viennacl::io</a>
-</li>
-<li>readTextFromFile()
-: <a class="el" href="namespaceviennacl_1_1tools.html#ae0476afc58ea44d5d67ffe7384f59389">viennacl::tools</a>
-</li>
-<li>resize()
-: <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">viennacl::tools::traits</a>
-</li>
-<li>roundUpToNextMultiple()
-: <a class="el" href="namespaceviennacl_1_1tools.html#a8422b8f21a3e19bc1dcd4cc3a8447227">viennacl::tools</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>scaled_rank_1_update()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85">viennacl::linalg</a>
-</li>
-<li>set_context_device_type()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd">viennacl::ocl</a>
-</li>
-<li>set_kernel_params()
-: <a class="el" href="namespaceviennacl_1_1io.html#a932f77ca6debf7b246b785607a6a291e">viennacl::io</a>
-</li>
-<li>setup_context()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb">viennacl::ocl</a>
-</li>
-<li>size()
-: <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits</a>
-</li>
-<li>solve()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a9f5cb80858484131ecb73e867b2bf794">viennacl::linalg</a>
-</li>
-<li>strReplace()
-: <a class="el" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8">viennacl::tools</a>
-</li>
-<li>sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e">viennacl::linalg</a>
-</li>
-<li>swap()
-: <a class="el" href="namespaceviennacl.html#a0c01dfab44c6d3849f7d0eac55539142">viennacl</a>
-</li>
-<li>switch_context()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6">viennacl::ocl</a>
-</li>
-<li>switch_device()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#ac8bcead4c47a372eef33d7d660fa0072">viennacl::ocl</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>trans()
-: <a class="el" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c">viennacl</a>
-</li>
-<li>trans_prod_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c">viennacl::linalg</a>
-</li>
-<li>tune_impl()
-: <a class="el" href="namespaceviennacl_1_1io.html#a8f1538d0d1d8b463f02416775f9b5160">viennacl::io</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
-<li>write_matrix_market_file()
-: <a class="el" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">viennacl::io</a>
-</li>
-<li>write_matrix_market_file_impl()
-: <a class="el" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">viennacl::io</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_type.html b/doc/doxygen/html/namespacemembers_type.html
deleted file mode 100644
index 14a53df..0000000
--- a/doc/doxygen/html/namespacemembers_type.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li class="current"><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- <ul>
-<li>vcl_ptrdiff_t
-: <a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">viennacl</a>
-</li>
-<li>vcl_size_t
-: <a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">viennacl</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars.html b/doc/doxygen/html/namespacemembers_vars.html
deleted file mode 100644
index f1b8336..0000000
--- a/doc/doxygen/html/namespacemembers_vars.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>alignment
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x63.html b/doc/doxygen/html/namespacemembers_vars_0x63.html
deleted file mode 100644
index ebe0dbb..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x63.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>compmat
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">viennacl::io::val</a>
-</li>
-<li>compressed_matrix_align1_bicgstab_kernel1
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_bicgstab_kernel2
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_jacobi_precond
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_lu_backward
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_lu_forward
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_row_scaling_1
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_row_scaling_2
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align4_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align8_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">viennacl::linalg::kernels</a>
-</li>
-<li>compun
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">viennacl::io::tag</a>
-</li>
-<li>coordinate_matrix_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">viennacl::linalg::kernels</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x64.html b/doc/doxygen/html/namespacemembers_vars_0x64.html
deleted file mode 100644
index e309057..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x64.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>dbl
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">viennacl::io::val</a>
-</li>
-<li>device
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">viennacl::io::tag</a>
-</li>
-<li>devices
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">viennacl::io::tag</a>
-</li>
-<li>driver
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x66.html b/doc/doxygen/html/namespacemembers_vars_0x66.html
deleted file mode 100644
index 1f1244d..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x66.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fl
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">viennacl::io::val</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x67.html b/doc/doxygen/html/namespacemembers_vars_0x67.html
deleted file mode 100644
index 351f476..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x67.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
-<li>globsize
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">viennacl::io::val</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x6b.html b/doc/doxygen/html/namespacemembers_vars_0x6b.html
deleted file mode 100644
index 5ac5612..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x6b.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
-<li>kernel
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">viennacl::io::tag</a>
-</li>
-<li>kernels
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x6c.html b/doc/doxygen/html/namespacemembers_vars_0x6c.html
deleted file mode 100644
index ba67f65..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x6c.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>locsize
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">viennacl::io::val</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x6d.html b/doc/doxygen/html/namespacemembers_vars_0x6d.html
deleted file mode 100644
index c7df0de..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x6d.html
+++ /dev/null
@@ -1,481 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
-<li>matrix
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">viennacl::io::val</a>
-</li>
-<li>matrix_col_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_clear
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_cpu_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_lu_factorize
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_scaled_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_clear
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_cpu_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_lu_factorize
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_scaled_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">viennacl::linalg::kernels</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x6e.html b/doc/doxygen/html/namespacemembers_vars_0x6e.html
deleted file mode 100644
index 347cfa4..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x6e.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>name
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">viennacl::io::tag</a>
-</li>
-<li>numeric
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x70.html b/doc/doxygen/html/namespacemembers_vars_0x70.html
deleted file mode 100644
index 63687de..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x70.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>param
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">viennacl::io::tag</a>
-</li>
-<li>params
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x72.html b/doc/doxygen/html/namespacemembers_vars_0x72.html
deleted file mode 100644
index 4f9b4f1..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x72.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>root
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x73.html b/doc/doxygen/html/namespacemembers_vars_0x73.html
deleted file mode 100644
index 9fa0904..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x73.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>scalar_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_div
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_div
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_div
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">viennacl::linalg::kernels</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x74.html b/doc/doxygen/html/namespacemembers_vars_0x74.html
deleted file mode 100644
index 063a246..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x74.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>test
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">viennacl::io::tag</a>
-</li>
-<li>tests
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x76.html b/doc/doxygen/html/namespacemembers_vars_0x76.html
deleted file mode 100644
index 5e1a13b..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x76.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
-<li>value
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">viennacl::io::tag</a>
-</li>
-<li>vec
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">viennacl::io::val</a>
-</li>
-<li>vector_align16_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_cpu_inplace_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_cpu_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_clear
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_diag_precond
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_index_norm_inf
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inner_prod
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_div_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_div_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_mul_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_mul_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_norm_1
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_norm_2
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_norm_inf
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_plane_rotation
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_sqrt_sum
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_sum
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_swap
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_vmax
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_cpu_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_cpu_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_div_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_div_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_mul_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">viennacl::linalg::kernels</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x77.html b/doc/doxygen/html/namespacemembers_vars_0x77.html
deleted file mode 100644
index b197966..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x77.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
-      <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs3">
-    <ul class="tablist">
-      <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
-      <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li class="current"><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
- 
-
-<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
-<li>workgrp
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaces.html b/doc/doxygen/html/namespaces.html
deleted file mode 100644
index ec4914f..0000000
--- a/doc/doxygen/html/namespaces.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Namespace Index</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>Namespace List</h1>  </div>
-</div>
-<div class="contents">
-Here is a list of all namespaces with brief descriptions:<table>
-  <tr><td class="indexkey"><a class="el" href="namespaceviennacl.html">viennacl</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html">viennacl::io::tag</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1io_1_1val.html">viennacl::io::val</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1tools_1_1result__of.html">viennacl::tools::result_of</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html">viennacl::tools::traits</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a></td><td class="indexvalue"></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl.html b/doc/doxygen/html/namespaceviennacl.html
deleted file mode 100644
index 6415545..0000000
--- a/doc/doxygen/html/namespaceviennacl.html
+++ /dev/null
@@ -1,2021 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#nested-classes">Data Structures</a> |
-<a href="#typedef-members">Typedefs</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>viennacl Namespace Reference</h1>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html">io</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">tools</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1traits.html">traits</a></td></tr>
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A sparse square matrix in compressed sparse rows format.  <a href="classviennacl_1_1compressed__matrix.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row and column indices and val denotes the entry.  <a href="classviennacl_1_1coordinate__matrix.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__none.html">tag_none</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__stl.html">tag_stl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__mtl4.html">is_mtl4</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a>.  <a href="structviennacl_1_1is__mtl4.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">is_mtl4< viennacl::tag_mtl4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__eigen.html">is_eigen</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a>.  <a href="structviennacl_1_1is__eigen.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">is_eigen< viennacl::tag_eigen ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__ublas.html">is_ublas</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>.  <a href="structviennacl_1_1is__ublas.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">is_ublas< viennacl::tag_ublas ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__stl.html">is_stl</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>.  <a href="structviennacl_1_1is__stl.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">is_stl< viennacl::tag_stl ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__viennacl.html">is_viennacl</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a>.  <a href="structviennacl_1_1is__viennacl.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">is_viennacl< viennacl::tag_viennacl ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__major.html">row_major</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for row-major storage of a dense matrix.  <a href="structviennacl_1_1row__major.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1column__major.html">column_major</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag indicating iteration along increasing row index of a matrix.  <a href="structviennacl_1_1row__iteration.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag indicating iteration along increasing columns index of a matrix.  <a href="structviennacl_1_1col__iteration.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html">matrix</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A dense matrix class.  <a href="classviennacl_1_1matrix.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A proxy for scalar expressions (e.g. from inner vector products).  <a href="classviennacl_1_1scalar__expression.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html">scalar</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type like float or double.  <a href="classviennacl_1_1scalar.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-users of the library.  <a href="classviennacl_1_1entry__proxy.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An expression template class that represents a binary operation that yields a vector.  <a href="classviennacl_1_1vector__expression.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated. VERY SLOW!!  <a href="classviennacl_1_1const__vector__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!  <a href="classviennacl_1_1vector__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html">vector</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::vector.  <a href="classviennacl_1_1vector.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef std::size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">vcl_size_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">vcl_ptrdiff_t</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0">copy</a> (const CPU_MATRIX &cpu_matrix, <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU).  <a href="#a5684964ce1519c88a443aa14be9428f0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a25d1118aadbe1e6cb69b70df35f94763">copy</a> (const std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix, <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix in the std::vector< std::map < > > format to an OpenCL device.  <a href="#a25d1118aadbe1e6cb69b70df35f94763"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a6b202ebcc6108940a59881c42f3d86da">copy</a> (const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the OpenCL device (either GPU or multi-core CPU) to the host.  <a href="#a6b202ebcc6108940a59881c42f3d86da"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a8a0feeb7a31a31f45e1d014512758fe6">copy</a> (const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix, std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from an OpenCL device to the host. The host type is the std::vector< std::map < > > format .  <a href="#a8a0feeb7a31a31f45e1d014512758fe6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a87f711ebb1d8fd6435d31f1841f9cfaf">copy</a> (const CPU_MATRIX &cpu_matrix, <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU).  <a href="#a87f711ebb1d8fd6435d31f1841f9cfaf"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab4fb2cd615454e656202d5d6f1a54483">copy</a> (const std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix, <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix in the std::vector< std::map < > > format to an OpenCL device.  <a href="#ab4fb2cd615454e656202d5d6f1a54483"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab2ea05f107d5ec7f31214a2898ccbe08">copy</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the OpenCL device (either GPU or multi-core CPU) to the host.  <a href="#ab2ea05f107d5ec7f31214a2898ccbe08"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ae1d2b8aa5bf56f7479a66d51713708d2">copy</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix, std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from an OpenCL device to the host. The host type is the std::vector< std::map < > > format .  <a href="#ae1d2b8aa5bf56f7479a66d51713708d2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#afb1db189fa5cd8ee4a8222d8b87f3ab0">copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a>< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory.  <a href="#afb1db189fa5cd8ee4a8222d8b87f3ab0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#af638a30a9dd2001143b4c92072c76d48">copy</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a>< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy (parts of a) GPU vector to another GPU vector.  <a href="#af638a30a9dd2001143b4c92072c76d48"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9164bd549b986f39b035c24a426869b9">copy</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy (parts of a) GPU vector to another GPU vector.  <a href="#a9164bd549b986f39b035c24a426869b9"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#abc6cd55d2644b2c6b5f69cb733fb6f24">operator<<</a> (std::ostream &s, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Prints the matrix. Output is compatible to boost::numeric::ublas.  <a href="#abc6cd55d2644b2c6b5f69cb733fb6f24"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab7b70e43299f65259cc61849f9ad997c">operator<<</a> (std::ostream &s, const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< LHS, RHS, OP > &expr)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Prints the matrix. Output is compatible to boost::numeric::ublas.  <a href="#ab7b70e43299f65259cc61849f9ad997c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, op_trans > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c">trans</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an expression template class representing a transposed matrix.  <a href="#a95013bc545c5642ccfbd8c5ceb3b885c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a4bd43fae5bc2cdd71e384d1794527add">copy</a> (const CPU_MATRIX &cpu_matrix, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU).  <a href="#a4bd43fae5bc2cdd71e384d1794527add"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename A1 , typename A2 , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a376734f00b48e1c773c82eb9290c1f08">copy</a> (const std::vector< std::vector< SCALARTYPE, A1 >, A2 > &cpu_matrix, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense STL-type matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU).  <a href="#a376734f00b48e1c773c82eb9290c1f08"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99">fast_copy</a> (SCALARTYPE *cpu_matrix_begin, SCALARTYPE *cpu_matrix_end, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without temporary. Matrix-Layout on CPU must be equal to the matrix-layout on the GPU.  <a href="#ab917c8f27a8f1cf7b8d6be54989efb99"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0b4ced508c064fe8b45f437b538ed2ca">copy</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU).  <a href="#a0b4ced508c064fe8b45f437b538ed2ca"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename A1 , typename A2 , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a72359f3759c0067ac956d01c36651f9a">copy</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, std::vector< std::vector< SCALARTYPE, A1 >, A2 > &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU).  <a href="#a72359f3759c0067ac956d01c36651f9a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a2fae23064f21ff285672845e82545fd2">fast_copy</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, SCALARTYPE *cpu_matrix_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU).  <a href="#a2fae23064f21ff285672845e82545fd2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_SCALAR , typename SCALARTYPE , unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod >, const SCALARTYPE, <br class="typebreak"/>
-op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator*</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > &proxy, CPU_SCALAR val)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_SCALAR , typename SCALARTYPE , unsigned int VA1, unsigned int VA2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VA1 >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-VA2 >, op_prod >, const <br class="typebreak"/>
-SCALARTYPE, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ae29e41dc09ce774a0082eb52bdcb81e7">operator*</a> (CPU_SCALAR val, <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA1 >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA2 >, op_prod > const &proxy)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a5b3d6b04f0d7dac6aec4342e0b37656e">operator<<</a> (std::ostream &s, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allows to directly print the value of a scalar to an output stream.  <a href="#a5b3d6b04f0d7dac6aec4342e0b37656e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::istream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab4ea659d4449111a55f748c34226f305">operator>></a> (std::istream &s, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allows to directly read a value of a scalar from an input stream.  <a href="#ab4ea659d4449111a55f748c34226f305"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a7953e64a62d2209621a3f4a505dc9f9e">copy</a> (const <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT > &gpu_begin, const <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory.  <a href="#a7953e64a62d2209621a3f4a505dc9f9e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a6713b60b19010992ea611ef7ecd4fdf2">copy</a> (const <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a>< SCALARTYPE, ALIGNMENT > &gpu_begin, const <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a>< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory.  <a href="#a6713b60b19010992ea611ef7ecd4fdf2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#afb5884675d2f3a9ca1a57a3a722aa78a">copy</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > const &gpu_vec, CPUVECTOR &cpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a gpu vector to a cpu vector. Convenience wrapper for viennacl::linalg::copy(gpu_vec.begin(), gpu_vec.end(), cpu_vec.begin());.  <a href="#afb5884675d2f3a9ca1a57a3a722aa78a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9c694a91cf3e54637ed6a05ab7d9ce75">fast_copy</a> (const <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT > &gpu_begin, const <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer of a GPU vector to the CPU. The cpu type is assumed to reside in a linear piece of memory, such as e.g. for std::vector.  <a href="#a9c694a91cf3e54637ed6a05ab7d9ce75"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aad3621936e6071d2777aae22a5f891ec">fast_copy</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > const &gpu_vec, CPUVECTOR &cpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a gpu vector to a cpu vector. Convenience wrapper for viennacl::linalg::fast_copy(gpu_vec.begin(), gpu_vec.end(), cpu_vec.begin());.  <a href="#aad3621936e6071d2777aae22a5f891ec"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a12da6187594db18ae7aa4874e1ad3f1d">copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0d4fd919fa235b1c7dabd0049740e774">copy</a> (const CPUVECTOR &cpu_vec, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &gpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a cpu vector to a gpu vector. Convenience wrapper for viennacl::linalg::copy(cpu_vec.begin(), cpu_vec.end(), gpu_vec.begin());.  <a href="#a0d4fd919fa235b1c7dabd0049740e774"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9250bb8c996f6eab600899146e0cbf26">fast_copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a>< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer of a CPU vector to the GPU. The cpu type is assumed to reside in a linear piece of memory, such as e.g. for std::vector.  <a href="#a9250bb8c996f6eab600899146e0cbf26"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#af7146b5952b3532c74728adc05d4de55">fast_copy</a> (const CPUVECTOR &cpu_vec, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &gpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a cpu vector to a gpu vector. Convenience wrapper for viennacl::linalg::fast_copy(cpu_vec.begin(), cpu_vec.end(), gpu_vec.begin());.  <a href="#af7146b5952b3532c74728adc05d4de55"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ad823fb30fd180da375a1e09d56c0a1b8">copy</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_vec, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT_DEST > &gpu_dest_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a ViennaCL vector to another ViennaCL vector. Convenience wrapper for viennacl::linalg::copy(gpu_src_vec.begin(), gpu_src_vec.end(), gpu_dest_vec.begin());.  <a href="#ad823fb30fd180da375a1e09d56c0a1b8"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a5e572599ddbae8812154538849fa707c">operator<<</a> (std::ostream &s, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Output stream. Output format is ublas compatible.  <a href="#a5e572599ddbae8812154538849fa707c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0c01dfab44c6d3849f7d0eac55539142">swap</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the contents of two vectors, data is copied.  <a href="#a0c01dfab44c6d3849f7d0eac55539142"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a976181b1f6aa698b64a4746f0949fce0">fast_swap</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &v1, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &v2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the content of two vectors by swapping OpenCL handles only, NO data is copied.  <a href="#a976181b1f6aa698b64a4746f0949fce0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A >, const <br class="typebreak"/>
-SCALARTYPE, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aa60d7cda126efd13c3413453606850b7">operator*</a> (SCALARTYPE const &value, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the expression alpha * v1, where alpha is a host scalar (float or double) and v1 is a ViennaCL vector.  <a href="#aa60d7cda126efd13c3413453606850b7"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a3b34a609403378a81c3a2589a5418077">operator*</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &value, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the expression alpha * v1, where alpha is a ViennaCL scalar (float or double) and v1 is a ViennaCL vector.  <a href="#a3b34a609403378a81c3a2589a5418077"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS1 , typename RHS1 , typename OP1 , typename LHS2 , typename RHS2 , typename OP2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS1, RHS1, <br class="typebreak"/>
-OP1 >::VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659">operator+</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS1, RHS1, OP1 > const &proxy1, <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS2, RHS2, OP2 > const &proxy2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the addition of two vector expressions.  <a href="#aae3143a0fbb9e586b489cea90acf6659"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS1 , typename RHS1 , typename OP1 , typename LHS2 , typename RHS2 , typename OP2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS1, RHS1, <br class="typebreak"/>
-OP1 >::VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57">operator-</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS1, RHS1, OP1 > const &proxy1, <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS2, RHS2, OP2 > const &proxy2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the subtraction of two vector expressions.  <a href="#a77d42d098f9212ba53487deb6ddacf57"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A, typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0808ef51d9a2d2e1ecbed3d4b63e159f">operator+</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const &proxy, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the addition of a vector expression from the left, e.g. alpha * vec1 + vec2. Here, alpha * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then added to vec2.  <a href="#a0808ef51d9a2d2e1ecbed3d4b63e159f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A, typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ae00e47f8124b08cbeb8b7fc9ff537081">operator-</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const &proxy, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the subtraction of a vector expression from the left, e.g. alpha * vec1 + vec2. Here, alpha * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then added to vec2.  <a href="#ae00e47f8124b08cbeb8b7fc9ff537081"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a00f47d8ad32713f98c6979c245b88cdb">operator*</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const &proxy, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the multiplication of a vector expression with a scalar from the right, e.g. (beta * vec1) * alpha. Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the right.  <a href="#a00f47d8ad32713f98c6979c245b88cdb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a3aeb5b431a9c6d0b3af24a1513e8e9ad">operator/</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const &proxy, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the division of a vector expression by a scalar from the right, e.g. (beta * vec1) / alpha. Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then divided by alpha.  <a href="#a3aeb5b431a9c6d0b3af24a1513e8e9ad"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a66a24c58d27c6368ac879f4d7cc4cfc9">operator*</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &val, <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the multiplication of a vector expression with a ViennaCL scalar from the left, e.g. alpha * (beta * vec1). Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the left.  <a href="#a66a24c58d27c6368ac879f4d7cc4cfc9"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a4522333fedaf508711a5aa02c47e5c7a">operator*</a> (SCALARTYPE val, <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< LHS, RHS, OP > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the multiplication of a vector expression with a host scalar (float or double) from the left, e.g. alpha * (beta * vec1). Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the left.  <a href="#a4522333fedaf508711a5aa02c47e5c7a"></a><br/></td></tr>
-</table>
-<hr/><h2>Typedef Documentation</h2>
-<a class="anchor" id="aa2aeb075792a4f72abdd84b393d41869"></a><!-- doxytag: member="viennacl::vcl_ptrdiff_t" ref="aa2aeb075792a4f72abdd84b393d41869" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef std::ptrdiff_t <a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">vcl_ptrdiff_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a151281d5407af580310fed77af40f052"></a><!-- doxytag: member="viennacl::vcl_size_t" ref="a151281d5407af580310fed77af40f052" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef std::size_t <a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">vcl_size_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a5684964ce1519c88a443aa14be9428f0"></a><!-- doxytag: member="viennacl::copy" ref="a5684964ce1519c88a443aa14be9428f0" args="(const CPU_MATRIX &cpu_matrix, compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const CPU_MATRIX & </td>
-          <td class="paramname"> <em>cpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">compressed_matrix< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU). </p>
-<p>There are some type requirements on the CPU_MATRIX type (fulfilled by e.g. boost::numeric::ublas):</p>
-<ul>
-<li>.size1() returns the number of rows</li>
-<li>.size2() returns the number of columns</li>
-<li>const_iterator1 is a type definition for an iterator along increasing row indices</li>
-<li>const_iterator2 is a type definition for an iterator along increasing columns indices</li>
-<li>The const_iterator1 type provides an iterator of type const_iterator2 via members .begin() and .end() that iterates along column indices in the current row.</li>
-<li>The types const_iterator1 and const_iterator2 provide members functions .index1() and .index2() that return the current row and column indices respectively.</li>
-<li>Dereferenciation of an object of type const_iterator2 returns the entry.</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> from ViennaCL </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a25d1118aadbe1e6cb69b70df35f94763"></a><!-- doxytag: member="viennacl::copy" ref="a25d1118aadbe1e6cb69b70df35f94763" args="(const std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix, compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const std::vector< std::map< unsigned int, SCALARTYPE > > & </td>
-          <td class="paramname"> <em>cpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">compressed_matrix< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix in the std::vector< std::map < > > format to an OpenCL device. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> from ViennaCL </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a8a0feeb7a31a31f45e1d014512758fe6"></a><!-- doxytag: member="viennacl::copy" ref="a8a0feeb7a31a31f45e1d014512758fe6" args="(const compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const compressed_matrix< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::vector< std::map< unsigned int, SCALARTYPE > > & </td>
-          <td class="paramname"> <em>cpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix from an OpenCL device to the host. The host type is the std::vector< std::map < > > format . </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> from ViennaCL </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae1d2b8aa5bf56f7479a66d51713708d2"></a><!-- doxytag: member="viennacl::copy" ref="ae1d2b8aa5bf56f7479a66d51713708d2" args="(const coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const coordinate_matrix< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::vector< std::map< unsigned int, SCALARTYPE > > & </td>
-          <td class="paramname"> <em>cpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix from an OpenCL device to the host. The host type is the std::vector< std::map < > > format . </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> from ViennaCL </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a376734f00b48e1c773c82eb9290c1f08"></a><!-- doxytag: member="viennacl::copy" ref="a376734f00b48e1c773c82eb9290c1f08" args="(const std::vector< std::vector< SCALARTYPE, A1 >, A2 > &cpu_matrix, matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const std::vector< std::vector< SCALARTYPE, A1 >, A2 > & </td>
-          <td class="paramname"> <em>cpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">matrix< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a dense STL-type matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A dense matrix on the host of type std::vector< std::vector<> >. cpu_matrix[i][j] returns the element in the i-th row and j-th columns (both starting with zero) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad823fb30fd180da375a1e09d56c0a1b8"></a><!-- doxytag: member="viennacl::copy" ref="ad823fb30fd180da375a1e09d56c0a1b8" args="(vector< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_vec, vector< SCALARTYPE, ALIGNMENT_DEST > &gpu_dest_vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">vector< SCALARTYPE, ALIGNMENT_SRC > const & </td>
-          <td class="paramname"> <em>gpu_src_vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, ALIGNMENT_DEST > & </td>
-          <td class="paramname"> <em>gpu_dest_vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Transfer from a ViennaCL vector to another ViennaCL vector. Convenience wrapper for viennacl::linalg::copy(gpu_src_vec.begin(), gpu_src_vec.end(), gpu_dest_vec.begin());. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_src_vec</em> </td><td>A gpu vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_dest_vec</em> </td><td>The cpu vector. Type requirements: Output iterator can be obtained via member function .begin() </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afb1db189fa5cd8ee4a8222d8b87f3ab0"></a><!-- doxytag: member="viennacl::copy" ref="afb1db189fa5cd8ee4a8222d8b87f3ab0" args="(CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void copy </td>
-          <td>(</td>
-          <td class="paramtype">CPU_ITERATOR const & </td>
-          <td class="paramname"> <em>cpu_begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">CPU_ITERATOR const & </td>
-          <td class="paramname"> <em>cpu_end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector_iterator< SCALARTYPE, ALIGNMENT > </td>
-          <td class="paramname"> <em>gpu_begin</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>cpu_begin</em> </td><td>CPU iterator pointing to the beginning of the gpu vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_end</em> </td><td>CPU iterator pointing to the end of the vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_begin</em> </td><td>Output iterator for the gpu vector. The gpu vector must be at least as long as the cpu vector! </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0b4ced508c064fe8b45f437b538ed2ca"></a><!-- doxytag: member="viennacl::copy" ref="a0b4ced508c064fe8b45f437b538ed2ca" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">CPU_MATRIX & </td>
-          <td class="paramname"> <em>cpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A dense memory on the host. Must have at least as many rows and columns as the gpu_matrix! Type requirement: Access to entries via operator() </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a72359f3759c0067ac956d01c36651f9a"></a><!-- doxytag: member="viennacl::copy" ref="a72359f3759c0067ac956d01c36651f9a" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, std::vector< std::vector< SCALARTYPE, A1 >, A2 > &cpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::vector< std::vector< SCALARTYPE, A1 >, A2 > & </td>
-          <td class="paramname"> <em>cpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A dense memory on the host using STL types, typically std::vector< std::vector<> > Must have at least as many rows and columns as the gpu_matrix! Type requirement: Access to entries via operator() </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a87f711ebb1d8fd6435d31f1841f9cfaf"></a><!-- doxytag: member="viennacl::copy" ref="a87f711ebb1d8fd6435d31f1841f9cfaf" args="(const CPU_MATRIX &cpu_matrix, coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const CPU_MATRIX & </td>
-          <td class="paramname"> <em>cpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">coordinate_matrix< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU). </p>
-<p>For the requirements on the CPU_MATRIX type, see the documentation of the function copy(CPU_MATRIX, compressed_matrix<>)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> from ViennaCL </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="af638a30a9dd2001143b4c92072c76d48"></a><!-- doxytag: member="viennacl::copy" ref="af638a30a9dd2001143b4c92072c76d48" args="(const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, vector_iterator< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void copy </td>
-          <td>(</td>
-          <td class="paramtype">const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const & </td>
-          <td class="paramname"> <em>gpu_src_begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const & </td>
-          <td class="paramname"> <em>gpu_src_end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector_iterator< SCALARTYPE, ALIGNMENT_DEST > </td>
-          <td class="paramname"> <em>gpu_dest_begin</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copy (parts of a) GPU vector to another GPU vector. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_src_begin</em> </td><td>GPU iterator pointing to the beginning of the gpu vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_src_end</em> </td><td>GPU iterator pointing to the end of the vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_dest_begin</em> </td><td>Output iterator for the gpu vector. The gpu_dest vector must be at least as long as the gpu_src vector! </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9164bd549b986f39b035c24a426869b9"></a><!-- doxytag: member="viennacl::copy" ref="a9164bd549b986f39b035c24a426869b9" args="(const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, const_vector_iterator< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void copy </td>
-          <td>(</td>
-          <td class="paramtype">const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const & </td>
-          <td class="paramname"> <em>gpu_src_begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const & </td>
-          <td class="paramname"> <em>gpu_src_end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const_vector_iterator< SCALARTYPE, ALIGNMENT_DEST > </td>
-          <td class="paramname"> <em>gpu_dest_begin</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copy (parts of a) GPU vector to another GPU vector. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_src_begin</em> </td><td>GPU iterator pointing to the beginning of the gpu vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_src_end</em> </td><td>GPU iterator pointing to the end of the vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_dest_begin</em> </td><td>Output iterator for the gpu vector. The gpu vector must be at least as long as the cpu vector! </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a6b202ebcc6108940a59881c42f3d86da"></a><!-- doxytag: member="viennacl::copy" ref="a6b202ebcc6108940a59881c42f3d86da" args="(const compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const compressed_matrix< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">CPU_MATRIX & </td>
-          <td class="paramname"> <em>cpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix from the OpenCL device (either GPU or multi-core CPU) to the host. </p>
-<p>There are two type requirements on the CPU_MATRIX type (fulfilled by e.g. boost::numeric::ublas):</p>
-<ul>
-<li>resize(rows, cols) A resize function to bring the matrix into the correct size</li>
-<li>operator(i,j) Write new entries via the parenthesis operator</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> from ViennaCL </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab4fb2cd615454e656202d5d6f1a54483"></a><!-- doxytag: member="viennacl::copy" ref="ab4fb2cd615454e656202d5d6f1a54483" args="(const std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix, coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const std::vector< std::map< unsigned int, SCALARTYPE > > & </td>
-          <td class="paramname"> <em>cpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">coordinate_matrix< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix in the std::vector< std::map < > > format to an OpenCL device. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> from ViennaCL </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a7953e64a62d2209621a3f4a505dc9f9e"></a><!-- doxytag: member="viennacl::copy" ref="a7953e64a62d2209621a3f4a505dc9f9e" args="(const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_begin, const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const const_vector_iterator< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const const_vector_iterator< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">CPU_ITERATOR </td>
-          <td class="paramname"> <em>cpu_begin</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_begin</em> </td><td>GPU constant iterator pointing to the beginning of the gpu vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_end</em> </td><td>GPU constant iterator pointing to the end of the vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_begin</em> </td><td>Output iterator for the cpu vector. The cpu vector must be at least as long as the gpu vector! </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a6713b60b19010992ea611ef7ecd4fdf2"></a><!-- doxytag: member="viennacl::copy" ref="a6713b60b19010992ea611ef7ecd4fdf2" args="(const vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_begin, const vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const vector_iterator< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const vector_iterator< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">CPU_ITERATOR </td>
-          <td class="paramname"> <em>cpu_begin</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_begin</em> </td><td>GPU iterator pointing to the beginning of the gpu vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_end</em> </td><td>GPU iterator pointing to the end of the vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_begin</em> </td><td>Output iterator for the cpu vector. The cpu vector must be at least as long as the gpu vector! </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afb5884675d2f3a9ca1a57a3a722aa78a"></a><!-- doxytag: member="viennacl::copy" ref="afb5884675d2f3a9ca1a57a3a722aa78a" args="(vector< SCALARTYPE, ALIGNMENT > const &gpu_vec, CPUVECTOR &cpu_vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > const & </td>
-          <td class="paramname"> <em>gpu_vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">CPUVECTOR & </td>
-          <td class="paramname"> <em>cpu_vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Transfer from a gpu vector to a cpu vector. Convenience wrapper for viennacl::linalg::copy(gpu_vec.begin(), gpu_vec.end(), cpu_vec.begin());. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_vec</em> </td><td>A gpu vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_vec</em> </td><td>The cpu vector. Type requirements: Output iterator can be obtained via member function .begin() </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0d4fd919fa235b1c7dabd0049740e774"></a><!-- doxytag: member="viennacl::copy" ref="a0d4fd919fa235b1c7dabd0049740e774" args="(const CPUVECTOR &cpu_vec, vector< SCALARTYPE, ALIGNMENT > &gpu_vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const CPUVECTOR & </td>
-          <td class="paramname"> <em>cpu_vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Transfer from a cpu vector to a gpu vector. Convenience wrapper for viennacl::linalg::copy(cpu_vec.begin(), cpu_vec.end(), gpu_vec.begin());. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>cpu_vec</em> </td><td>A cpu vector. Type requirements: Iterator can be obtained via member function .begin() and .end() </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_vec</em> </td><td>The gpu vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab2ea05f107d5ec7f31214a2898ccbe08"></a><!-- doxytag: member="viennacl::copy" ref="ab2ea05f107d5ec7f31214a2898ccbe08" args="(const coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const coordinate_matrix< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">CPU_MATRIX & </td>
-          <td class="paramname"> <em>cpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix from the OpenCL device (either GPU or multi-core CPU) to the host. </p>
-<p>There are two type requirements on the CPU_MATRIX type (fulfilled by e.g. boost::numeric::ublas):</p>
-<ul>
-<li>resize(rows, cols) A resize function to bring the matrix into the correct size</li>
-<li>operator(i,j) Write new entries via the parenthesis operator</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> from ViennaCL </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4bd43fae5bc2cdd71e384d1794527add"></a><!-- doxytag: member="viennacl::copy" ref="a4bd43fae5bc2cdd71e384d1794527add" args="(const CPU_MATRIX &cpu_matrix, matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">const CPU_MATRIX & </td>
-          <td class="paramname"> <em>cpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">matrix< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A dense matrix on the host. Type requirements: .size1() returns number of rows, .size2() returns number of columns. Access to entries via operator() </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a12da6187594db18ae7aa4874e1ad3f1d"></a><!-- doxytag: member="viennacl::copy" ref="a12da6187594db18ae7aa4874e1ad3f1d" args="(CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, const_vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::copy </td>
-          <td>(</td>
-          <td class="paramtype">CPU_ITERATOR const & </td>
-          <td class="paramname"> <em>cpu_begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">CPU_ITERATOR const & </td>
-          <td class="paramname"> <em>cpu_end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const_vector_iterator< SCALARTYPE, ALIGNMENT > </td>
-          <td class="paramname"> <em>gpu_begin</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9250bb8c996f6eab600899146e0cbf26"></a><!-- doxytag: member="viennacl::fast_copy" ref="a9250bb8c996f6eab600899146e0cbf26" args="(CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::fast_copy </td>
-          <td>(</td>
-          <td class="paramtype">CPU_ITERATOR const & </td>
-          <td class="paramname"> <em>cpu_begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">CPU_ITERATOR const & </td>
-          <td class="paramname"> <em>cpu_end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector_iterator< SCALARTYPE, ALIGNMENT > </td>
-          <td class="paramname"> <em>gpu_begin</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>STL-like transfer of a CPU vector to the GPU. The cpu type is assumed to reside in a linear piece of memory, such as e.g. for std::vector. </p>
-<p>This method is faster than the plain <a class="el" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy()</a> function, because entries are directly read from the cpu vector, starting with &(*cpu.begin()). However, keep in mind that the cpu type MUST represent a linear piece of memory, otherwise you will run into undefined behavior.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>cpu_begin</em> </td><td>CPU iterator pointing to the beginning of the cpu vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_end</em> </td><td>CPU iterator pointing to the end of the vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_begin</em> </td><td>Output iterator for the gpu vector. The gpu iterator must be incrementable (cpu_end - cpu_begin) times, otherwise the result is undefined. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="af7146b5952b3532c74728adc05d4de55"></a><!-- doxytag: member="viennacl::fast_copy" ref="af7146b5952b3532c74728adc05d4de55" args="(const CPUVECTOR &cpu_vec, vector< SCALARTYPE, ALIGNMENT > &gpu_vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::fast_copy </td>
-          <td>(</td>
-          <td class="paramtype">const CPUVECTOR & </td>
-          <td class="paramname"> <em>cpu_vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Transfer from a cpu vector to a gpu vector. Convenience wrapper for viennacl::linalg::fast_copy(cpu_vec.begin(), cpu_vec.end(), gpu_vec.begin());. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>cpu_vec</em> </td><td>A cpu vector. Type requirements: Iterator can be obtained via member function .begin() and .end() </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_vec</em> </td><td>The gpu vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab917c8f27a8f1cf7b8d6be54989efb99"></a><!-- doxytag: member="viennacl::fast_copy" ref="ab917c8f27a8f1cf7b8d6be54989efb99" args="(SCALARTYPE *cpu_matrix_begin, SCALARTYPE *cpu_matrix_end, matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::fast_copy </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE * </td>
-          <td class="paramname"> <em>cpu_matrix_begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SCALARTYPE * </td>
-          <td class="paramname"> <em>cpu_matrix_end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">matrix< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without temporary. Matrix-Layout on CPU must be equal to the matrix-layout on the GPU. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix_begin</em> </td><td>Pointer to the first matrix entry. Cf. iterator concept in STL </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix_end</em> </td><td>Pointer past the last matrix entry. Cf. iterator concept in STL </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2fae23064f21ff285672845e82545fd2"></a><!-- doxytag: member="viennacl::fast_copy" ref="a2fae23064f21ff285672845e82545fd2" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, SCALARTYPE *cpu_matrix_begin)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::fast_copy </td>
-          <td>(</td>
-          <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SCALARTYPE * </td>
-          <td class="paramname"> <em>cpu_matrix_begin</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_matrix_begin</em> </td><td>Pointer to the output memory on the CPU. User must ensure that provided memory is large enough. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aad3621936e6071d2777aae22a5f891ec"></a><!-- doxytag: member="viennacl::fast_copy" ref="aad3621936e6071d2777aae22a5f891ec" args="(vector< SCALARTYPE, ALIGNMENT > const &gpu_vec, CPUVECTOR &cpu_vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::fast_copy </td>
-          <td>(</td>
-          <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > const & </td>
-          <td class="paramname"> <em>gpu_vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">CPUVECTOR & </td>
-          <td class="paramname"> <em>cpu_vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Transfer from a gpu vector to a cpu vector. Convenience wrapper for viennacl::linalg::fast_copy(gpu_vec.begin(), gpu_vec.end(), cpu_vec.begin());. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_vec</em> </td><td>A gpu vector. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_vec</em> </td><td>The cpu vector. Type requirements: Output iterator can be obtained via member function .begin() </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9c694a91cf3e54637ed6a05ab7d9ce75"></a><!-- doxytag: member="viennacl::fast_copy" ref="a9c694a91cf3e54637ed6a05ab7d9ce75" args="(const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_begin, const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::fast_copy </td>
-          <td>(</td>
-          <td class="paramtype">const const_vector_iterator< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const const_vector_iterator< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">CPU_ITERATOR </td>
-          <td class="paramname"> <em>cpu_begin</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>STL-like transfer of a GPU vector to the CPU. The cpu type is assumed to reside in a linear piece of memory, such as e.g. for std::vector. </p>
-<p>This method is faster than the plain <a class="el" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy()</a> function, because entries are directly written to the cpu vector, starting with &(*cpu.begin()) However, keep in mind that the cpu type MUST represent a linear piece of memory, otherwise you will run into undefined behavior.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gpu_begin</em> </td><td>GPU iterator pointing to the beginning of the gpu vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_end</em> </td><td>GPU iterator pointing to the end of the vector (STL-like) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cpu_begin</em> </td><td>Output iterator for the cpu vector. The cpu vector must be at least as long as the gpu vector! </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a976181b1f6aa698b64a4746f0949fce0"></a><!-- doxytag: member="viennacl::fast_swap" ref="a976181b1f6aa698b64a4746f0949fce0" args="(vector< SCALARTYPE, ALIGNMENT > &v1, vector< SCALARTYPE, ALIGNMENT > &v2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& viennacl::fast_swap </td>
-          <td>(</td>
-          <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>v1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>v2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Swaps the content of two vectors by swapping OpenCL handles only, NO data is copied. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>v1</em> </td><td>The first vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>v2</em> </td><td>The second vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4522333fedaf508711a5aa02c47e5c7a"></a><!-- doxytag: member="viennacl::operator*" ref="a4522333fedaf508711a5aa02c47e5c7a" args="(SCALARTYPE val, viennacl::vector_expression< LHS, RHS, OP > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE> viennacl::operator* </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>val</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< LHS, RHS, OP > const & </td>
-          <td class="paramname"> <em>proxy</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the multiplication of a vector expression with a host scalar (float or double) from the left, e.g. alpha * (beta * vec1). Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the left. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>Right hand side scalar </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>Left hand side vector expression </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a00f47d8ad32713f98c6979c245b88cdb"></a><!-- doxytag: member="viennacl::operator*" ref="a00f47d8ad32713f98c6979c245b88cdb" args="(vector_expression< LHS, RHS, OP > const &proxy, scalar< SCALARTYPE > const &val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE> viennacl::operator* </td>
-          <td>(</td>
-          <td class="paramtype">vector_expression< LHS, RHS, OP > const & </td>
-          <td class="paramname"> <em>proxy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the multiplication of a vector expression with a scalar from the right, e.g. (beta * vec1) * alpha. Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the right. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>Left hand side vector expression </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>Right hand side scalar </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aa60d7cda126efd13c3413453606850b7"></a><!-- doxytag: member="viennacl::operator*" ref="aa60d7cda126efd13c3413453606850b7" args="(SCALARTYPE const &value, vector< SCALARTYPE, A > const &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, A>, const SCALARTYPE, op_prod> viennacl::operator* </td>
-          <td>(</td>
-          <td class="paramtype">SCALARTYPE const & </td>
-          <td class="paramname"> <em>value</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, A > const & </td>
-          <td class="paramname"> <em>vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the expression alpha * v1, where alpha is a host scalar (float or double) and v1 is a ViennaCL vector. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>The host scalar (float or double) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>A ViennaCL vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a45c8d32b7d99c62cdb10899d70e7bad9"></a><!-- doxytag: member="viennacl::operator*" ref="a45c8d32b7d99c62cdb10899d70e7bad9" args="(const viennacl::matrix_expression< const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT >, const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > &proxy, CPU_SCALAR val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VECTOR_ALIGNMENT>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VECTOR_ALIGNMENT>, op_prod>, const SCALARTYPE, op_prod> viennacl::operator* </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > & </td>
-          <td class="paramname"> <em>proxy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">CPU_SCALAR </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a3b34a609403378a81c3a2589a5418077"></a><!-- doxytag: member="viennacl::operator*" ref="a3b34a609403378a81c3a2589a5418077" args="(scalar< SCALARTYPE > const &value, vector< SCALARTYPE, A > const &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, A>, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE>, op_prod> viennacl::operator* </td>
-          <td>(</td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>value</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, A > const & </td>
-          <td class="paramname"> <em>vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the expression alpha * v1, where alpha is a ViennaCL scalar (float or double) and v1 is a ViennaCL vector. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>The ViennaCL scalar </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>A ViennaCL vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae29e41dc09ce774a0082eb52bdcb81e7"></a><!-- doxytag: member="viennacl::operator*" ref="ae29e41dc09ce774a0082eb52bdcb81e7" args="(CPU_SCALAR val, viennacl::matrix_expression< const viennacl::vector< SCALARTYPE, VA1 >, const viennacl::vector< SCALARTYPE, VA2 >, op_prod > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VA1>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VA2>, op_prod>, const SCALARTYPE, op_prod> viennacl::operator* </td>
-          <td>(</td>
-          <td class="paramtype">CPU_SCALAR </td>
-          <td class="paramname"> <em>val</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA1 >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA2 >, op_prod > const & </td>
-          <td class="paramname"> <em>proxy</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a66a24c58d27c6368ac879f4d7cc4cfc9"></a><!-- doxytag: member="viennacl::operator*" ref="a66a24c58d27c6368ac879f4d7cc4cfc9" args="(scalar< SCALARTYPE > const &val, vector_expression< LHS, RHS, OP > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE> viennacl::operator* </td>
-          <td>(</td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>val</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector_expression< LHS, RHS, OP > const & </td>
-          <td class="paramname"> <em>proxy</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the multiplication of a vector expression with a ViennaCL scalar from the left, e.g. alpha * (beta * vec1). Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the left. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>Right hand side scalar </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>Left hand side vector expression </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0808ef51d9a2d2e1ecbed3d4b63e159f"></a><!-- doxytag: member="viennacl::operator+" ref="a0808ef51d9a2d2e1ecbed3d4b63e159f" args="(vector_expression< LHS, RHS, OP > const &proxy, vector< SCALARTYPE, A > const &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, A> viennacl::operator+ </td>
-          <td>(</td>
-          <td class="paramtype">vector_expression< LHS, RHS, OP > const & </td>
-          <td class="paramname"> <em>proxy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, A > const & </td>
-          <td class="paramname"> <em>vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the addition of a vector expression from the left, e.g. alpha * vec1 + vec2. Here, alpha * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then added to vec2. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>Left hand side vector expression </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>Right hand side vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aae3143a0fbb9e586b489cea90acf6659"></a><!-- doxytag: member="viennacl::operator+" ref="aae3143a0fbb9e586b489cea90acf6659" args="(vector_expression< LHS1, RHS1, OP1 > const &proxy1, vector_expression< LHS2, RHS2, OP2 > const &proxy2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS1, RHS1, OP1>::VectorType viennacl::operator+ </td>
-          <td>(</td>
-          <td class="paramtype">vector_expression< LHS1, RHS1, OP1 > const & </td>
-          <td class="paramname"> <em>proxy1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector_expression< LHS2, RHS2, OP2 > const & </td>
-          <td class="paramname"> <em>proxy2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the addition of two vector expressions. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy1</em> </td><td>Left hand side vector expression </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy2</em> </td><td>Right hand side vector expression </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae00e47f8124b08cbeb8b7fc9ff537081"></a><!-- doxytag: member="viennacl::operator-" ref="ae00e47f8124b08cbeb8b7fc9ff537081" args="(vector_expression< LHS, RHS, OP > const &proxy, vector< SCALARTYPE, A > const &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, A> viennacl::operator- </td>
-          <td>(</td>
-          <td class="paramtype">vector_expression< LHS, RHS, OP > const & </td>
-          <td class="paramname"> <em>proxy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, A > const & </td>
-          <td class="paramname"> <em>vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the subtraction of a vector expression from the left, e.g. alpha * vec1 + vec2. Here, alpha * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then added to vec2. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>Left hand side vector expression </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>Right hand side vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a77d42d098f9212ba53487deb6ddacf57"></a><!-- doxytag: member="viennacl::operator-" ref="a77d42d098f9212ba53487deb6ddacf57" args="(vector_expression< LHS1, RHS1, OP1 > const &proxy1, vector_expression< LHS2, RHS2, OP2 > const &proxy2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS1, RHS1, OP1>::VectorType viennacl::operator- </td>
-          <td>(</td>
-          <td class="paramtype">vector_expression< LHS1, RHS1, OP1 > const & </td>
-          <td class="paramname"> <em>proxy1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector_expression< LHS2, RHS2, OP2 > const & </td>
-          <td class="paramname"> <em>proxy2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the subtraction of two vector expressions. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy1</em> </td><td>Left hand side vector expression </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy2</em> </td><td>Right hand side vector expression </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a3aeb5b431a9c6d0b3af24a1513e8e9ad"></a><!-- doxytag: member="viennacl::operator/" ref="a3aeb5b431a9c6d0b3af24a1513e8e9ad" args="(vector_expression< LHS, RHS, OP > const &proxy, scalar< SCALARTYPE > const &val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE> viennacl::operator/ </td>
-          <td>(</td>
-          <td class="paramtype">vector_expression< LHS, RHS, OP > const & </td>
-          <td class="paramname"> <em>proxy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the division of a vector expression by a scalar from the right, e.g. (beta * vec1) / alpha. Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then divided by alpha. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>Left hand side vector expression </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>Right hand side scalar </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a5e572599ddbae8812154538849fa707c"></a><!-- doxytag: member="viennacl::operator<<" ref="a5e572599ddbae8812154538849fa707c" args="(std::ostream &s, vector< SCALARTYPE, ALIGNMENT > const &val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::ostream& viennacl::operator<< </td>
-          <td>(</td>
-          <td class="paramtype">std::ostream & </td>
-          <td class="paramname"> <em>s</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > const & </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Output stream. Output format is ublas compatible. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>STL output stream </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>The vector that should be printed </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab7b70e43299f65259cc61849f9ad997c"></a><!-- doxytag: member="viennacl::operator<<" ref="ab7b70e43299f65259cc61849f9ad997c" args="(std::ostream &s, const matrix_expression< LHS, RHS, OP > &expr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::ostream& viennacl::operator<< </td>
-          <td>(</td>
-          <td class="paramtype">std::ostream & </td>
-          <td class="paramname"> <em>s</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const matrix_expression< LHS, RHS, OP > & </td>
-          <td class="paramname"> <em>expr</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Prints the matrix. Output is compatible to boost::numeric::ublas. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>STL output stream </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="abc6cd55d2644b2c6b5f69cb733fb6f24"></a><!-- doxytag: member="viennacl::operator<<" ref="abc6cd55d2644b2c6b5f69cb733fb6f24" args="(std::ostream &s, const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::ostream& viennacl::operator<< </td>
-          <td>(</td>
-          <td class="paramtype">std::ostream & </td>
-          <td class="paramname"> <em>s</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Prints the matrix. Output is compatible to boost::numeric::ublas. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>STL output stream </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a5b3d6b04f0d7dac6aec4342e0b37656e"></a><!-- doxytag: member="viennacl::operator<<" ref="a5b3d6b04f0d7dac6aec4342e0b37656e" args="(std::ostream &s, const scalar< SCALARTYPE > &val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::ostream& viennacl::operator<< </td>
-          <td>(</td>
-          <td class="paramtype">std::ostream & </td>
-          <td class="paramname"> <em>s</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const scalar< SCALARTYPE > & </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Allows to directly print the value of a scalar to an output stream. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab4ea659d4449111a55f748c34226f305"></a><!-- doxytag: member="viennacl::operator>>" ref="ab4ea659d4449111a55f748c34226f305" args="(std::istream &s, const scalar< SCALARTYPE > &val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::istream& viennacl::operator>> </td>
-          <td>(</td>
-          <td class="paramtype">std::istream & </td>
-          <td class="paramname"> <em>s</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const scalar< SCALARTYPE > & </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Allows to directly read a value of a scalar from an input stream. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0c01dfab44c6d3849f7d0eac55539142"></a><!-- doxytag: member="viennacl::swap" ref="a0c01dfab44c6d3849f7d0eac55539142" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::swap </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Swaps the contents of two vectors, data is copied. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>NUM_THREADS</em> </td><td>The number of threads per work group </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a95013bc545c5642ccfbd8c5ceb3b885c"></a><!-- doxytag: member="viennacl::trans" ref="a95013bc545c5642ccfbd8c5ceb3b885c" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &mat)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, op_trans> viennacl::trans </td>
-          <td>(</td>
-          <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns an expression template class representing a transposed matrix. </p>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1io.html b/doc/doxygen/html/namespaceviennacl_1_1io.html
deleted file mode 100644
index aa18276..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1io.html
+++ /dev/null
@@ -1,547 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::io Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#nested-classes">Data Structures</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>viennacl::io Namespace Reference</h1>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html">tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html">val</a></td></tr>
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A XML parameter database using PugiXML. Allows to add tests for different devices and the like.  <a href="structviennacl_1_1io_1_1parameter__database.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html">first_letter_of_type</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper meta class that returns the first letter of a particular type (float or double).  <a href="structviennacl_1_1io_1_1first__letter__of__type.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">first_letter_of_type< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">first_letter_of_type< double ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string.html">to_string</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper meta-class that converts a type to a string.  <a href="structviennacl_1_1io_1_1to__string.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">to_string< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">to_string< double ></a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a932f77ca6debf7b246b785607a6a291e">set_kernel_params</a> (std::string program_name, std::string kernel_name, unsigned int glob, unsigned int loc)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VclBasicType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a8f1538d0d1d8b463f02416775f9b5160">tune_impl</a> (<a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a> &paras, std::string parent)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VclBasicType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a09e577fc61b06c9d35573ca2bc9b4181">read_kernel_parameters</a> (std::string filename)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The interface function for reading kernel parameters.  <a href="#a09e577fc61b06c9d35573ca2bc9b4181"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd">read_matrix_market_file_impl</a> (MatrixType &mat, const char *file, long index_base)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a sparse or dense matrix from a file (MatrixMarket format).  <a href="#a220e9ad28f8fd26740c4661ca2bfabdd"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280">read_matrix_market_file</a> (MatrixType &mat, const char *file, long index_base=1)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a sparse matrix from a file (MatrixMarket format).  <a href="#afc8f719833b923e3e33bf29da94f9280"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a634d5858a6a3e828bb10d12e3c41ccb9">read_matrix_market_file</a> (MatrixType &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a9fb88f9c5737bb5e1231782f6f4d6558">read_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > &mat, const char *file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a0540c43b2f513a6c8ea30fb077a08e48">read_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">write_matrix_market_file_impl</a> (MatrixType const &mat, const char *file, long index_base)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">write_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > const &mat, const char *file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a47025d215b1eb3d9e965f2bf772b3534">write_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > const &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a68425e89c32e2e221555411f08e3a271">write_matrix_market_file</a> (MatrixType const &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Writes a sparse matrix to a file (MatrixMarket format).  <a href="#a68425e89c32e2e221555411f08e3a271"></a><br/></td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a09e577fc61b06c9d35573ca2bc9b4181"></a><!-- doxytag: member="viennacl::io::read_kernel_parameters" ref="a09e577fc61b06c9d35573ca2bc9b4181" args="(std::string filename)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::io::read_kernel_parameters </td>
-          <td>(</td>
-          <td class="paramtype">std::string </td>
-          <td class="paramname"> <em>filename</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>The interface function for reading kernel parameters. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>VclBasicType</em> </td><td>The ViennaCL type for which parameters should be read </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>filename</em> </td><td>Relative filename to the XML file where the parameters are located in </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afc8f719833b923e3e33bf29da94f9280"></a><!-- doxytag: member="viennacl::io::read_matrix_market_file" ref="afc8f719833b923e3e33bf29da94f9280" args="(MatrixType &mat, const char *file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">long viennacl::io::read_matrix_market_file </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>file</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Reads a sparse matrix from a file (MatrixMarket format). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix that is to be read (ublas-types and std::vector< std::map <unsigned int, ScalarType> > are supported) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>file</em> </td><td>The filename </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>index_base</em> </td><td>The index base, typically 1 </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>MatrixType</em> </td><td>A generic matrix type. Type requirements: size1() returns number of rows, size2() returns number columns, operator() writes array entries, <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize()</a> allows resizing the matrix. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Returns nonzero if file is read correctly </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a0540c43b2f513a6c8ea30fb077a08e48"></a><!-- doxytag: member="viennacl::io::read_matrix_market_file" ref="a0540c43b2f513a6c8ea30fb077a08e48" args="(std::vector< std::map< unsigned int, ScalarType > > &mat, const std::string &file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">long viennacl::io::read_matrix_market_file </td>
-          <td>(</td>
-          <td class="paramtype">std::vector< std::map< unsigned int, ScalarType > > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"> <em>file</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a634d5858a6a3e828bb10d12e3c41ccb9"></a><!-- doxytag: member="viennacl::io::read_matrix_market_file" ref="a634d5858a6a3e828bb10d12e3c41ccb9" args="(MatrixType &mat, const std::string &file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">long viennacl::io::read_matrix_market_file </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"> <em>file</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9fb88f9c5737bb5e1231782f6f4d6558"></a><!-- doxytag: member="viennacl::io::read_matrix_market_file" ref="a9fb88f9c5737bb5e1231782f6f4d6558" args="(std::vector< std::map< unsigned int, ScalarType > > &mat, const char *file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">long viennacl::io::read_matrix_market_file </td>
-          <td>(</td>
-          <td class="paramtype">std::vector< std::map< unsigned int, ScalarType > > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>file</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a220e9ad28f8fd26740c4661ca2bfabdd"></a><!-- doxytag: member="viennacl::io::read_matrix_market_file_impl" ref="a220e9ad28f8fd26740c4661ca2bfabdd" args="(MatrixType &mat, const char *file, long index_base)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">long viennacl::io::read_matrix_market_file_impl </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>file</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>index_base</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Reads a sparse or dense matrix from a file (MatrixMarket format). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix that is to be read </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>file</em> </td><td>Filename from which the matrix should be read </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>index_base</em> </td><td>The index base, typically 1 </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>MatrixType</em> </td><td>A generic matrix type. Type requirements: size1() returns number of rows, size2() returns number columns, operator() writes array entries, <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize()</a> allows resizing the matrix. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Returns nonzero if file is read correctly </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a932f77ca6debf7b246b785607a6a291e"></a><!-- doxytag: member="viennacl::io::set_kernel_params" ref="a932f77ca6debf7b246b785607a6a291e" args="(std::string program_name, std::string kernel_name, unsigned int glob, unsigned int loc)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::io::set_kernel_params </td>
-          <td>(</td>
-          <td class="paramtype">std::string </td>
-          <td class="paramname"> <em>program_name</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::string </td>
-          <td class="paramname"> <em>kernel_name</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>glob</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>loc</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8f1538d0d1d8b463f02416775f9b5160"></a><!-- doxytag: member="viennacl::io::tune_impl" ref="a8f1538d0d1d8b463f02416775f9b5160" args="(parameter_database &paras, std::string parent)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::io::tune_impl </td>
-          <td>(</td>
-          <td class="paramtype">parameter_database & </td>
-          <td class="paramname"> <em>paras</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::string </td>
-          <td class="paramname"> <em>parent</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a47025d215b1eb3d9e965f2bf772b3534"></a><!-- doxytag: member="viennacl::io::write_matrix_market_file" ref="a47025d215b1eb3d9e965f2bf772b3534" args="(std::vector< std::map< unsigned int, ScalarType > > const &mat, const std::string &file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::io::write_matrix_market_file </td>
-          <td>(</td>
-          <td class="paramtype">std::vector< std::map< unsigned int, ScalarType > > const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"> <em>file</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a68425e89c32e2e221555411f08e3a271"></a><!-- doxytag: member="viennacl::io::write_matrix_market_file" ref="a68425e89c32e2e221555411f08e3a271" args="(MatrixType const &mat, const std::string &file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::io::write_matrix_market_file </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"> <em>file</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Writes a sparse matrix to a file (MatrixMarket format). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix that is to be read (ublas-types and std::vector< std::map <unsigned int, ScalarType> > are supported) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>file</em> </td><td>The filename </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>index_base</em> </td><td>The index base, typically 1 </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>MatrixType</em> </td><td>A generic matrix type. Type requirements: size1() returns number of rows, size2() returns number columns, operator() writes array entries, <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize()</a> allows resizing the matrix. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Returns nonzero if file is read correctly </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a26ec42dba454c66e70a0f8e1d3dafb22"></a><!-- doxytag: member="viennacl::io::write_matrix_market_file" ref="a26ec42dba454c66e70a0f8e1d3dafb22" args="(std::vector< std::map< unsigned int, ScalarType > > const &mat, const char *file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::io::write_matrix_market_file </td>
-          <td>(</td>
-          <td class="paramtype">std::vector< std::map< unsigned int, ScalarType > > const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>file</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab0320189b9a763189eb545a149ad3e80"></a><!-- doxytag: member="viennacl::io::write_matrix_market_file_impl" ref="ab0320189b9a763189eb545a149ad3e80" args="(MatrixType const &mat, const char *file, long index_base)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::io::write_matrix_market_file_impl </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>file</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>index_base</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1io_1_1tag.html b/doc/doxygen/html/namespaceviennacl_1_1io_1_1tag.html
deleted file mode 100644
index c3fc14c..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1io_1_1tag.html
+++ /dev/null
@@ -1,275 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::io::tag Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io_1_1tag.html">tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>viennacl::io::tag Namespace Reference</h1>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">root</a> = "parameters"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a> = "devices"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">device</a> = "device"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">name</a> = "name"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">driver</a> = "driver"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">compun</a> = "computeunits"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">workgrp</a> = "workgroupsize"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">tests</a> = "tests"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">test</a> = "test"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a> = "numeric"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a> = "kernels"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">kernel</a> = "kernel"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">params</a> = "params"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">param</a> = "param"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a> = "value"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a> = "alignment"</td></tr>
-</table>
-<hr/><h2>Variable Documentation</h2>
-<a class="anchor" id="aef11ea0e288acc0b6bb811d451e1cf06"></a><!-- doxytag: member="viennacl::io::tag::alignment" ref="aef11ea0e288acc0b6bb811d451e1cf06" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a> = "alignment"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a27210dcfb83aef14866893875920faa3"></a><!-- doxytag: member="viennacl::io::tag::compun" ref="a27210dcfb83aef14866893875920faa3" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">compun</a> = "computeunits"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5d346a4e5fa3df29a43d150d99c8a02a"></a><!-- doxytag: member="viennacl::io::tag::device" ref="a5d346a4e5fa3df29a43d150d99c8a02a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">device</a> = "device"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af274b669b0724dd97f9ec04775651373"></a><!-- doxytag: member="viennacl::io::tag::devices" ref="af274b669b0724dd97f9ec04775651373" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a> = "devices"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ada10feddb1e7bd109da11d2f991bebca"></a><!-- doxytag: member="viennacl::io::tag::driver" ref="ada10feddb1e7bd109da11d2f991bebca" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">driver</a> = "driver"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a134eb311f34dc46e0244fa7feede956f"></a><!-- doxytag: member="viennacl::io::tag::kernel" ref="a134eb311f34dc46e0244fa7feede956f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">kernel</a> = "kernel"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a92b94ec299d56ace592f942e43471a26"></a><!-- doxytag: member="viennacl::io::tag::kernels" ref="a92b94ec299d56ace592f942e43471a26" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a> = "kernels"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9b45b3e13bd9167aab02e17e08916231"></a><!-- doxytag: member="viennacl::io::tag::name" ref="a9b45b3e13bd9167aab02e17e08916231" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">name</a> = "name"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2518a2ebdcfc0611e13ca2c3d30abf50"></a><!-- doxytag: member="viennacl::io::tag::numeric" ref="a2518a2ebdcfc0611e13ca2c3d30abf50" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a> = "numeric"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad807e325b7c2668c21d5722c68786e11"></a><!-- doxytag: member="viennacl::io::tag::param" ref="ad807e325b7c2668c21d5722c68786e11" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">param</a> = "param"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afce9be5b7c04ea48adf1fc8e1dd2b986"></a><!-- doxytag: member="viennacl::io::tag::params" ref="afce9be5b7c04ea48adf1fc8e1dd2b986" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">params</a> = "params"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a995282f5bd45c83f30f7bbee0890a601"></a><!-- doxytag: member="viennacl::io::tag::root" ref="a995282f5bd45c83f30f7bbee0890a601" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">root</a> = "parameters"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a41e08b881d3a04ae83f67fab698f2f0c"></a><!-- doxytag: member="viennacl::io::tag::test" ref="a41e08b881d3a04ae83f67fab698f2f0c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">test</a> = "test"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af2ed0e13c4914b208ab08c1a3ed8645d"></a><!-- doxytag: member="viennacl::io::tag::tests" ref="af2ed0e13c4914b208ab08c1a3ed8645d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">tests</a> = "tests"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5c33da5929c9f2f9ef8d006d2350e6ec"></a><!-- doxytag: member="viennacl::io::tag::value" ref="a5c33da5929c9f2f9ef8d006d2350e6ec" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a> = "value"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aae94cad455fc94dca1e3a8be940a1d48"></a><!-- doxytag: member="viennacl::io::tag::workgrp" ref="aae94cad455fc94dca1e3a8be940a1d48" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">workgrp</a> = "workgroupsize"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1io_1_1val.html b/doc/doxygen/html/namespaceviennacl_1_1io_1_1val.html
deleted file mode 100644
index 5bc0c9a..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1io_1_1val.html
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::io::val Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io_1_1val.html">val</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>viennacl::io::val Namespace Reference</h1>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">globsize</a> = "globalsize"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">locsize</a> = "localsize"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a> = "vector"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">matrix</a> = "matrix"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">compmat</a> = "compressed_matrix"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">fl</a> = "float"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">dbl</a> = "double"</td></tr>
-</table>
-<hr/><h2>Variable Documentation</h2>
-<a class="anchor" id="ad38083d81cdbc1c065fcc8d19df9c79c"></a><!-- doxytag: member="viennacl::io::val::compmat" ref="ad38083d81cdbc1c065fcc8d19df9c79c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">compmat</a> = "compressed_matrix"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="addc64712fb881ebddb8332add221899e"></a><!-- doxytag: member="viennacl::io::val::dbl" ref="addc64712fb881ebddb8332add221899e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">dbl</a> = "double"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab722d5306000ee3935395ba7ec7e0498"></a><!-- doxytag: member="viennacl::io::val::fl" ref="ab722d5306000ee3935395ba7ec7e0498" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">fl</a> = "float"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a71aafbd3bf9b6effc1ef44a724af3bfa"></a><!-- doxytag: member="viennacl::io::val::globsize" ref="a71aafbd3bf9b6effc1ef44a724af3bfa" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">globsize</a> = "globalsize"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8ceabdecb9321ae870f08e5c2712735a"></a><!-- doxytag: member="viennacl::io::val::locsize" ref="a8ceabdecb9321ae870f08e5c2712735a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">locsize</a> = "localsize"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae3cf8320d226801ab9fc7b23bbb97075"></a><!-- doxytag: member="viennacl::io::val::matrix" ref="ae3cf8320d226801ab9fc7b23bbb97075" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="classviennacl_1_1matrix.html">matrix</a> = "matrix"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a80ef617bc6b5ed136631df552c86911c"></a><!-- doxytag: member="viennacl::io::val::vec" ref="a80ef617bc6b5ed136631df552c86911c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a> = "vector"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1linalg.html b/doc/doxygen/html/namespaceviennacl_1_1linalg.html
deleted file mode 100644
index b51f9e4..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1linalg.html
+++ /dev/null
@@ -1,4272 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::linalg Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#nested-classes">Data Structures</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>viennacl::linalg Namespace Reference</h1>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html">lower_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing a lower triangular matrix.  <a href="structviennacl_1_1linalg_1_1lower__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">upper_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing an upper triangular matrix.  <a href="structviennacl_1_1linalg_1_1upper__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">unit_lower_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing a lower triangular matrix with unit diagonal.  <a href="structviennacl_1_1linalg_1_1unit__lower__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">unit_upper_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing an upper triangular matrix with unit diagonal.  <a href="structviennacl_1_1linalg_1_1unit__upper__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">no_precond</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing the use of no preconditioner.  <a href="classviennacl_1_1linalg_1_1no__precond.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function.  <a href="classviennacl_1_1linalg_1_1bicgstab__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function.  <a href="classviennacl_1_1linalg_1_1cg__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function.  <a href="classviennacl_1_1linalg_1_1gmres__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for incomplete LU factorization with threshold (ILUT).  <a href="classviennacl_1_1linalg_1_1ilut__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  <a href="classviennacl_1_1linalg_1_1ilut__precond.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  <a href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for a jacobi preconditioner.  <a href="classviennacl_1_1linalg_1_1jacobi__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  <a href="classviennacl_1_1linalg_1_1jacobi__precond.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  <a href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for a row preconditioner.  <a href="classviennacl_1_1linalg_1_1row__scaling__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  <a href="classviennacl_1_1linalg_1_1row__scaling.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  <a href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30">norm_1_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the l^1-norm of a vector.  <a href="#a2479f0743a32118e916cca8edb895c30"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a">norm_2_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the l^2-norm of a vector - implementation.  <a href="#a96a2ee028641ffd7b80e6a1bfad34c6a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca">norm_inf_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the supremum-norm of a vector.  <a href="#a43009c5365c78c81463f54c2848378ca"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication.  <a href="#a5e71c3317fe25d0ce5e31be66597d8bb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa965a1bc156b037f57b6a449dde4c7d1">prod_impl</a> (const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#aa965a1bc156b037f57b6a449dde4c7d1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a79ec888c8ac1026f4591179fdd19e0de">prod_impl</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#a79ec888c8ac1026f4591179fdd19e0de"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT1, unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT1 ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT2 ><br class="typebreak"/>
-, viennacl::op_inner_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b">inner_prod_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT1 > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT2 > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product of two vectors.  <a href="#a23fbff833bbc632131b761e732bce72b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afc191e1a26f0c0037e320a3b7dc831cc">inner_prod_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2).  <a href="#afc191e1a26f0c0037e320a3b7dc831cc"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the stabilized Bi-conjugate gradient solver.  <a href="#ab50f87d195eb82ddbe5ce910e914bc55"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7eb0bd2b912aa3c5d83aa4801e7e89fd">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a> const &tag, <a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">viennacl::linalg::no_precond</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType , typename PreconditionerType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#adbcb7f6a46ca520d01f6ce53f83f5069">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a> const &tag, PreconditionerType const &precond)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the preconditioned stabilized Bi-conjugate gradient solver.  <a href="#adbcb7f6a46ca520d01f6ce53f83f5069"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6bc45bf37430c67d6a32ed8e10e77e94">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the conjugate gradient solver without preconditioner.  <a href="#a6bc45bf37430c67d6a32ed8e10e77e94"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a560520300c350a1d8afa44d5c036b48b">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a> const &tag, <a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">viennacl::linalg::no_precond</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType , typename PreconditionerType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#adefd0a97aaeaa8eb75097847443c6ee1">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a> const &tag, PreconditionerType const &precond)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the preconditioned conjugate gradient solver.  <a href="#adefd0a97aaeaa8eb75097847443c6ee1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a469b22e14078bba1451afb09bbd2f7cc">prod_impl</a> (const <a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a>< TYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &result, size_t NUM_THREADS=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>.  <a href="#a469b22e14078bba1451afb09bbd2f7cc"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210">inplace_solve</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT > const &L, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace solution of a lower triangular <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> with unit diagonal. Typically used for LU substitutions.  <a href="#ae927d6abe755d74744ec5ee9bd191210"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6d7d0a974cd68a51c4d5c4b7a16c1d28">solve</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT > const &L, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, const <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a> &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, unit_lower_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#a6d7d0a974cd68a51c4d5c4b7a16c1d28"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aaa3a114636b1b542dfb42f48d2a0200a">inplace_solve</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT > const &U, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace solution of a upper triangular <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. Typically used for LU substitutions.  <a href="#aaa3a114636b1b542dfb42f48d2a0200a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aaa338acd99f7bfac8c0210ab05ecaa09">solve</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT > const &L, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, unit_lower_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#aaa338acd99f7bfac8c0210ab05ecaa09"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7984796b04f748d616d1071b0e70850b">prod_impl</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec, size_t NUM_THREADS)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>.  <a href="#a7984796b04f748d616d1071b0e70850b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afa56b176c5b19331a2fd286cac2f9c92">prod_impl</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< TYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication with a <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>.  <a href="#afa56b176c5b19331a2fd286cac2f9c92"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a18293ef61ad46907177e280d4b1d680a">inplace_solve</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, A1 > &mat, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, A2 > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems.  <a href="#a18293ef61ad46907177e280d4b1d680a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0ec9d2642d98a204f1de4fdad9063c14">inplace_solve</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, A1 > &mat, const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, A2 >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, A2 >, op_trans > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems.  <a href="#a0ec9d2642d98a204f1de4fdad9063c14"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad849b3114b76777bb0162ddf3fe8eba2">inplace_solve</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, A1 >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, A1 >, op_trans > &proxy, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, A2 > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems.  <a href="#ad849b3114b76777bb0162ddf3fe8eba2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aae8acccfb7520c1c75d8bbb10130aa4a">inplace_solve</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, A1 >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, A1 >, op_trans > &proxy, const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, A2 >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, A2 >, op_trans > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems.  <a href="#aae8acccfb7520c1c75d8bbb10130aa4a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1fa59efa7e0a65e6e9c949b441696af1">inplace_solve</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, SOLVERTAG)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a373c29fa2cb02177b1450d36eabeb265">inplace_solve</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems.  <a href="#a373c29fa2cb02177b1450d36eabeb265"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a658f2de0ab6804ebabbc4248adc2d927">solve</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A > &A, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B > &B, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for C = solve(A, B, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#a658f2de0ab6804ebabbc4248adc2d927"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a13d7be38f0fbef200ccbe90d9240e542">solve</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A > &A, const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > &proxy, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for C = solve(A, B^T, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#a13d7be38f0fbef200ccbe90d9240e542"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9f5cb80858484131ecb73e867b2bf794">solve</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(mat, vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#a9f5cb80858484131ecb73e867b2bf794"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aec73c039978029c091e70224bf283ed5">solve</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > &proxy, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B > &B, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), B, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#aec73c039978029c091e70224bf283ed5"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a18da6b35b9790a1acd824dee6a8fb76a">solve</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > &proxy_A, const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > &proxy_B, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#a18da6b35b9790a1acd824dee6a8fb76a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#add76ce64e200f9193156a98a15bf42fd">solve</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>.  <a href="#add76ce64e200f9193156a98a15bf42fd"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2aa3e7727b42bd95f5d1e5dd5366f807">lu_factorize</a> (<a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">LU factorization of a dense matrix.  <a href="#a2aa3e7727b42bd95f5d1e5dd5366f807"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1407e42bdce9d821baaf5d4163a09dd1">lu_substitute</a> (<a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A > const &A, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B > &B)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">LU substitution for the system LU = rhs.  <a href="#a1407e42bdce9d821baaf5d4163a09dd1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9da85acf3d7f22c869dfd52791a25d55">lu_substitute</a> (<a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > const &mat, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">LU substitution for the system LU = rhs.  <a href="#a9da85acf3d7f22c869dfd52791a25d55"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType , typename PreconditionerType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a76b4d001b76edd2253dc7d3a2852b391">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a> const &tag, PreconditionerType const &precond)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the GMRES solver.  <a href="#a76b4d001b76edd2253dc7d3a2852b391"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad590c4eadb76eea1a806c3c4c026ba66">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience overload of the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function using GMRES. Per default, no preconditioner is used.  <a href="#ad590c4eadb76eea1a806c3c4c026ba66"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817">ilut_inc_row_iterator_to_row_index</a> (T &row_iter, unsigned int k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments a row iterator (iteration along increasing row indices) up to a certain row index k.  <a href="#ad81c044903c3d571c5fa1354e94ce817"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a8564080fc80b938370442ac4b9ba748f">ilut_inc_row_iterator_to_row_index</a> (<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">viennacl::tools::sparse_matrix_adapter</a>< ScalarType > &row_iter, unsigned int k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments a row iterator (iteration along increasing row indices) up to a certain row index k.  <a href="#a8564080fc80b938370442ac4b9ba748f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a85b825153bda885996e0e2986854ab77">ilut_inc_row_iterator_to_row_index</a> (<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">viennacl::tools::const_sparse_matrix_adapter</a>< ScalarType > &row_iter, unsigned int k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments a row iterator (iteration along increasing row indices) up to a certain row index k.  <a href="#a85b825153bda885996e0e2986854ab77"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename LUType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578">precondition</a> (MatrixType const &input, LUType &output, <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of a ILU-preconditioner with threshold.  <a href="#aa1642cbf74be37d2ae455606506dc578"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb">ilu_inplace_solve</a> (MatrixType const &mat, VectorType &vec, <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generic inplace solution of a unit lower triangular system.  <a href="#ab0726586b403c9538056414240f973eb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a8160c457245b80c37acc7f3cfcc81a8f">ilu_inplace_solve</a> (MatrixType const &mat, VectorType &vec, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generic inplace solution of a upper triangular system.  <a href="#a8160c457245b80c37acc7f3cfcc81a8f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0">ilu_lu_substitute</a> (MatrixType const &mat, VectorType &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generic LU substitution.  <a href="#afe44b3505a4625dad0b551e648f3aff0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT1 , typename VectorT2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT1::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a> (VectorT1 const &v1, VectorT2 const &v2, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT1 >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment1, unsigned int alignment2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment1 ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment2 ><br class="typebreak"/>
-, viennacl::op_inner_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1348122d27efc695914431a7e9e15718">inner_prod</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment1 > const &vector1, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment2 > const &vector2, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment1 > >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f">add</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat1, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds two dense matrices and writes the result to a third matrix.  <a href="#a2777d6a19ce110ae9df6609f1677be0f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950">inplace_add</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a dense matrix to another.  <a href="#a225d1c31fb7c1dac9f5b94f17ae1f950"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e">sub</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat1, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds two dense matrices and writes the result to a third matrix.  <a href="#a707ace72b7ff8ad1e3a9ff2606567f1e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6">inplace_sub</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a dense matrix to another.  <a href="#ae88903a9ae8dbc3fc47db7f37da326a6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35">inplace_mult</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &result, SCALARTYPE val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplies a dense matrix by a scalar.  <a href="#a0e4c7521b309670969d542805ac87b35"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a4501136a87a9d6294c210628ffcb23d0">inplace_mult</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &result, <a class="el" href="classviennacl_1_1scalar.html">viennacl::scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplies a dense matrix by a scalar.  <a href="#a4501136a87a9d6294c210628ffcb23d0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33">inplace_divide</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &result, <a class="el" href="classviennacl_1_1scalar.html">viennacl::scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplies a dense matrix by a scalar.  <a href="#a6e86b6169a6ff7495734d3eef5d4fd33"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#abbc7f86d9d7e24ff1eae02fe976bc77d">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication.  <a href="#abbc7f86d9d7e24ff1eae02fe976bc77d"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, op_trans >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-VECTOR_ALIGNMENT >, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a4f088d9329b8c801492830a519fdef15">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a transposed matrix.  <a href="#a4f088d9329b8c801492830a519fdef15"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#af8a3b3e7b5421283ccdc96c07ce3c624">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_trans > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Unwraps the transposed matrix proxy and forwards to <a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c" title="Carries out matrix-vector multiplication with a transposed matrix.">trans_prod_impl()</a>.  <a href="#af8a3b3e7b5421283ccdc96c07ce3c624"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c">trans_prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication with a transposed matrix.  <a href="#a0c03a1482aebb921ce45f3b1c933697c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1294bf672bcc55c62d1622b07b44425e">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F1, ALIGNMENT > &A, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F2, ALIGNMENT > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C, int block_size=15)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication.  <a href="#a1294bf672bcc55c62d1622b07b44425e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa03a4515a4033a22afc6f2e9bfad1ed6">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F1, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F1, ALIGNMENT >, op_trans > &A, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F2, ALIGNMENT > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication.  <a href="#aa03a4515a4033a22afc6f2e9bfad1ed6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a07e0985a7c2429067b483238d0ffeb2a">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F1, ALIGNMENT > &A, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F2, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F2, ALIGNMENT >, op_trans > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication.  <a href="#a07e0985a7c2429067b483238d0ffeb2a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a21163d892b2568fa4fa3abe750a5504f">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F1, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F1, ALIGNMENT >, op_trans > &A, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F2, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F2, ALIGNMENT >, op_trans > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication.  <a href="#a21163d892b2568fa4fa3abe750a5504f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int VA1, unsigned int VA2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VA1 >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-VA2 >, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1b56d764864ae3d91bb6bac2ae87bec8">outer_prod</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA1 > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA2 > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class for the operation mat += vec1 * vec2^T, i.e. a rank 1 update.  <a href="#a1b56d764864ae3d91bb6bac2ae87bec8"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716">rank_1_update</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The implementation of the operation mat += vec1 * vec2^T, i.e. a rank 1 update.  <a href="#a90c6aa1f54abd466421ea06bf9b49716"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85">scaled_rank_1_update</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat1, SCALARTYPE val, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update.  <a href="#a46f8f468d8d1d6deec2a4d906f987e85"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">norm_1</a> (VectorT const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, viennacl::op_norm_1 > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ac5e7e99c21b05b4db0e9422d9c9ed181">norm_1</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const &<a class="el" href="classviennacl_1_1vector.html">vector</a>, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a> (VectorT const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, viennacl::op_norm_2 > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a12a0a2106e96f8f1625b6c5bdec90f4c">norm_2</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const &v, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">norm_inf</a> (VectorT const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, viennacl::op_norm_inf > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aadc500239f2e1967e584b71171cba268">norm_inf</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T , typename A1 , typename A2 , typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a07b1f6f849c9950dd557bbf3e38f569d">prod_impl</a> (std::vector< std::vector< T, A1 >, A2 > const &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorT const &<a class="el" href="classviennacl_1_1vector.html">vector</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KEY , typename DATA , typename COMPARE , typename AMAP , typename AVEC , typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a8bb2b3cdaa265974abb81154593357b3">prod_impl</a> (std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > const &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorT const &<a class="el" href="classviennacl_1_1vector.html">vector</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a> (MatrixT const &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorT const &<a class="el" href="classviennacl_1_1vector.html">vector</a>, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename NumericT , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const MatrixT, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< NumericT, <br class="typebreak"/>
-ALIGNMENT >, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#abe959c83610141222955cfa6c52ed961">prod</a> (MatrixT const &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< NumericT, ALIGNMENT > const &<a class="el" href="classviennacl_1_1vector.html">vector</a>, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename NumericT , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const MatrixT, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, <br class="typebreak"/>
-ALIGNMENT >, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a12682dd49c61d3897b1c18e49042c721">prod</a> (MatrixT const &matrix_A, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT > const &matrix_B, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename NumericT , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const MatrixT, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< NumericT, F, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< NumericT, F, ALIGNMENT ><br class="typebreak"/>
-, viennacl::op_trans ><br class="typebreak"/>
-, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#acfb30430740c1e7b8ab2c81aee31878a">prod</a> (MatrixT const &matrix_A, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT >, viennacl::op_trans > &matrix_B, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9ea1aff45c0fb10d62801c9c25c8831e">add</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a9ea1aff45c0fb10d62801c9c25c8831e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aca5f0d1977c4cd4e70cc6af6c91fce86">inplace_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#aca5f0d1977c4cd4e70cc6af6c91fce86"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aad5f201a0e90a230b4376deb311c019a">sub</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#aad5f201a0e90a230b4376deb311c019a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a04b2c67e5839525ba813da61fde893ab">inplace_sub</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a04b2c67e5839525ba813da61fde893ab"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0">mult</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#acae4aaa06516b42063bd44c12e5d56d0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7cefe6d56ec8672118ff744eac103cae">mult</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, SCALARTYPE alpha, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a7cefe6d56ec8672118ff744eac103cae"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#affe330e509b142a9db9004f6a67c4183">inplace_mult</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#affe330e509b142a9db9004f6a67c4183"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2aa5a5587eeadc46ce37159c0429f13e">inplace_mult</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, SCALARTYPE alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a2aa5a5587eeadc46ce37159c0429f13e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61">divide</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a0acf4875161f1193bcda16d33a66ce61"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9dfce56da8c2b9d901800b205fb6b2e2">inplace_divide</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a9dfce56da8c2b9d901800b205fb6b2e2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df">mul_add</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a6047863f8fb097162ffad8b1b847d1df"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a136d1799060f2adc907c8b67371a4134">mul_add</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, SCALARTYPE alpha, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a136d1799060f2adc907c8b67371a4134"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7">inplace_mul_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a7fadfccd4d7dd18f74cbe448302236e7"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aaa53a9e3743e89dd87f5e77d28621a52">inplace_mul_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, SCALARTYPE alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#aaa53a9e3743e89dd87f5e77d28621a52"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0bf813502bb4d25ab2613f1575a4fca3">mul_sub</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a0bf813502bb4d25ab2613f1575a4fca3"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e">inplace_mul_sub</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#ab2cf15c4dcf00b57cf6342492ab8ea8e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83">inplace_div_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace divide-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#abbe5a4f98fb91f55c405aa857af71d83"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21">inplace_div_sub</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace divide-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#aad1b78ccd178079d1c3c503b6810dd21"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">cl_uint </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad87b9ecda483a69e5d5eed36928840da">index_norm_inf</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the index of the first entry that is equal to the supremum-norm in modulus.  <a href="#ad87b9ecda483a69e5d5eed36928840da"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a38eb0d2bea8cb4a78253c9fe329000a9">plane_rotation</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, SCALARTYPE alpha, SCALARTYPE beta)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes a plane rotation of two vectors.  <a href="#a38eb0d2bea8cb4a78253c9fe329000a9"></a><br/></td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a2777d6a19ce110ae9df6609f1677be0f"></a><!-- doxytag: member="viennacl::linalg::add" ref="a2777d6a19ce110ae9df6609f1677be0f" args="(const viennacl::matrix< TYPE, F, ALIGNMENT > &mat1, const viennacl::matrix< TYPE, F, ALIGNMENT > &mat2, viennacl::matrix< TYPE, F, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::add </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds two dense matrices and writes the result to a third matrix. </p>
-<p>This is the implementation of the convenience expression result = mat1 + mat2;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9ea1aff45c0fb10d62801c9c25c8831e"></a><!-- doxytag: member="viennacl::linalg::add" ref="a9ea1aff45c0fb10d62801c9c25c8831e" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::add </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first addend. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second addend. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0acf4875161f1193bcda16d33a66ce61"></a><!-- doxytag: member="viennacl::linalg::divide" ref="a0acf4875161f1193bcda16d33a66ce61" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::divide </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>alpha</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result = vec / alpha, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector to be scaled. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The (inverse) scaling factor. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a8160c457245b80c37acc7f3cfcc81a8f"></a><!-- doxytag: member="viennacl::linalg::ilu_inplace_solve" ref="a8160c457245b80c37acc7f3cfcc81a8f" args="(MatrixType const &mat, VectorType &vec, viennacl::linalg::upper_tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::ilu_inplace_solve </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorType & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a> </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Generic inplace solution of a upper triangular system. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The right hand side vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab0726586b403c9538056414240f973eb"></a><!-- doxytag: member="viennacl::linalg::ilu_inplace_solve" ref="ab0726586b403c9538056414240f973eb" args="(MatrixType const &mat, VectorType &vec, viennacl::linalg::unit_lower_tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::ilu_inplace_solve </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorType & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a> </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Generic inplace solution of a unit lower triangular system. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The right hand side vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afe44b3505a4625dad0b551e648f3aff0"></a><!-- doxytag: member="viennacl::linalg::ilu_lu_substitute" ref="afe44b3505a4625dad0b551e648f3aff0" args="(MatrixType const &mat, VectorType &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::ilu_lu_substitute </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorType & </td>
-          <td class="paramname"> <em>vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Generic LU substitution. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The right hand side vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a85b825153bda885996e0e2986854ab77"></a><!-- doxytag: member="viennacl::linalg::ilut_inc_row_iterator_to_row_index" ref="a85b825153bda885996e0e2986854ab77" args="(viennacl::tools::const_sparse_matrix_adapter< ScalarType > &row_iter, unsigned int k)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::ilut_inc_row_iterator_to_row_index </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">viennacl::tools::const_sparse_matrix_adapter</a>< ScalarType > & </td>
-          <td class="paramname"> <em>row_iter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>k</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Increments a row iterator (iteration along increasing row indices) up to a certain row index k. </p>
-<p>Specialization for the const sparse matrix adapter shipped with ViennaCL</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>row_iter</em> </td><td>The row iterator </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>k</em> </td><td>The final row index </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad81c044903c3d571c5fa1354e94ce817"></a><!-- doxytag: member="viennacl::linalg::ilut_inc_row_iterator_to_row_index" ref="ad81c044903c3d571c5fa1354e94ce817" args="(T &row_iter, unsigned int k)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::ilut_inc_row_iterator_to_row_index </td>
-          <td>(</td>
-          <td class="paramtype">T & </td>
-          <td class="paramname"> <em>row_iter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>k</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Increments a row iterator (iteration along increasing row indices) up to a certain row index k. </p>
-<p>Generic implementation using the iterator concept from boost::numeric::ublas. Could not find a better way for sparse matrices...</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>row_iter</em> </td><td>The row iterator </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>k</em> </td><td>The final row index </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a8564080fc80b938370442ac4b9ba748f"></a><!-- doxytag: member="viennacl::linalg::ilut_inc_row_iterator_to_row_index" ref="a8564080fc80b938370442ac4b9ba748f" args="(viennacl::tools::sparse_matrix_adapter< ScalarType > &row_iter, unsigned int k)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::ilut_inc_row_iterator_to_row_index </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">viennacl::tools::sparse_matrix_adapter</a>< ScalarType > & </td>
-          <td class="paramname"> <em>row_iter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>k</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Increments a row iterator (iteration along increasing row indices) up to a certain row index k. </p>
-<p>Specialization for the sparse matrix adapter shipped with ViennaCL</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>row_iter</em> </td><td>The row iterator </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>k</em> </td><td>The final row index </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad87b9ecda483a69e5d5eed36928840da"></a><!-- doxytag: member="viennacl::linalg::index_norm_inf" ref="ad87b9ecda483a69e5d5eed36928840da" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vcl_vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">cl_uint viennacl::linalg::index_norm_inf </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vcl_vec</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Computes the index of the first entry that is equal to the supremum-norm in modulus. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vcl_vec</em> </td><td>The vector </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result. Note that the result must be a CPU scalar (unsigned int), since gpu scalars are floating point types. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ae45d23e88210e06b69cd9fdc871f3dc9"></a><!-- doxytag: member="viennacl::linalg::inner_prod" ref="ae45d23e88210e06b69cd9fdc871f3dc9" args="(VectorT1 const &v1, VectorT2 const &v2, typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT1 >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorT1::value_type viennacl::linalg::inner_prod </td>
-          <td>(</td>
-          <td class="paramtype">VectorT1 const & </td>
-          <td class="paramname"> <em>v1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorT2 const & </td>
-          <td class="paramname"> <em>v2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT1 >::type >::value >::type * </td>
-          <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1348122d27efc695914431a7e9e15718"></a><!-- doxytag: member="viennacl::linalg::inner_prod" ref="a1348122d27efc695914431a7e9e15718" args="(viennacl::vector< ScalarType, alignment1 > const &vector1, viennacl::vector< ScalarType, alignment2 > const &vector2, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector< ScalarType, alignment1 > >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment1>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment2>, viennacl::op_inner_prod > viennacl::linalg::inner_prod </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment1 > const & </td>
-          <td class="paramname"> <em>vector1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment2 > const & </td>
-          <td class="paramname"> <em>vector2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment1 > >::type >::value >::type * </td>
-          <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afc191e1a26f0c0037e320a3b7dc831cc"></a><!-- doxytag: member="viennacl::linalg::inner_prod_impl" ref="afc191e1a26f0c0037e320a3b7dc831cc" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void inner_prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result scalar (on the gpu) </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a23fbff833bbc632131b761e732bce72b"></a><!-- doxytag: member="viennacl::linalg::inner_prod_impl" ref="a23fbff833bbc632131b761e732bce72b" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT1 > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT2 > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT1 >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT2 >, viennacl::op_inner_prod > inner_prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT1 > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT2 > & </td>
-          <td class="paramname"> <em>vec2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Computes the inner product of two vectors. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="aca5f0d1977c4cd4e70cc6af6c91fce86"></a><!-- doxytag: member="viennacl::linalg::inplace_add" ref="aca5f0d1977c4cd4e70cc6af6c91fce86" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_add </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 += vec2.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The result. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The addend </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a225d1c31fb7c1dac9f5b94f17ae1f950"></a><!-- doxytag: member="viennacl::linalg::inplace_add" ref="a225d1c31fb7c1dac9f5b94f17ae1f950" args="(viennacl::matrix< TYPE, F, ALIGNMENT > &result, const viennacl::matrix< TYPE, F, ALIGNMENT > &mat2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_add </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a dense matrix to another. </p>
-<p>This is the implementation of the convenience expression result += mat1;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="abbe5a4f98fb91f55c405aa857af71d83"></a><!-- doxytag: member="viennacl::linalg::inplace_div_add" ref="abbe5a4f98fb91f55c405aa857af71d83" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_div_add </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>alpha</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace divide-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 += vec2 / alpha, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The vector update </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the second vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aad1b78ccd178079d1c3c503b6810dd21"></a><!-- doxytag: member="viennacl::linalg::inplace_div_sub" ref="aad1b78ccd178079d1c3c503b6810dd21" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_div_sub </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>alpha</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace divide-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 -= vec2 / alpha, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The vector update </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the second vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9dfce56da8c2b9d901800b205fb6b2e2"></a><!-- doxytag: member="viennacl::linalg::inplace_divide" ref="a9dfce56da8c2b9d901800b205fb6b2e2" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_divide </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>alpha</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result *= alpha, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector to be scaled. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The (inverse) scaling factor. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a6e86b6169a6ff7495734d3eef5d4fd33"></a><!-- doxytag: member="viennacl::linalg::inplace_divide" ref="a6e86b6169a6ff7495734d3eef5d4fd33" args="(viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &result, viennacl::scalar< SCALARTYPE > const &val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_divide </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">viennacl::scalar</a>< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Multiplies a dense matrix by a scalar. </p>
-<p>This is the implementation of the convenience expression result += mat1;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a7fadfccd4d7dd18f74cbe448302236e7"></a><!-- doxytag: member="viennacl::linalg::inplace_mul_add" ref="a7fadfccd4d7dd18f74cbe448302236e7" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_mul_add </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>alpha</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 += alpha * vec2, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first added </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the first addend. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second added. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aaa53a9e3743e89dd87f5e77d28621a52"></a><!-- doxytag: member="viennacl::linalg::inplace_mul_add" ref="aaa53a9e3743e89dd87f5e77d28621a52" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, SCALARTYPE alpha)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_mul_add </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>alpha</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 += alpha * vec2, where alpha is a cpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first added </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second added. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the first addend. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab2cf15c4dcf00b57cf6342492ab8ea8e"></a><!-- doxytag: member="viennacl::linalg::inplace_mul_sub" ref="ab2cf15c4dcf00b57cf6342492ab8ea8e" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_mul_sub </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>alpha</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 -= alpha * vec2, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The result vector which is updated </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second operand. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the vector update. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="affe330e509b142a9db9004f6a67c4183"></a><!-- doxytag: member="viennacl::linalg::inplace_mult" ref="affe330e509b142a9db9004f6a67c4183" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_mult </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>alpha</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result *= alpha, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector to be scaled. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2aa5a5587eeadc46ce37159c0429f13e"></a><!-- doxytag: member="viennacl::linalg::inplace_mult" ref="a2aa5a5587eeadc46ce37159c0429f13e" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec, SCALARTYPE alpha)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_mult </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>alpha</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result *= alpha, where alpha is a cpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector to be scaled. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4501136a87a9d6294c210628ffcb23d0"></a><!-- doxytag: member="viennacl::linalg::inplace_mult" ref="a4501136a87a9d6294c210628ffcb23d0" args="(viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &result, viennacl::scalar< SCALARTYPE > const &val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_mult </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">viennacl::scalar</a>< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Multiplies a dense matrix by a scalar. </p>
-<p>This is the implementation of the convenience expression result += mat1;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0e4c7521b309670969d542805ac87b35"></a><!-- doxytag: member="viennacl::linalg::inplace_mult" ref="a0e4c7521b309670969d542805ac87b35" args="(viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &result, SCALARTYPE val)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_mult </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Multiplies a dense matrix by a scalar. </p>
-<p>This is the implementation of the convenience expression result += mat1;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae927d6abe755d74744ec5ee9bd191210"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="ae927d6abe755d74744ec5ee9bd191210" args="(compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &L, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, viennacl::linalg::unit_lower_tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_solve </td>
-          <td>(</td>
-          <td class="paramtype">compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const & </td>
-          <td class="paramname"> <em>L</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a> </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace solution of a lower triangular <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> with unit diagonal. Typically used for LU substitutions. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>L</em> </td><td>The matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aaa3a114636b1b542dfb42f48d2a0200a"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="aaa3a114636b1b542dfb42f48d2a0200a" args="(compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &U, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, viennacl::linalg::upper_tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_solve </td>
-          <td>(</td>
-          <td class="paramtype">compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const & </td>
-          <td class="paramname"> <em>U</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a> </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace solution of a upper triangular <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. Typically used for LU substitutions. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>U</em> </td><td>The upper triangular matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a18293ef61ad46907177e280d4b1d680a"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="a18293ef61ad46907177e280d4b1d680a" args="(const matrix< SCALARTYPE, F1, A1 > &mat, matrix< SCALARTYPE, F2, A2 > &B, SOLVERTAG)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_solve </td>
-          <td>(</td>
-          <td class="paramtype">const matrix< SCALARTYPE, F1, A1 > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">matrix< SCALARTYPE, F2, A2 > & </td>
-          <td class="paramname"> <em>B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SOLVERTAG </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Direct inplace solver for dense upper triangular systems. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The matrix of row vectors, where the solution is directly written to </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0ec9d2642d98a204f1de4fdad9063c14"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="a0ec9d2642d98a204f1de4fdad9063c14" args="(const matrix< SCALARTYPE, F1, A1 > &mat, const matrix_expression< const matrix< SCALARTYPE, F2, A2 >, const matrix< SCALARTYPE, F2, A2 >, op_trans > &B, SOLVERTAG)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_solve </td>
-          <td>(</td>
-          <td class="paramtype">const matrix< SCALARTYPE, F1, A1 > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F2, A2 >, const matrix< SCALARTYPE, F2, A2 >, op_trans > & </td>
-          <td class="paramname"> <em>B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SOLVERTAG </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Direct inplace solver for dense upper triangular systems. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The (transposed) matrix of row vectors, where the solution is directly written to </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad849b3114b76777bb0162ddf3fe8eba2"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="ad849b3114b76777bb0162ddf3fe8eba2" args="(const matrix_expression< const matrix< SCALARTYPE, F1, A1 >, const matrix< SCALARTYPE, F1, A1 >, op_trans > &proxy, matrix< SCALARTYPE, F2, A2 > &B, SOLVERTAG)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_solve </td>
-          <td>(</td>
-          <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F1, A1 >, const matrix< SCALARTYPE, F1, A1 >, op_trans > & </td>
-          <td class="paramname"> <em>proxy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">matrix< SCALARTYPE, F2, A2 > & </td>
-          <td class="paramname"> <em>B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SOLVERTAG </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The system matrix proxy </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The matrix holding the load vectors, where the solution is directly written to </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aae8acccfb7520c1c75d8bbb10130aa4a"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="aae8acccfb7520c1c75d8bbb10130aa4a" args="(const matrix_expression< const matrix< SCALARTYPE, F1, A1 >, const matrix< SCALARTYPE, F1, A1 >, op_trans > &proxy, const matrix_expression< const matrix< SCALARTYPE, F2, A2 >, const matrix< SCALARTYPE, F2, A2 >, op_trans > &B, SOLVERTAG)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_solve </td>
-          <td>(</td>
-          <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F1, A1 >, const matrix< SCALARTYPE, F1, A1 >, op_trans > & </td>
-          <td class="paramname"> <em>proxy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F2, A2 >, const matrix< SCALARTYPE, F2, A2 >, op_trans > & </td>
-          <td class="paramname"> <em>B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SOLVERTAG </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The system matrix proxy </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The matrix holding the load vectors, where the solution is directly written to </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1fa59efa7e0a65e6e9c949b441696af1"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="a1fa59efa7e0a65e6e9c949b441696af1" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &mat, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, SOLVERTAG)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_solve </td>
-          <td>(</td>
-          <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SOLVERTAG </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a373c29fa2cb02177b1450d36eabeb265"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="a373c29fa2cb02177b1450d36eabeb265" args="(const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, SOLVERTAG)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_solve </td>
-          <td>(</td>
-          <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > & </td>
-          <td class="paramname"> <em>proxy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SOLVERTAG </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The system matrix proxy </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The load vector, where the solution is directly written to </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a04b2c67e5839525ba813da61fde893ab"></a><!-- doxytag: member="viennacl::linalg::inplace_sub" ref="a04b2c67e5839525ba813da61fde893ab" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_sub </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 -= vec2.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The result. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The subtracted vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae88903a9ae8dbc3fc47db7f37da326a6"></a><!-- doxytag: member="viennacl::linalg::inplace_sub" ref="ae88903a9ae8dbc3fc47db7f37da326a6" args="(viennacl::matrix< TYPE, F, ALIGNMENT > &result, const viennacl::matrix< TYPE, F, ALIGNMENT > &mat2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::inplace_sub </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a dense matrix to another. </p>
-<p>This is the implementation of the convenience expression result += mat1;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2aa3e7727b42bd95f5d1e5dd5366f807"></a><!-- doxytag: member="viennacl::linalg::lu_factorize" ref="a2aa3e7727b42bd95f5d1e5dd5366f807" args="(matrix< SCALARTYPE, F, ALIGNMENT > &mat)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::lu_factorize </td>
-          <td>(</td>
-          <td class="paramtype">matrix< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>LU factorization of a dense matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix, where the LU matrices are directly written to. The implicit unit diagonal of L is not written. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1407e42bdce9d821baaf5d4163a09dd1"></a><!-- doxytag: member="viennacl::linalg::lu_substitute" ref="a1407e42bdce9d821baaf5d4163a09dd1" args="(matrix< SCALARTYPE, F1, ALIGNMENT_A > const &A, matrix< SCALARTYPE, F2, ALIGNMENT_B > &B)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::lu_substitute </td>
-          <td>(</td>
-          <td class="paramtype">matrix< SCALARTYPE, F1, ALIGNMENT_A > const & </td>
-          <td class="paramname"> <em>A</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">matrix< SCALARTYPE, F2, ALIGNMENT_B > & </td>
-          <td class="paramname"> <em>B</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>LU substitution for the system LU = rhs. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>A</em> </td><td>The system matrix, where the LU matrices are directly written to. The implicit unit diagonal of L is not written. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The matrix of load vectors, where the solution is directly written to </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9da85acf3d7f22c869dfd52791a25d55"></a><!-- doxytag: member="viennacl::linalg::lu_substitute" ref="a9da85acf3d7f22c869dfd52791a25d55" args="(matrix< SCALARTYPE, F, ALIGNMENT > const &mat, vector< SCALARTYPE, VEC_ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::lu_substitute </td>
-          <td>(</td>
-          <td class="paramtype">matrix< SCALARTYPE, F, ALIGNMENT > const & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>LU substitution for the system LU = rhs. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix, where the LU matrices are directly written to. The implicit unit diagonal of L is not written. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The load vector, where the solution is directly written to </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a6047863f8fb097162ffad8b1b847d1df"></a><!-- doxytag: member="viennacl::linalg::mul_add" ref="a6047863f8fb097162ffad8b1b847d1df" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, scalar< SCALARTYPE > const &alpha, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::mul_add </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>alpha</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result = alpha * vec1 + vec2, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first added </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the first addend. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second added. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a136d1799060f2adc907c8b67371a4134"></a><!-- doxytag: member="viennacl::linalg::mul_add" ref="a136d1799060f2adc907c8b67371a4134" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, SCALARTYPE alpha, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::mul_add </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>alpha</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result = alpha * vec1 + vec2, where alpha is a cpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first added </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the first addend. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second added. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0bf813502bb4d25ab2613f1575a4fca3"></a><!-- doxytag: member="viennacl::linalg::mul_sub" ref="a0bf813502bb4d25ab2613f1575a4fca3" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, scalar< SCALARTYPE > const &alpha, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::mul_sub </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>alpha</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result = alpha * vec1 - vec2, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the first vector. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second operand. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="acae4aaa06516b42063bd44c12e5d56d0"></a><!-- doxytag: member="viennacl::linalg::mult" ref="acae4aaa06516b42063bd44c12e5d56d0" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::mult </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > const & </td>
-          <td class="paramname"> <em>alpha</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result = vec * alpha, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector to be scaled. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a7cefe6d56ec8672118ff744eac103cae"></a><!-- doxytag: member="viennacl::linalg::mult" ref="a7cefe6d56ec8672118ff744eac103cae" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec, SCALARTYPE alpha, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::mult </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>alpha</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result = vec * alpha, where alpha is a cpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector to be scaled. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab37ecf5aa97762b3e174b862912f510a"></a><!-- doxytag: member="viennacl::linalg::norm_1" ref="ab37ecf5aa97762b3e174b862912f510a" args="(VectorT const &v1, typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorT::value_type viennacl::linalg::norm_1 </td>
-          <td>(</td>
-          <td class="paramtype">VectorT const & </td>
-          <td class="paramname"> <em>v1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type * </td>
-          <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac5e7e99c21b05b4db0e9422d9c9ed181"></a><!-- doxytag: member="viennacl::linalg::norm_1" ref="ac5e7e99c21b05b4db0e9422d9c9ed181" args="(viennacl::vector< ScalarType, alignment > const &vector, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector< ScalarType, alignment > >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment>, viennacl::op_norm_1 > viennacl::linalg::norm_1 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const & </td>
-          <td class="paramname"> <em>vector</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type * </td>
-          <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2479f0743a32118e916cca8edb895c30"></a><!-- doxytag: member="viennacl::linalg::norm_1_impl" ref="a2479f0743a32118e916cca8edb895c30" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void norm_1_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vcl_vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Computes the l^1-norm of a vector. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vcl_vec</em> </td><td>The vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result scalar </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a87acc0739e4f1bc63934e9ad24f35a9a"></a><!-- doxytag: member="viennacl::linalg::norm_2" ref="a87acc0739e4f1bc63934e9ad24f35a9a" args="(VectorT const &v1, typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorT::value_type viennacl::linalg::norm_2 </td>
-          <td>(</td>
-          <td class="paramtype">VectorT const & </td>
-          <td class="paramname"> <em>v1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type * </td>
-          <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a12a0a2106e96f8f1625b6c5bdec90f4c"></a><!-- doxytag: member="viennacl::linalg::norm_2" ref="a12a0a2106e96f8f1625b6c5bdec90f4c" args="(viennacl::vector< ScalarType, alignment > const &v, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector< ScalarType, alignment > >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment>, viennacl::op_norm_2 > viennacl::linalg::norm_2 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const & </td>
-          <td class="paramname"> <em>v</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type * </td>
-          <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a96a2ee028641ffd7b80e6a1bfad34c6a"></a><!-- doxytag: member="viennacl::linalg::norm_2_impl" ref="a96a2ee028641ffd7b80e6a1bfad34c6a" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void norm_2_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vcl_vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Computes the l^2-norm of a vector - implementation. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vcl_vec</em> </td><td>The vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result scalar </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aadc500239f2e1967e584b71171cba268"></a><!-- doxytag: member="viennacl::linalg::norm_inf" ref="aadc500239f2e1967e584b71171cba268" args="(viennacl::vector< ScalarType, alignment > const &v1, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector< ScalarType, alignment > >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment>, viennacl::op_norm_inf > viennacl::linalg::norm_inf </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const & </td>
-          <td class="paramname"> <em>v1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type * </td>
-          <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a03a5b5434ce08fac52aa22dbb684029c"></a><!-- doxytag: member="viennacl::linalg::norm_inf" ref="a03a5b5434ce08fac52aa22dbb684029c" args="(VectorT const &v1, typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorT::value_type viennacl::linalg::norm_inf </td>
-          <td>(</td>
-          <td class="paramtype">VectorT const & </td>
-          <td class="paramname"> <em>v1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type * </td>
-          <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a43009c5365c78c81463f54c2848378ca"></a><!-- doxytag: member="viennacl::linalg::norm_inf_impl" ref="a43009c5365c78c81463f54c2848378ca" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void norm_inf_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vcl_vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">scalar< SCALARTYPE > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Computes the supremum-norm of a vector. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vcl_vec</em> </td><td>The vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result scalar </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1b56d764864ae3d91bb6bac2ae87bec8"></a><!-- doxytag: member="viennacl::linalg::outer_prod" ref="a1b56d764864ae3d91bb6bac2ae87bec8" args="(const viennacl::vector< SCALARTYPE, VA1 > &vec1, const viennacl::vector< SCALARTYPE, VA2 > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VA1>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VA2>, op_prod> viennacl::linalg::outer_prod </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA1 > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA2 > & </td>
-          <td class="paramname"> <em>vec2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a proxy class for the operation mat += vec1 * vec2^T, i.e. a rank 1 update. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a38eb0d2bea8cb4a78253c9fe329000a9"></a><!-- doxytag: member="viennacl::linalg::plane_rotation" ref="a38eb0d2bea8cb4a78253c9fe329000a9" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, SCALARTYPE alpha, SCALARTYPE beta)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::plane_rotation </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>alpha</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>beta</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Computes a plane rotation of two vectors. </p>
-<p>Computes (x,y) <- (alpha * x + beta * y, -beta * x + alpha * y)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The first transformation coefficient </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>beta</em> </td><td>The second transformation coefficient </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aa1642cbf74be37d2ae455606506dc578"></a><!-- doxytag: member="viennacl::linalg::precondition" ref="aa1642cbf74be37d2ae455606506dc578" args="(MatrixType const &input, LUType &output, ilut_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::precondition </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType const & </td>
-          <td class="paramname"> <em>input</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">LUType & </td>
-          <td class="paramname"> <em>output</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ilut_tag const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of a ILU-preconditioner with threshold. </p>
-<p>refer to Algorithm 10.6 by Saad's book (1996 edition)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>input</em> </td><td>The input matrix. Type requirements: const_iterator1 for iteration along rows, const_iterator2 for iteration along columns </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>output</em> </td><td>The output matrix. Type requirements: const_iterator1 for iteration along rows, const_iterator2 for iteration along columns and write access via operator() </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>An <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html" title="A tag for incomplete LU factorization with threshold (ILUT).">ilut_tag</a> in order to dispatch among several other preconditioners. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae1687a9eb40c623b00c880cd88f176d7"></a><!-- doxytag: member="viennacl::linalg::prod" ref="ae1687a9eb40c623b00c880cd88f176d7" args="(MatrixT const &matrix, VectorT const &vector, typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< MatrixT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorT viennacl::linalg::prod </td>
-          <td>(</td>
-          <td class="paramtype">MatrixT const & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorT const & </td>
-          <td class="paramname"> <em>vector</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type * </td>
-          <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a12682dd49c61d3897b1c18e49042c721"></a><!-- doxytag: member="viennacl::linalg::prod" ref="a12682dd49c61d3897b1c18e49042c721" args="(MatrixT const &matrix_A, viennacl::matrix< NumericT, F, ALIGNMENT > const &matrix_B, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const MatrixT, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><NumericT, F, ALIGNMENT>, viennacl::op_prod > viennacl::linalg::prod </td>
-          <td>(</td>
-          <td class="paramtype">MatrixT const & </td>
-          <td class="paramname"> <em>matrix_A</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT > const & </td>
-          <td class="paramname"> <em>matrix_B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type * </td>
-          <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abe959c83610141222955cfa6c52ed961"></a><!-- doxytag: member="viennacl::linalg::prod" ref="abe959c83610141222955cfa6c52ed961" args="(MatrixT const &matrix, viennacl::vector< NumericT, ALIGNMENT > const &vector, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const MatrixT, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><NumericT, ALIGNMENT>, viennacl::op_prod > viennacl::linalg::prod </td>
-          <td>(</td>
-          <td class="paramtype">MatrixT const & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< NumericT, ALIGNMENT > const & </td>
-          <td class="paramname"> <em>vector</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type * </td>
-          <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="acfb30430740c1e7b8ab2c81aee31878a"></a><!-- doxytag: member="viennacl::linalg::prod" ref="acfb30430740c1e7b8ab2c81aee31878a" args="(MatrixT const &matrix_A, const viennacl::matrix_expression< const viennacl::matrix< NumericT, F, ALIGNMENT >, const viennacl::matrix< NumericT, F, ALIGNMENT >, viennacl::op_trans > &matrix_B, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const MatrixT, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><NumericT, F, ALIGNMENT>, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><NumericT, F, ALIGNMENT>, viennacl::op_trans >, viennacl::op_prod > viennacl::linalg::prod </td>
-          <td>(</td>
-          <td class="paramtype">MatrixT const & </td>
-          <td class="paramname"> <em>matrix_A</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT >, viennacl::op_trans > & </td>
-          <td class="paramname"> <em>matrix_B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type * </td>
-          <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a21163d892b2568fa4fa3abe750a5504f"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a21163d892b2568fa4fa3abe750a5504f" args="(const viennacl::matrix_expression< const matrix< TYPE, F1, ALIGNMENT >, const matrix< TYPE, F1, ALIGNMENT >, op_trans > &A, const viennacl::matrix_expression< const matrix< TYPE, F2, ALIGNMENT >, const matrix< TYPE, F2, ALIGNMENT >, op_trans > &B, viennacl::matrix< TYPE, F3, ALIGNMENT > &C)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F1, ALIGNMENT >, const matrix< TYPE, F1, ALIGNMENT >, op_trans > & </td>
-          <td class="paramname"> <em>A</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F2, ALIGNMENT >, const matrix< TYPE, F2, ALIGNMENT >, op_trans > & </td>
-          <td class="paramname"> <em>B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > & </td>
-          <td class="paramname"> <em>C</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-matrix multiplication. </p>
-<p>Implementation of C = prod(trans(A), trans(B)); </p>
-
-</div>
-</div>
-<a class="anchor" id="abbc7f86d9d7e24ff1eae02fe976bc77d"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="abbc7f86d9d7e24ff1eae02fe976bc77d" args="(const viennacl::matrix< TYPE, F, ALIGNMENT > &mat, const viennacl::vector< TYPE, VECTOR_ALIGNMENT > &vec, viennacl::vector< TYPE, VECTOR_ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-vector multiplication. </p>
-<p>Implementation of the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a07b1f6f849c9950dd557bbf3e38f569d"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a07b1f6f849c9950dd557bbf3e38f569d" args="(std::vector< std::vector< T, A1 >, A2 > const &matrix, VectorT const &vector)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorT viennacl::linalg::prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">std::vector< std::vector< T, A1 >, A2 > const & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorT const & </td>
-          <td class="paramname"> <em>vector</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a07e0985a7c2429067b483238d0ffeb2a"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a07e0985a7c2429067b483238d0ffeb2a" args="(const viennacl::matrix< TYPE, F1, ALIGNMENT > &A, const viennacl::matrix_expression< const matrix< TYPE, F2, ALIGNMENT >, const matrix< TYPE, F2, ALIGNMENT >, op_trans > &B, viennacl::matrix< TYPE, F3, ALIGNMENT > &C)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F1, ALIGNMENT > & </td>
-          <td class="paramname"> <em>A</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F2, ALIGNMENT >, const matrix< TYPE, F2, ALIGNMENT >, op_trans > & </td>
-          <td class="paramname"> <em>B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > & </td>
-          <td class="paramname"> <em>C</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-matrix multiplication. </p>
-<p>Implementation of C = prod(A, trans(B)); </p>
-
-</div>
-</div>
-<a class="anchor" id="afa56b176c5b19331a2fd286cac2f9c92"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="afa56b176c5b19331a2fd286cac2f9c92" args="(const viennacl::coordinate_matrix< TYPE, ALIGNMENT > &mat, const viennacl::vector< TYPE, VECTOR_ALIGNMENT > &vec, viennacl::vector< TYPE, VECTOR_ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< TYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-vector multiplication with a <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<p>Implementation of the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aa965a1bc156b037f57b6a449dde4c7d1"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="aa965a1bc156b037f57b6a449dde4c7d1" args="(const compressed_matrix< SCALARTYPE, ALIGNMENT > &mat, const vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const compressed_matrix< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const vector< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>This is used for the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a469b22e14078bba1451afb09bbd2f7cc"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a469b22e14078bba1451afb09bbd2f7cc" args="(const viennacl::compressed_matrix< TYPE, ALIGNMENT > &mat, const viennacl::vector< TYPE, VECTOR_ALIGNMENT > &vec, viennacl::vector< TYPE, VECTOR_ALIGNMENT > &result, size_t NUM_THREADS=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a>< TYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>NUM_THREADS</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>Implementation of the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>NUM_THREADS</em> </td><td>Number of threads per work group. Can be used for fine-tuning. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a8bb2b3cdaa265974abb81154593357b3"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a8bb2b3cdaa265974abb81154593357b3" args="(std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > const &matrix, VectorT const &vector)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorT viennacl::linalg::prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > const & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorT const & </td>
-          <td class="paramname"> <em>vector</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1294bf672bcc55c62d1622b07b44425e"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a1294bf672bcc55c62d1622b07b44425e" args="(const viennacl::matrix< TYPE, F1, ALIGNMENT > &A, const viennacl::matrix< TYPE, F2, ALIGNMENT > &B, viennacl::matrix< TYPE, F3, ALIGNMENT > &C, int block_size=15)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F1, ALIGNMENT > & </td>
-          <td class="paramname"> <em>A</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F2, ALIGNMENT > & </td>
-          <td class="paramname"> <em>B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > & </td>
-          <td class="paramname"> <em>C</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>block_size</em> = <code>15</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-matrix multiplication. </p>
-<p>Implementation of C = prod(A, B); </p>
-
-</div>
-</div>
-<a class="anchor" id="a79ec888c8ac1026f4591179fdd19e0de"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a79ec888c8ac1026f4591179fdd19e0de" args="(const coordinate_matrix< SCALARTYPE, ALIGNMENT > &mat, const vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const coordinate_matrix< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const vector< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>This is used for the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a5e71c3317fe25d0ce5e31be66597d8bb"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a5e71c3317fe25d0ce5e31be66597d8bb" args="(const viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &mat, const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a proxy class that represents matrix-vector multiplication. </p>
-<p>This is used for the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a7984796b04f748d616d1071b0e70850b"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a7984796b04f748d616d1071b0e70850b" args="(const viennacl::coordinate_matrix< SCALARTYPE, ALIGNMENT > &mat, const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec, size_t NUM_THREADS)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a><SCALARTYPE, ALIGNMENT>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VECTOR_ALIGNMENT>, viennacl::op_prod > viennacl::linalg::prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>NUM_THREADS</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<p>This is used for the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>NUM_THREADS</em> </td><td>Number of threads per work group. Can be used for fine-tuning. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4f088d9329b8c801492830a519fdef15"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a4f088d9329b8c801492830a519fdef15" args="(const viennacl::matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, op_trans>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VECTOR_ALIGNMENT>, op_prod > viennacl::linalg::prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > & </td>
-          <td class="paramname"> <em>proxy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a proxy class that represents matrix-vector multiplication with a transposed matrix. </p>
-<p>This is used for the convenience expression result = trans(mat) * vec;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The transposed matrix proxy </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="af8a3b3e7b5421283ccdc96c07ce3c624"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="af8a3b3e7b5421283ccdc96c07ce3c624" args="(const viennacl::matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &mat, const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec, viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Unwraps the transposed matrix proxy and forwards to <a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c" title="Carries out matrix-vector multiplication with a transposed matrix.">trans_prod_impl()</a>. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa03a4515a4033a22afc6f2e9bfad1ed6"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="aa03a4515a4033a22afc6f2e9bfad1ed6" args="(const viennacl::matrix_expression< const matrix< TYPE, F1, ALIGNMENT >, const matrix< TYPE, F1, ALIGNMENT >, op_trans > &A, const viennacl::matrix< TYPE, F2, ALIGNMENT > &B, viennacl::matrix< TYPE, F3, ALIGNMENT > &C)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F1, ALIGNMENT >, const matrix< TYPE, F1, ALIGNMENT >, op_trans > & </td>
-          <td class="paramname"> <em>A</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F2, ALIGNMENT > & </td>
-          <td class="paramname"> <em>B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > & </td>
-          <td class="paramname"> <em>C</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-matrix multiplication. </p>
-<p>Implementation of C = prod(trans(A), B); </p>
-
-</div>
-</div>
-<a class="anchor" id="a90c6aa1f54abd466421ea06bf9b49716"></a><!-- doxytag: member="viennacl::linalg::rank_1_update" ref="a90c6aa1f54abd466421ea06bf9b49716" args="(viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &mat1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::rank_1_update </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>The implementation of the operation mat += vec1 * vec2^T, i.e. a rank 1 update. </p>
-<p>Implementation of the convenience expression result += outer_prod(vec1, vec2);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The matrix to be updated </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a46f8f468d8d1d6deec2a4d906f987e85"></a><!-- doxytag: member="viennacl::linalg::scaled_rank_1_update" ref="a46f8f468d8d1d6deec2a4d906f987e85" args="(viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &mat1, SCALARTYPE val, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::scaled_rank_1_update </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">SCALARTYPE </td>
-          <td class="paramname"> <em>val</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update. </p>
-<p>Implementation of the convenience expression result += alpha * outer_prod(vec1, vec2);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The matrix to be updated </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>The scaling factor </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a6d7d0a974cd68a51c4d5c4b7a16c1d28"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a6d7d0a974cd68a51c4d5c4b7a16c1d28" args="(compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &L, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, const viennacl::linalg::unit_lower_tag &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, VEC_ALIGNMENT> viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const & </td>
-          <td class="paramname"> <em>L</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a> & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for result = solve(trans(mat), vec, unit_lower_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>L</em> </td><td>The lower triangular sparse matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The load vector, where the solution is directly written to </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a76b4d001b76edd2253dc7d3a2852b391"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a76b4d001b76edd2253dc7d3a2852b391" args="(const MatrixType &matrix, VectorType const &rhs, gmres_tag const &tag, PreconditionerType const &precond)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorType viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const MatrixType & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorType const & </td>
-          <td class="paramname"> <em>rhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">gmres_tag const & </td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">PreconditionerType const & </td>
-          <td class="paramname"> <em>precond</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the GMRES solver. </p>
-<p>Following the algorithm proposed by Walker in "A Simpler GMRES"</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>matrix</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>rhs</em> </td><td>The load vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Solver configuration tag </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>precond</em> </td><td>A preconditioner. Precondition operation is done via member function apply() </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result vector </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a6bc45bf37430c67d6a32ed8e10e77e94"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a6bc45bf37430c67d6a32ed8e10e77e94" args="(const MatrixType &matrix, VectorType const &rhs, cg_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorType viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const MatrixType & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorType const & </td>
-          <td class="paramname"> <em>rhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cg_tag const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the conjugate gradient solver without preconditioner. </p>
-<p>Following the algorithm in the book by Y. Saad "Iterative Methods for sparse linear systems"</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>matrix</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>rhs</em> </td><td>The load vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Solver configuration tag </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result vector </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a658f2de0ab6804ebabbc4248adc2d927"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a658f2de0ab6804ebabbc4248adc2d927" args="(const matrix< SCALARTYPE, F1, ALIGNMENT_A > &A, const matrix< SCALARTYPE, F2, ALIGNMENT_B > &B, TAG const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F2, ALIGNMENT_B> viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const matrix< SCALARTYPE, F1, ALIGNMENT_A > & </td>
-          <td class="paramname"> <em>A</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const matrix< SCALARTYPE, F2, ALIGNMENT_B > & </td>
-          <td class="paramname"> <em>B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">TAG const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for C = solve(A, B, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>A</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The matrix of load vectors </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a560520300c350a1d8afa44d5c036b48b"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a560520300c350a1d8afa44d5c036b48b" args="(const MatrixType &matrix, VectorType const &rhs, cg_tag const &tag, viennacl::linalg::no_precond)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorType viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const MatrixType & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorType const & </td>
-          <td class="paramname"> <em>rhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cg_tag const & </td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">viennacl::linalg::no_precond</a> </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aec73c039978029c091e70224bf283ed5"></a><!-- doxytag: member="viennacl::linalg::solve" ref="aec73c039978029c091e70224bf283ed5" args="(const matrix_expression< const matrix< SCALARTYPE, F1, ALIGNMENT_A >, const matrix< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > &proxy, const matrix< SCALARTYPE, F2, ALIGNMENT_B > &B, TAG const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F2, ALIGNMENT_B> viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F1, ALIGNMENT_A >, const matrix< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > & </td>
-          <td class="paramname"> <em>proxy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const matrix< SCALARTYPE, F2, ALIGNMENT_B > & </td>
-          <td class="paramname"> <em>B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">TAG const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for result = solve(trans(mat), B, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The transposed system matrix proxy </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The matrix of load vectors </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="add76ce64e200f9193156a98a15bf42fd"></a><!-- doxytag: member="viennacl::linalg::solve" ref="add76ce64e200f9193156a98a15bf42fd" args="(const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, TAG const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, VEC_ALIGNMENT> viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > & </td>
-          <td class="paramname"> <em>proxy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">TAG const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The transposed system matrix proxy </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The load vector, where the solution is directly written to </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a7eb0bd2b912aa3c5d83aa4801e7e89fd"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a7eb0bd2b912aa3c5d83aa4801e7e89fd" args="(const MatrixType &matrix, VectorType const &rhs, bicgstab_tag const &tag, viennacl::linalg::no_precond)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorType viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const MatrixType & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorType const & </td>
-          <td class="paramname"> <em>rhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">bicgstab_tag const & </td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">viennacl::linalg::no_precond</a> </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab50f87d195eb82ddbe5ce910e914bc55"></a><!-- doxytag: member="viennacl::linalg::solve" ref="ab50f87d195eb82ddbe5ce910e914bc55" args="(const MatrixType &matrix, VectorType const &rhs, bicgstab_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorType viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const MatrixType & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorType const & </td>
-          <td class="paramname"> <em>rhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">bicgstab_tag const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the stabilized Bi-conjugate gradient solver. </p>
-<p>Following the description in "Iterative Methods for Sparse Linear Systems" by Y. Saad</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>matrix</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>rhs</em> </td><td>The load vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Solver configuration tag </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result vector </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a13d7be38f0fbef200ccbe90d9240e542"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a13d7be38f0fbef200ccbe90d9240e542" args="(const matrix< SCALARTYPE, F1, ALIGNMENT_A > &A, const matrix_expression< const matrix< SCALARTYPE, F2, ALIGNMENT_B >, const matrix< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > &proxy, TAG const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F2, ALIGNMENT_B> viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const matrix< SCALARTYPE, F1, ALIGNMENT_A > & </td>
-          <td class="paramname"> <em>A</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F2, ALIGNMENT_B >, const matrix< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > & </td>
-          <td class="paramname"> <em>proxy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">TAG const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for C = solve(A, B^T, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>A</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The transposed load vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="adbcb7f6a46ca520d01f6ce53f83f5069"></a><!-- doxytag: member="viennacl::linalg::solve" ref="adbcb7f6a46ca520d01f6ce53f83f5069" args="(const MatrixType &matrix, VectorType const &rhs, bicgstab_tag const &tag, PreconditionerType const &precond)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorType viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const MatrixType & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorType const & </td>
-          <td class="paramname"> <em>rhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">bicgstab_tag const & </td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">PreconditionerType const & </td>
-          <td class="paramname"> <em>precond</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the preconditioned stabilized Bi-conjugate gradient solver. </p>
-<p>Following the description of the unpreconditioned case in "Iterative Methods for Sparse Linear Systems" by Y. Saad</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>matrix</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>rhs</em> </td><td>The load vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Solver configuration tag </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>precond</em> </td><td>A preconditioner. Precondition operation is done via member function apply() </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result vector </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="adefd0a97aaeaa8eb75097847443c6ee1"></a><!-- doxytag: member="viennacl::linalg::solve" ref="adefd0a97aaeaa8eb75097847443c6ee1" args="(const MatrixType &matrix, VectorType const &rhs, cg_tag const &tag, PreconditionerType const &precond)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorType viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const MatrixType & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorType const & </td>
-          <td class="paramname"> <em>rhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cg_tag const & </td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">PreconditionerType const & </td>
-          <td class="paramname"> <em>precond</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the preconditioned conjugate gradient solver. </p>
-<p>Following Algorithm 9.1 in "Iterative Methods for Sparse Linear Systems" by Y. Saad</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>matrix</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>rhs</em> </td><td>The load vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Solver configuration tag </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>precond</em> </td><td>A preconditioner. Precondition operation is done via member function apply() </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result vector </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a9f5cb80858484131ecb73e867b2bf794"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a9f5cb80858484131ecb73e867b2bf794" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &mat, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, TAG const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, VEC_ALIGNMENT> viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">TAG const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for result = solve(mat, vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The load vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aaa338acd99f7bfac8c0210ab05ecaa09"></a><!-- doxytag: member="viennacl::linalg::solve" ref="aaa338acd99f7bfac8c0210ab05ecaa09" args="(compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &L, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, viennacl::linalg::upper_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, VEC_ALIGNMENT> viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const & </td>
-          <td class="paramname"> <em>L</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a> const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for result = solve(trans(mat), vec, unit_lower_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>L</em> </td><td>The lower triangular sparse matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The load vector, where the solution is directly written to </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a18da6b35b9790a1acd824dee6a8fb76a"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a18da6b35b9790a1acd824dee6a8fb76a" args="(const matrix_expression< const matrix< SCALARTYPE, F1, ALIGNMENT_A >, const matrix< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > &proxy_A, const matrix_expression< const matrix< SCALARTYPE, F2, ALIGNMENT_B >, const matrix< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > &proxy_B, TAG const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F2, ALIGNMENT_B> viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F1, ALIGNMENT_A >, const matrix< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > & </td>
-          <td class="paramname"> <em>proxy_A</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F2, ALIGNMENT_B >, const matrix< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > & </td>
-          <td class="paramname"> <em>proxy_B</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">TAG const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>proxy_A</em> </td><td>The transposed system matrix proxy </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>proxy_B</em> </td><td>The transposed matrix of load vectors, where the solution is directly written to </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad590c4eadb76eea1a806c3c4c026ba66"></a><!-- doxytag: member="viennacl::linalg::solve" ref="ad590c4eadb76eea1a806c3c4c026ba66" args="(const MatrixType &matrix, VectorType const &rhs, gmres_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VectorType viennacl::linalg::solve </td>
-          <td>(</td>
-          <td class="paramtype">const MatrixType & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">VectorType const & </td>
-          <td class="paramname"> <em>rhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">gmres_tag const & </td>
-          <td class="paramname"> <em>tag</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience overload of the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function using GMRES. Per default, no preconditioner is used. </p>
-
-</div>
-</div>
-<a class="anchor" id="a707ace72b7ff8ad1e3a9ff2606567f1e"></a><!-- doxytag: member="viennacl::linalg::sub" ref="a707ace72b7ff8ad1e3a9ff2606567f1e" args="(const viennacl::matrix< TYPE, F, ALIGNMENT > &mat1, const viennacl::matrix< TYPE, F, ALIGNMENT > &mat2, viennacl::matrix< TYPE, F, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::sub </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Adds two dense matrices and writes the result to a third matrix. </p>
-<p>This is the implementation of the convenience expression result = mat1 + mat2;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aad5f201a0e90a230b4376deb311c019a"></a><!-- doxytag: member="viennacl::linalg::sub" ref="aad5f201a0e90a230b4376deb311c019a" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::sub </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Subtraction of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>result = vec1 - vec2</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first operand. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second operand. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0c03a1482aebb921ce45f3b1c933697c"></a><!-- doxytag: member="viennacl::linalg::trans_prod_impl" ref="a0c03a1482aebb921ce45f3b1c933697c" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &mat, const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec, viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::linalg::trans_prod_impl </td>
-          <td>(</td>
-          <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
-          <td class="paramname"> <em>result</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-vector multiplication with a transposed matrix. </p>
-<p>Implementation of the convenience expression result = trans(mat) * vec;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1linalg_1_1kernels.html b/doc/doxygen/html/namespaceviennacl_1_1linalg_1_1kernels.html
deleted file mode 100644
index af79e52..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1linalg_1_1kernels.html
+++ /dev/null
@@ -1,3072 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::linalg::kernels Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>viennacl::linalg::kernels Namespace Reference</h1>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">compressed_matrix< float, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">compressed_matrix< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">compressed_matrix< float, 8 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">compressed_matrix< double, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">compressed_matrix< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">compressed_matrix< double, 8 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">coordinate_matrix< float, 128 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">coordinate_matrix< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">coordinate_matrix< double, 128 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">coordinate_matrix< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">matrix_col< float, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">matrix_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">matrix_col< double, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">matrix_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">matrix_prod_col_col_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">matrix_prod_col_col_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">matrix_prod_col_col_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">matrix_prod_col_col_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">matrix_prod_col_row_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">matrix_prod_col_row_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">matrix_prod_col_row_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">matrix_prod_col_row_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">matrix_prod_row_col_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">matrix_prod_row_col_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">matrix_prod_row_col_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">matrix_prod_row_col_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">matrix_prod_row_row_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">matrix_prod_row_row_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">matrix_prod_row_row_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">matrix_prod_row_row_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">matrix_row< float, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">matrix_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">matrix_row< double, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">matrix_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">matrix_solve_col_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">matrix_solve_col_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">matrix_solve_col_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">matrix_solve_col_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">matrix_solve_row_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">matrix_solve_row_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">matrix_solve_row_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">matrix_solve_row_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">scalar< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">scalar< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">vector< float, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">vector< float, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">vector< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">vector< double, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">vector< double, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">vector< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">compressed_matrix_align4_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">compressed_matrix_align1_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">compressed_matrix_align8_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a> = "} \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">matrix_prod_col_col_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">matrix_prod_col_col_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">matrix_prod_col_col_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">matrix_prod_col_col_col_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">matrix_prod_col_col_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">matrix_prod_col_col_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">matrix_prod_col_col_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">matrix_prod_col_col_row_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">matrix_prod_col_row_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">matrix_prod_col_row_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">matrix_prod_col_row_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">matrix_prod_col_row_col_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">matrix_prod_col_row_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">matrix_prod_col_row_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">matrix_prod_col_row_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">matrix_prod_col_row_row_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">matrix_prod_row_col_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">matrix_prod_row_col_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">matrix_prod_row_col_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">matrix_prod_row_col_col_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">matrix_prod_row_col_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">matrix_prod_row_col_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">matrix_prod_row_col_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">matrix_prod_row_col_row_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">matrix_prod_row_row_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">matrix_prod_row_row_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">matrix_prod_row_row_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">matrix_prod_row_row_col_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">matrix_prod_row_row_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">matrix_prod_row_row_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">matrix_prod_row_row_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">matrix_prod_row_row_row_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a> = "} \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">matrix_solve_col_col_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">matrix_solve_col_col_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">matrix_solve_col_col_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">matrix_solve_col_col_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">matrix_solve_col_col_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">matrix_solve_col_col_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">matrix_solve_col_col_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">matrix_solve_col_col_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">matrix_solve_col_col_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">matrix_solve_col_col_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">matrix_solve_col_col_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">matrix_solve_col_col_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">matrix_solve_col_col_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">matrix_solve_col_col_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">matrix_solve_col_col_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">matrix_solve_col_col_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">matrix_solve_col_row_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">matrix_solve_col_row_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">matrix_solve_col_row_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">matrix_solve_col_row_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">matrix_solve_col_row_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">matrix_solve_col_row_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">matrix_solve_col_row_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">matrix_solve_col_row_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">matrix_solve_col_row_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">matrix_solve_col_row_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">matrix_solve_col_row_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">matrix_solve_col_row_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">matrix_solve_col_row_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">matrix_solve_col_row_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">matrix_solve_col_row_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">matrix_solve_col_row_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">matrix_solve_row_col_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">matrix_solve_row_col_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">matrix_solve_row_col_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">matrix_solve_row_col_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">matrix_solve_row_col_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">matrix_solve_row_col_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">matrix_solve_row_col_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">matrix_solve_row_col_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">matrix_solve_row_col_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">matrix_solve_row_col_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">matrix_solve_row_col_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">matrix_solve_row_col_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">matrix_solve_row_col_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">matrix_solve_row_col_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">matrix_solve_row_col_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">matrix_solve_row_col_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">matrix_solve_row_row_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">matrix_solve_row_row_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">matrix_solve_row_row_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">matrix_solve_row_row_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">matrix_solve_row_row_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">matrix_solve_row_row_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">matrix_solve_row_row_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">matrix_solve_row_row_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">matrix_solve_row_row_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">matrix_solve_row_row_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">matrix_solve_row_row_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">matrix_solve_row_row_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">matrix_solve_row_row_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">matrix_solve_row_row_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">matrix_solve_row_row_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">matrix_solve_row_row_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">scalar_align1_inplace_sub</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">scalar_align1_cpu_inplace_div</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">scalar_align1_cpu_inplace_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">scalar_align1_cpu_sub</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">scalar_align1_cpu_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">scalar_align1_sub</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">scalar_align1_inplace_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">scalar_align1_cpu_inplace_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">scalar_align1_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">scalar_align1_cpu_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">scalar_align1_inplace_div</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">scalar_align1_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">scalar_align1_cpu_inplace_sub</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">scalar_align1_inplace_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">scalar_align1_divide</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">scalar_align1_cpu_div</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">vector_align16_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">vector_align16_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">vector_align16_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">vector_align16_cpu_inplace_mul</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">vector_align16_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">vector_align16_cpu_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">vector_align16_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">vector_align16_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">vector_align16_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">vector_align16_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">vector_align1_inplace_div_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">vector_align1_cpu_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">vector_align1_inplace_mul_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">vector_align1_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">vector_align1_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">vector_align1_cpu_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">vector_align1_inplace_div_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a> = "}\n"</td></tr>
-</table>
-<hr/><h2>Variable Documentation</h2>
-<a class="anchor" id="aa605535644b66099af40366034aec68a"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_bicgstab_kernel1" ref="aa605535644b66099af40366034aec68a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac03d5f5ef2dba4ae1f2b8a706e140922"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_bicgstab_kernel2" ref="ac03d5f5ef2dba4ae1f2b8a706e140922" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa81fb0d854c43d0d9c1bc0a7521ca5c1"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_jacobi_precond" ref="aa81fb0d854c43d0d9c1bc0a7521ca5c1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aee85fa4c19f9fe4080ebc74772f0fb63"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_lu_backward" ref="aee85fa4c19f9fe4080ebc74772f0fb63" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa668f421d9c45d2a50487244892ffc10"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_lu_forward" ref="aa668f421d9c45d2a50487244892ffc10" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a732fbb508d61b038f2897655d865cabb"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_row_scaling_1" ref="a732fbb508d61b038f2897655d865cabb" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5b7892b0465dcc17131c783121985928"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_row_scaling_2" ref="a5b7892b0465dcc17131c783121985928" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a44ea6c4dbe1d8f9bd0950a848436c233"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_vec_mul" ref="a44ea6c4dbe1d8f9bd0950a848436c233" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">compressed_matrix_align1_vec_mul</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a70b53cb5e3546b4e5773ace39a51cf2b"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align4_vec_mul" ref="a70b53cb5e3546b4e5773ace39a51cf2b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">compressed_matrix_align4_vec_mul</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa8f41f1024eabef84fa61cc5d4e64495"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align8_vec_mul" ref="aa8f41f1024eabef84fa61cc5d4e64495" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">compressed_matrix_align8_vec_mul</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a128ce5e93cd806340d6e7474387fd587"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix_align1_vec_mul" ref="a128ce5e93cd806340d6e7474387fd587" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abc32fc64ba2fdf28beebf5a20427c9ed"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_add" ref="abc32fc64ba2fdf28beebf5a20427c9ed" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a85c9e5e3c4c2763af50752197993d3e6"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_clear" ref="a85c9e5e3c4c2763af50752197993d3e6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0cffa4758fb8aa833a36e8cbe14be042"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_cpu_inplace_mult" ref="a0cffa4758fb8aa833a36e8cbe14be042" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9b42983f815fe9170b9aee53d1271589"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_inplace_add" ref="a9b42983f815fe9170b9aee53d1271589" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac6b5ae3eec50909abde8db957ac24871"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_inplace_divide" ref="ac6b5ae3eec50909abde8db957ac24871" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a831accf5ccabe70e140c908d87a0ad2d"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_inplace_mult" ref="a831accf5ccabe70e140c908d87a0ad2d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a272967bc262b8e642e03396e1b8a88d2"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_inplace_sub" ref="a272967bc262b8e642e03396e1b8a88d2" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a19b109dba6b0c936b4cf1c59075cd827"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_lower_triangular_substitute_inplace" ref="a19b109dba6b0c936b4cf1c59075cd827" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="add04bbceec9601b852a3cbd4e845d966"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_lu_factorize" ref="add04bbceec9601b852a3cbd4e845d966" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a> = "} \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af2d13284328fd9999e571a1422985417"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_rank1_update" ref="af2d13284328fd9999e571a1422985417" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a61ae3e9434691a925745b8807ed746bc"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_scaled_rank1_update" ref="a61ae3e9434691a925745b8807ed746bc" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aeeeb462b2236e27387339112ba1b11d8"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_sub" ref="aeeeb462b2236e27387339112ba1b11d8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad81f8128c317cabbe3dfacf18054b941"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_trans_lower_triangular_substitute_inplace" ref="ad81f8128c317cabbe3dfacf18054b941" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2e318d7949345174ee4dd29ac9d7401f"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_trans_unit_lower_triangular_substitute_inplace" ref="a2e318d7949345174ee4dd29ac9d7401f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a> = "\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a55703d5d1154f37d14b37d99b442e565"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_trans_unit_upper_triangular_substitute_inplace" ref="a55703d5d1154f37d14b37d99b442e565" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb2177986450de09ebf76a9fe437e130"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_trans_upper_triangular_substitute_inplace" ref="adb2177986450de09ebf76a9fe437e130" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a721b05df26b4a65a9c908bdb3e1e8801"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_trans_vec_mul" ref="a721b05df26b4a65a9c908bdb3e1e8801" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a035ffa8c1cc35fd5dbac6d69d0bf9791"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_unit_lower_triangular_substitute_inplace" ref="a035ffa8c1cc35fd5dbac6d69d0bf9791" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa681cea1f22d19e2f952c997a901ee13"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_unit_upper_triangular_substitute_inplace" ref="aa681cea1f22d19e2f952c997a901ee13" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6706e79115fb0911e8becf613db5daa8"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_upper_triangular_substitute_inplace" ref="a6706e79115fb0911e8becf613db5daa8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8af3ab6d04d6103a874df11fcdb7736b"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_vec_mul" ref="a8af3ab6d04d6103a874df11fcdb7736b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a68426ab2928b1682cc1bcc918c609433"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col_align1_prod_AA" ref="a68426ab2928b1682cc1bcc918c609433" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">matrix_prod_col_col_col_align1_prod_AA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa3f399fe5b3f1c0b0a4e0c38610d36a5"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col_align1_prod_AT" ref="aa3f399fe5b3f1c0b0a4e0c38610d36a5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">matrix_prod_col_col_col_align1_prod_AT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa218d827af245e504d807322d0309952"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col_align1_prod_TA" ref="aa218d827af245e504d807322d0309952" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">matrix_prod_col_col_col_align1_prod_TA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a639d86008f91760556437be5befa8f9a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col_align1_prod_TT" ref="a639d86008f91760556437be5befa8f9a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">matrix_prod_col_col_col_align1_prod_TT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9c8668e32e7e8591c6a8ea2593079a82"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row_align1_prod_AA" ref="a9c8668e32e7e8591c6a8ea2593079a82" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">matrix_prod_col_col_row_align1_prod_AA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6c34f0a875293b1fb29d3c3a08a6adb9"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row_align1_prod_AT" ref="a6c34f0a875293b1fb29d3c3a08a6adb9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">matrix_prod_col_col_row_align1_prod_AT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2f96a043e1f5fe8c83cc567b902aec97"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row_align1_prod_TA" ref="a2f96a043e1f5fe8c83cc567b902aec97" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">matrix_prod_col_col_row_align1_prod_TA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac4a39da13117659b719f166fcd672e87"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row_align1_prod_TT" ref="ac4a39da13117659b719f166fcd672e87" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">matrix_prod_col_col_row_align1_prod_TT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abbc9ba0dc9337a72a3383ffbe3ece2be"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col_align1_prod_AA" ref="abbc9ba0dc9337a72a3383ffbe3ece2be" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">matrix_prod_col_row_col_align1_prod_AA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab22a3b2118659fd89ee18b3184179b11"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col_align1_prod_AT" ref="ab22a3b2118659fd89ee18b3184179b11" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">matrix_prod_col_row_col_align1_prod_AT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5edeccd546f0eadbb9571e630e021540"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col_align1_prod_TA" ref="a5edeccd546f0eadbb9571e630e021540" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">matrix_prod_col_row_col_align1_prod_TA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5f29013a551bc80e2f584ee0703b933a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col_align1_prod_TT" ref="a5f29013a551bc80e2f584ee0703b933a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">matrix_prod_col_row_col_align1_prod_TT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="acea6f91a7bb64d20eabc17c5c933f13c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row_align1_prod_AA" ref="acea6f91a7bb64d20eabc17c5c933f13c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">matrix_prod_col_row_row_align1_prod_AA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adeec2e8218f612a6159c254c74bc1e28"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row_align1_prod_AT" ref="adeec2e8218f612a6159c254c74bc1e28" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">matrix_prod_col_row_row_align1_prod_AT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac362e21f087a297f5ef74064e1da5221"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row_align1_prod_TA" ref="ac362e21f087a297f5ef74064e1da5221" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">matrix_prod_col_row_row_align1_prod_TA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adf6226532e11f69706ce4e32176fa831"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row_align1_prod_TT" ref="adf6226532e11f69706ce4e32176fa831" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">matrix_prod_col_row_row_align1_prod_TT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a05a52bedf85128aac86d63b689c394ee"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col_align1_prod_AA" ref="a05a52bedf85128aac86d63b689c394ee" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">matrix_prod_row_col_col_align1_prod_AA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abe0b416c34cc02fa806e6d21bf7dc8b4"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col_align1_prod_AT" ref="abe0b416c34cc02fa806e6d21bf7dc8b4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">matrix_prod_row_col_col_align1_prod_AT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0589c4b9d87acb1bbf62cb43b27574a3"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col_align1_prod_TA" ref="a0589c4b9d87acb1bbf62cb43b27574a3" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">matrix_prod_row_col_col_align1_prod_TA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a428682a97692095740453532fe2906fb"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col_align1_prod_TT" ref="a428682a97692095740453532fe2906fb" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">matrix_prod_row_col_col_align1_prod_TT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af063c40a383e7665641216244ab87cfc"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row_align1_prod_AA" ref="af063c40a383e7665641216244ab87cfc" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">matrix_prod_row_col_row_align1_prod_AA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1258e5ecb584104ba31dfd7a69ec144c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row_align1_prod_AT" ref="a1258e5ecb584104ba31dfd7a69ec144c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">matrix_prod_row_col_row_align1_prod_AT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8b1e7141a8471fa43895c6ff5c98fef5"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row_align1_prod_TA" ref="a8b1e7141a8471fa43895c6ff5c98fef5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">matrix_prod_row_col_row_align1_prod_TA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a208747fb17bedb79efeee607bfd2726d"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row_align1_prod_TT" ref="a208747fb17bedb79efeee607bfd2726d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">matrix_prod_row_col_row_align1_prod_TT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae35cf2f6668694cd241ec9ad2dc4ad36"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col_align1_prod_AA" ref="ae35cf2f6668694cd241ec9ad2dc4ad36" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">matrix_prod_row_row_col_align1_prod_AA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6f1ab1cc0f9c3d83a0ae4af5e979f114"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col_align1_prod_AT" ref="a6f1ab1cc0f9c3d83a0ae4af5e979f114" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">matrix_prod_row_row_col_align1_prod_AT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a754f78f2f489e8ca90baacbfe1e9b183"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col_align1_prod_TA" ref="a754f78f2f489e8ca90baacbfe1e9b183" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">matrix_prod_row_row_col_align1_prod_TA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aeaacb34ad4d7af0748f20cb15d28fb90"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col_align1_prod_TT" ref="aeaacb34ad4d7af0748f20cb15d28fb90" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">matrix_prod_row_row_col_align1_prod_TT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a13669ba8de217f48f2a508f1370aa001"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row_align1_prod_AA" ref="a13669ba8de217f48f2a508f1370aa001" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">matrix_prod_row_row_row_align1_prod_AA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aee3c811dcc955ebe1e4ac0ee7c8623e4"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row_align1_prod_AT" ref="aee3c811dcc955ebe1e4ac0ee7c8623e4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">matrix_prod_row_row_row_align1_prod_AT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a828550d7744ef6fc9e101ea86aeb90a7"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row_align1_prod_TA" ref="a828550d7744ef6fc9e101ea86aeb90a7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">matrix_prod_row_row_row_align1_prod_TA</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ade104e7ca7236758ddee34aec77bf9ca"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row_align1_prod_TT" ref="ade104e7ca7236758ddee34aec77bf9ca" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">matrix_prod_row_row_row_align1_prod_TT</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a545c9b4b0a1792bf8d17993faff0b834"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_add" ref="a545c9b4b0a1792bf8d17993faff0b834" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af4c5cae8ac67261f3e2f7bbb691b8fb7"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_clear" ref="af4c5cae8ac67261f3e2f7bbb691b8fb7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9844a2a540c973dca6fa8bbc5a803ba0"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_cpu_inplace_mult" ref="a9844a2a540c973dca6fa8bbc5a803ba0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abf38bb9a1e7f9c3a9afd961da809077a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_inplace_add" ref="abf38bb9a1e7f9c3a9afd961da809077a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8b630332b2f19a4ee34c59a2aaad20a7"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_inplace_divide" ref="a8b630332b2f19a4ee34c59a2aaad20a7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa6af3f80ae32daf56bfd478bf976b5e8"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_inplace_mult" ref="aa6af3f80ae32daf56bfd478bf976b5e8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab02d2547b661f2569c81430d86560a8d"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_inplace_sub" ref="ab02d2547b661f2569c81430d86560a8d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9c02c62c673821890e7d34a07bba5bd3"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_lower_triangular_substitute_inplace" ref="a9c02c62c673821890e7d34a07bba5bd3" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="add7af88723cbcaf172eb7d9b3f5c9c65"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_lu_factorize" ref="add7af88723cbcaf172eb7d9b3f5c9c65" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a> = "} \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a92ce385a3b329c0f6c21ef5be713a679"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_rank1_update" ref="a92ce385a3b329c0f6c21ef5be713a679" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af0cd080d9c0257143a74594cc4516cff"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_scaled_rank1_update" ref="af0cd080d9c0257143a74594cc4516cff" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a70f2f793567bfb49d178c092ccd75289"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_sub" ref="a70f2f793567bfb49d178c092ccd75289" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a03be4a2b5d6746dd924285ed8ca7e180"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_trans_lower_triangular_substitute_inplace" ref="a03be4a2b5d6746dd924285ed8ca7e180" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab0631f1611fd61d5993e9445f89843b5"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_trans_unit_lower_triangular_substitute_inplace" ref="ab0631f1611fd61d5993e9445f89843b5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a> = "\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1e0da55efc3209ef859f7e368f00f6c6"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_trans_unit_upper_triangular_substitute_inplace" ref="a1e0da55efc3209ef859f7e368f00f6c6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a21bb76ea083d7d7972f54892c16d1c08"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_trans_upper_triangular_substitute_inplace" ref="a21bb76ea083d7d7972f54892c16d1c08" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="acc0ae3e1f88715166e472f31302d6784"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_trans_vec_mul" ref="acc0ae3e1f88715166e472f31302d6784" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2aae74fb1c98fcc28c329a805437619f"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_unit_lower_triangular_substitute_inplace" ref="a2aae74fb1c98fcc28c329a805437619f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a526973004121a16dac507fd871935201"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_unit_upper_triangular_substitute_inplace" ref="a526973004121a16dac507fd871935201" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac5efbd05ad8968329503444482095868"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_upper_triangular_substitute_inplace" ref="ac5efbd05ad8968329503444482095868" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a900360eed3f23ed931015825b244391c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_vec_mul" ref="a900360eed3f23ed931015825b244391c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a> = "\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2d534a514f612444c450eb25a0129fa4"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_lower_solve" ref="a2d534a514f612444c450eb25a0129fa4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">matrix_solve_col_col_align1_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a24cb6ebf6945502f771c6a07f4e3cdf2"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_lower_trans_solve" ref="a24cb6ebf6945502f771c6a07f4e3cdf2" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">matrix_solve_col_col_align1_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab6f8b74ad2a6512511407ba5eb70ee4a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_lower_solve" ref="ab6f8b74ad2a6512511407ba5eb70ee4a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">matrix_solve_col_col_align1_trans_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a54ef2ad621025251c4c8fd996e978caf"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_lower_trans_solve" ref="a54ef2ad621025251c4c8fd996e978caf" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">matrix_solve_col_col_align1_trans_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a77380857aa1d0b3e8c0cdd6f28041ff5"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_unit_lower_solve" ref="a77380857aa1d0b3e8c0cdd6f28041ff5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">matrix_solve_col_col_align1_trans_unit_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adc6d6038c9bd1ebc9f001b736ae2646a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_unit_lower_trans_solve" ref="adc6d6038c9bd1ebc9f001b736ae2646a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">matrix_solve_col_col_align1_trans_unit_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa6a36a4ca6b514a505965840b3aeaec7"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_unit_upper_solve" ref="aa6a36a4ca6b514a505965840b3aeaec7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">matrix_solve_col_col_align1_trans_unit_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a021ea598a05b988ec2b5549bbccd1d73"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_unit_upper_trans_solve" ref="a021ea598a05b988ec2b5549bbccd1d73" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">matrix_solve_col_col_align1_trans_unit_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a939ebfef898dabb2c4d3110ead340aca"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_upper_solve" ref="a939ebfef898dabb2c4d3110ead340aca" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">matrix_solve_col_col_align1_trans_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa41b51df8a76b94a80e342400bbcffe6"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_upper_trans_solve" ref="aa41b51df8a76b94a80e342400bbcffe6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">matrix_solve_col_col_align1_trans_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa54e13ad8aad9054b988fff5cb164a66"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_unit_lower_solve" ref="aa54e13ad8aad9054b988fff5cb164a66" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">matrix_solve_col_col_align1_unit_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a3bb55aaa8905e7c0e65a6bfed22e74ca"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_unit_lower_trans_solve" ref="a3bb55aaa8905e7c0e65a6bfed22e74ca" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">matrix_solve_col_col_align1_unit_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac49993d1c530fa2b974339e512b1f0ea"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_unit_upper_solve" ref="ac49993d1c530fa2b974339e512b1f0ea" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">matrix_solve_col_col_align1_unit_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1f8316e87fc5d8b3b7a8489d2739967b"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_unit_upper_trans_solve" ref="a1f8316e87fc5d8b3b7a8489d2739967b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">matrix_solve_col_col_align1_unit_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af1baac9a82e22ae9e1ecfb2d1f8815b8"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_upper_solve" ref="af1baac9a82e22ae9e1ecfb2d1f8815b8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">matrix_solve_col_col_align1_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad3dd9852595ba666caf92a08117bf966"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_upper_trans_solve" ref="ad3dd9852595ba666caf92a08117bf966" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">matrix_solve_col_col_align1_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a78215c22983649f9f24373d721f54c95"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_lower_solve" ref="a78215c22983649f9f24373d721f54c95" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">matrix_solve_col_row_align1_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abff28284726ec1004425868639ad4e26"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_lower_trans_solve" ref="abff28284726ec1004425868639ad4e26" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">matrix_solve_col_row_align1_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae126f58592e9b3c20662326d1796889c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_lower_solve" ref="ae126f58592e9b3c20662326d1796889c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">matrix_solve_col_row_align1_trans_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a31bfee98b555b09302cbbb4a27172c94"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_lower_trans_solve" ref="a31bfee98b555b09302cbbb4a27172c94" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">matrix_solve_col_row_align1_trans_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aff367cbba8fcd26e25c91fb6f412f8d4"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_unit_lower_solve" ref="aff367cbba8fcd26e25c91fb6f412f8d4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">matrix_solve_col_row_align1_trans_unit_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac6ae5b209658e8555ed5d6bda72a3ed4"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_unit_lower_trans_solve" ref="ac6ae5b209658e8555ed5d6bda72a3ed4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">matrix_solve_col_row_align1_trans_unit_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a270193ce008b0aa64d42676d59861086"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_unit_upper_solve" ref="a270193ce008b0aa64d42676d59861086" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">matrix_solve_col_row_align1_trans_unit_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a955f39b5ca5ed074c0990692c46764bc"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_unit_upper_trans_solve" ref="a955f39b5ca5ed074c0990692c46764bc" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">matrix_solve_col_row_align1_trans_unit_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac145c2e398511a142a753224f8e8690a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_upper_solve" ref="ac145c2e398511a142a753224f8e8690a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">matrix_solve_col_row_align1_trans_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae104558e06b30b8f770a3be0760ca082"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_upper_trans_solve" ref="ae104558e06b30b8f770a3be0760ca082" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">matrix_solve_col_row_align1_trans_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac4e307cd17f3b4e0d16e95e04055fd1c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_unit_lower_solve" ref="ac4e307cd17f3b4e0d16e95e04055fd1c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">matrix_solve_col_row_align1_unit_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a43ffee3be9fbc0fdc8a754a94f22d1f2"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_unit_lower_trans_solve" ref="a43ffee3be9fbc0fdc8a754a94f22d1f2" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">matrix_solve_col_row_align1_unit_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adcee8b4b8ca0806c20c0e8972c6f8142"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_unit_upper_solve" ref="adcee8b4b8ca0806c20c0e8972c6f8142" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">matrix_solve_col_row_align1_unit_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af63c83173f7e908340cd294bbba5d852"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_unit_upper_trans_solve" ref="af63c83173f7e908340cd294bbba5d852" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">matrix_solve_col_row_align1_unit_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7c50ca9770f02570a11b71b44360b49c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_upper_solve" ref="a7c50ca9770f02570a11b71b44360b49c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">matrix_solve_col_row_align1_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af8589ed3b507fabd4aad0112dc732a69"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_upper_trans_solve" ref="af8589ed3b507fabd4aad0112dc732a69" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">matrix_solve_col_row_align1_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aee7bc4916a411220ef52c763b4be4c94"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_lower_solve" ref="aee7bc4916a411220ef52c763b4be4c94" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">matrix_solve_row_col_align1_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad697c4de0f85cd8debd310b73334b931"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_lower_trans_solve" ref="ad697c4de0f85cd8debd310b73334b931" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">matrix_solve_row_col_align1_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1644009ec774ac3af40dedca25f02b43"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_lower_solve" ref="a1644009ec774ac3af40dedca25f02b43" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">matrix_solve_row_col_align1_trans_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a07e3d67b289b94145eca4d9ea4edc079"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_lower_trans_solve" ref="a07e3d67b289b94145eca4d9ea4edc079" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">matrix_solve_row_col_align1_trans_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adac154dadad82ab2c12cae9f84ef1df7"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_unit_lower_solve" ref="adac154dadad82ab2c12cae9f84ef1df7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">matrix_solve_row_col_align1_trans_unit_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac1ebfab7f817353979201a6ecc05279c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_unit_lower_trans_solve" ref="ac1ebfab7f817353979201a6ecc05279c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">matrix_solve_row_col_align1_trans_unit_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abcbe77e90a855b1915a02a5b09e97633"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_unit_upper_solve" ref="abcbe77e90a855b1915a02a5b09e97633" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">matrix_solve_row_col_align1_trans_unit_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abe735648f8f4c96a072aa60b8a637210"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_unit_upper_trans_solve" ref="abe735648f8f4c96a072aa60b8a637210" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">matrix_solve_row_col_align1_trans_unit_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a758abc7996e0a07039a93dcaee77c6b2"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_upper_solve" ref="a758abc7996e0a07039a93dcaee77c6b2" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">matrix_solve_row_col_align1_trans_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af789c406c430d05d122fd850b85d00d1"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_upper_trans_solve" ref="af789c406c430d05d122fd850b85d00d1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">matrix_solve_row_col_align1_trans_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a3ee6f476aa9b7cb1b623ae9a41da8854"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_unit_lower_solve" ref="a3ee6f476aa9b7cb1b623ae9a41da8854" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">matrix_solve_row_col_align1_unit_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab7f23601bc8a0818e7745c27bf0186b0"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_unit_lower_trans_solve" ref="ab7f23601bc8a0818e7745c27bf0186b0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">matrix_solve_row_col_align1_unit_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aeaa2c124938d8f8a11318dcfca6cffb7"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_unit_upper_solve" ref="aeaa2c124938d8f8a11318dcfca6cffb7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">matrix_solve_row_col_align1_unit_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9aee54f5b4a250b6ad2e9d665397de21"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_unit_upper_trans_solve" ref="a9aee54f5b4a250b6ad2e9d665397de21" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">matrix_solve_row_col_align1_unit_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abe51b8d1833765a52b6830c6da84ea8a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_upper_solve" ref="abe51b8d1833765a52b6830c6da84ea8a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">matrix_solve_row_col_align1_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a21c6ee6e93c7c8b1fa19a410b6b10b4c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_upper_trans_solve" ref="a21c6ee6e93c7c8b1fa19a410b6b10b4c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">matrix_solve_row_col_align1_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a47a55c22319a627f4ddfaadc8a3bc395"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_lower_solve" ref="a47a55c22319a627f4ddfaadc8a3bc395" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">matrix_solve_row_row_align1_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af8347360e2f78d49462a13e20336e6b4"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_lower_trans_solve" ref="af8347360e2f78d49462a13e20336e6b4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">matrix_solve_row_row_align1_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1a71ccad145753382293e7c41ff4d91f"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_lower_solve" ref="a1a71ccad145753382293e7c41ff4d91f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">matrix_solve_row_row_align1_trans_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a21487c859248981569c22730431fe355"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_lower_trans_solve" ref="a21487c859248981569c22730431fe355" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">matrix_solve_row_row_align1_trans_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a162269e10b910565c04bfc943574b347"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_unit_lower_solve" ref="a162269e10b910565c04bfc943574b347" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">matrix_solve_row_row_align1_trans_unit_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1688b5cdd2b3e827d05b5ff9177824f0"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_unit_lower_trans_solve" ref="a1688b5cdd2b3e827d05b5ff9177824f0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">matrix_solve_row_row_align1_trans_unit_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a204b1f86b6445fa50f0b9d2ece6d462f"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_unit_upper_solve" ref="a204b1f86b6445fa50f0b9d2ece6d462f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">matrix_solve_row_row_align1_trans_unit_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4bf66ae99d8acfd8246dbbdf6f060023"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_unit_upper_trans_solve" ref="a4bf66ae99d8acfd8246dbbdf6f060023" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">matrix_solve_row_row_align1_trans_unit_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7296a554e65162624570e075ddb88608"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_upper_solve" ref="a7296a554e65162624570e075ddb88608" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">matrix_solve_row_row_align1_trans_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a75d1c561429a2bf470e6f25d71edb1c6"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_upper_trans_solve" ref="a75d1c561429a2bf470e6f25d71edb1c6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">matrix_solve_row_row_align1_trans_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4010f8c4fb55c98c060c7c586290980f"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_unit_lower_solve" ref="a4010f8c4fb55c98c060c7c586290980f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">matrix_solve_row_row_align1_unit_lower_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a89fa78cffd6743b141c5e407854de6e9"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_unit_lower_trans_solve" ref="a89fa78cffd6743b141c5e407854de6e9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">matrix_solve_row_row_align1_unit_lower_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac977da2329673fb4679835c950a3f202"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_unit_upper_solve" ref="ac977da2329673fb4679835c950a3f202" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">matrix_solve_row_row_align1_unit_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac7de6b0ee7cc7c54a25a4d001ffbbd9d"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_unit_upper_trans_solve" ref="ac7de6b0ee7cc7c54a25a4d001ffbbd9d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">matrix_solve_row_row_align1_unit_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a09fd9cd01e7cafcdc73fd83bb56fba72"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_upper_solve" ref="a09fd9cd01e7cafcdc73fd83bb56fba72" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">matrix_solve_row_row_align1_upper_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7d7299379c1d9ebaef57a9aab3f5ff01"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_upper_trans_solve" ref="a7d7299379c1d9ebaef57a9aab3f5ff01" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">matrix_solve_row_row_align1_upper_trans_solve</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4134dce422026940aece28e05f122d7a"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_add" ref="a4134dce422026940aece28e05f122d7a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">scalar_align1_add</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad39daaa59a1ce4c7e8179b039f15ab88"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_add" ref="ad39daaa59a1ce4c7e8179b039f15ab88" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">scalar_align1_cpu_add</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7b6cb3a8d98a1716a72eb015bac6da73"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_div" ref="a7b6cb3a8d98a1716a72eb015bac6da73" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">scalar_align1_cpu_div</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a58a8800fd41c5321dcce73e4308f2aef"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_inplace_add" ref="a58a8800fd41c5321dcce73e4308f2aef" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">scalar_align1_cpu_inplace_add</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afdd42ae544513230e5fb3f3da1cc8dd1"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_inplace_div" ref="afdd42ae544513230e5fb3f3da1cc8dd1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">scalar_align1_cpu_inplace_div</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8402d8e4dc09b0b2595f5d7ffd8257a8"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_inplace_mul" ref="a8402d8e4dc09b0b2595f5d7ffd8257a8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">scalar_align1_cpu_inplace_mul</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5bf7e01714c3930370d605a6d232c2b9"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_inplace_sub" ref="a5bf7e01714c3930370d605a6d232c2b9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">scalar_align1_cpu_inplace_sub</a> = "\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa5bda88a240ae932a07409a974af4532"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_mul" ref="aa5bda88a240ae932a07409a974af4532" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">scalar_align1_cpu_mul</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0bad690dfcab5f50859def44e42ddd91"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_sub" ref="a0bad690dfcab5f50859def44e42ddd91" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">scalar_align1_cpu_sub</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac0d464f4ce3e0ad1d271a7de50a229ae"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_divide" ref="ac0d464f4ce3e0ad1d271a7de50a229ae" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">scalar_align1_divide</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a545f737c0552ff312a01b072097f92eb"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_inplace_add" ref="a545f737c0552ff312a01b072097f92eb" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">scalar_align1_inplace_add</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a99b5afe289c44e60b7e8b66fdff216f0"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_inplace_div" ref="a99b5afe289c44e60b7e8b66fdff216f0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">scalar_align1_inplace_div</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a596ae1eef52cc8e6ed6e68b9868cf8ed"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_inplace_mul" ref="a596ae1eef52cc8e6ed6e68b9868cf8ed" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">scalar_align1_inplace_mul</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad4a92b9ae96ae6cb112fe4ead6e1c2b4"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_inplace_sub" ref="ad4a92b9ae96ae6cb112fe4ead6e1c2b4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">scalar_align1_inplace_sub</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab8e34ee4c364b0221730c266219f8557"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_mul" ref="ab8e34ee4c364b0221730c266219f8557" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">scalar_align1_mul</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7a813e983f09a4427d218a680274a054"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_sub" ref="a7a813e983f09a4427d218a680274a054" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">scalar_align1_sub</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aac17cc82a82c3995db312f66af135cdd"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_add" ref="aac17cc82a82c3995db312f66af135cdd" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">vector_align16_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a856ca9e5a1b846cf568a00bf382dd17c"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_cpu_inplace_mul" ref="a856ca9e5a1b846cf568a00bf382dd17c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">vector_align16_cpu_inplace_mul</a> = "\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a871165366e49272cadf5577a72727adb"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_cpu_mult" ref="a871165366e49272cadf5577a72727adb" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">vector_align16_cpu_mult</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aade9b99bbe8d0e90a0c4a085e5b2134f"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_divide" ref="aade9b99bbe8d0e90a0c4a085e5b2134f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">vector_align16_divide</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a68974b111e7fea103a47da8bc394e027"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_inplace_add" ref="a68974b111e7fea103a47da8bc394e027" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">vector_align16_inplace_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a36871c851eca44d6c80f48a75b26c9a1"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_inplace_divide" ref="a36871c851eca44d6c80f48a75b26c9a1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">vector_align16_inplace_divide</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a409c99f8f615c4c0c46492c0ac23fca9"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_inplace_mult" ref="a409c99f8f615c4c0c46492c0ac23fca9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">vector_align16_inplace_mult</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2aa4d7333e4a406ce54bb08626cd0d0c"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_inplace_sub" ref="a2aa4d7333e4a406ce54bb08626cd0d0c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">vector_align16_inplace_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a13d8a0dd51329a0a01306b83427d2bf1"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_mult" ref="a13d8a0dd51329a0a01306b83427d2bf1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">vector_align16_mult</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a558efc15c32913225f8782d17e4bd263"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_sub" ref="a558efc15c32913225f8782d17e4bd263" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">vector_align16_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4644450b5bed0354a30e7f26a500aa44"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_add" ref="a4644450b5bed0354a30e7f26a500aa44" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a96d4c1b730f29d791b6d37cfad6e0e2e"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_clear" ref="a96d4c1b730f29d791b6d37cfad6e0e2e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6e5d349435efcbcec62e2811ff1402a9"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_cpu_inplace_mul_add" ref="a6e5d349435efcbcec62e2811ff1402a9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">vector_align1_cpu_inplace_mul_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aceecbcde1257bb801edcba170eefaefe"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_cpu_inplace_mult" ref="aceecbcde1257bb801edcba170eefaefe" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a907caa29f143941388d80c970cf85861"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_cpu_mul_add" ref="a907caa29f143941388d80c970cf85861" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">vector_align1_cpu_mul_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a12809202c5e7df94fe3a314c4d414e2b"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_cpu_mult" ref="a12809202c5e7df94fe3a314c4d414e2b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6009338719ce296eabc91af4761c3163"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_diag_precond" ref="a6009338719ce296eabc91af4761c3163" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0e37957e1e7b56029efd6fef22e8065e"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_divide" ref="a0e37957e1e7b56029efd6fef22e8065e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a82b1498269a9022b247d6ac60a2116e0"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_index_norm_inf" ref="a82b1498269a9022b247d6ac60a2116e0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a> = "\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a964b4612e0b77e8925335b1b784cd5c4"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inner_prod" ref="a964b4612e0b77e8925335b1b784cd5c4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0752b6f86b225eb7d6e326ebfb979773"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_add" ref="a0752b6f86b225eb7d6e326ebfb979773" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9e25c2ae7680939cab4868a9c29cb6dd"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_div_add" ref="a9e25c2ae7680939cab4868a9c29cb6dd" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">vector_align1_inplace_div_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac2585e94f467a8703c774142cca17e54"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_div_sub" ref="ac2585e94f467a8703c774142cca17e54" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">vector_align1_inplace_div_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a87bd810e4986cf9f65bc98741329fa2a"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_divide" ref="a87bd810e4986cf9f65bc98741329fa2a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aea72487f3fa81f2fa16cd5b2e77499ed"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_mul_add" ref="aea72487f3fa81f2fa16cd5b2e77499ed" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">vector_align1_inplace_mul_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a68c670ee8d4918f6773e7b5ef4b10f5c"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_mul_sub" ref="a68c670ee8d4918f6773e7b5ef4b10f5c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">vector_align1_inplace_mul_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a032468ecb3b8a8977ab25dc308174a17"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_mult" ref="a032468ecb3b8a8977ab25dc308174a17" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8be10b47607e0aba6f1528969eadb613"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_sub" ref="a8be10b47607e0aba6f1528969eadb613" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a74dd6c45922bdc18ee431054e4ef0d2e"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_mul_add" ref="a74dd6c45922bdc18ee431054e4ef0d2e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">vector_align1_mul_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adf7719cde9099c9e7f4871e4c168ed7a"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_mul_sub" ref="adf7719cde9099c9e7f4871e4c168ed7a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad2c633faeaf02b8e8eb4eaae13e57c15"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_mult" ref="ad2c633faeaf02b8e8eb4eaae13e57c15" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5d63eb770f765f00d7844b2f062b6e53"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_norm_1" ref="a5d63eb770f765f00d7844b2f062b6e53" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a> = "\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae2e937dcf380e0157a213390426e5865"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_norm_2" ref="ae2e937dcf380e0157a213390426e5865" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a> = "\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac6f96be4155b23916953807f3b2d9a6b"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_norm_inf" ref="ac6f96be4155b23916953807f3b2d9a6b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac71cca04d5546ec4f05ea90c01e188e5"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_plane_rotation" ref="ac71cca04d5546ec4f05ea90c01e188e5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a67009d4a18e1d46aadf9929826711048"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_sqrt_sum" ref="a67009d4a18e1d46aadf9929826711048" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aae25f12f886fb6b36885ff389f68ed23"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_sub" ref="aae25f12f886fb6b36885ff389f68ed23" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa1a2b931b02afb528ae5aef33087f555"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_sum" ref="aa1a2b931b02afb528ae5aef33087f555" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1d7a3c17099d6663f53ee9fec8712051"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_swap" ref="a1d7a3c17099d6663f53ee9fec8712051" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a> = " \n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a92c69656763ed08bcbdcd1d035b4d7f0"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_vmax" ref="a92c69656763ed08bcbdcd1d035b4d7f0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abd9091b11b3540ffbf5255ae48bb88c5"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_cpu_inplace_mul_add" ref="abd9091b11b3540ffbf5255ae48bb88c5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2c8531be2d8faaeaa5792b8d9abbe47a"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_cpu_mul_add" ref="a2c8531be2d8faaeaa5792b8d9abbe47a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a32c5e56374f5fb07243905bc98192ed8"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_inplace_div_add" ref="a32c5e56374f5fb07243905bc98192ed8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a78dc391cab58d160dd73e4c400e02c7e"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_inplace_div_sub" ref="a78dc391cab58d160dd73e4c400e02c7e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abc3c71bf976f8fe2db2bff85801db645"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_inplace_mul_add" ref="abc3c71bf976f8fe2db2bff85801db645" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a063ef5b8264defb1b8294a8b2e0f0e0e"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_inplace_mul_sub" ref="a063ef5b8264defb1b8294a8b2e0f0e0e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abe251ca4405801494141c923d47d3141"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_mul_add" ref="abe251ca4405801494141c923d47d3141" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a> = "}\n"</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1ocl.html b/doc/doxygen/html/namespaceviennacl_1_1ocl.html
deleted file mode 100644
index bdb1fad..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1ocl.html
+++ /dev/null
@@ -1,703 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::ocl Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>viennacl::ocl Namespace Reference</h1>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html">backend</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A backend that provides contexts for ViennaCL objects (vector, matrix, etc.).  <a href="classviennacl_1_1ocl_1_1backend.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A class representing a command queue.  <a href="classviennacl_1_1ocl_1_1command__queue.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A class representing a compute device (e.g. a GPU).  <a href="classviennacl_1_1ocl_1_1device.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">error_checker</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An error reporting class. Template argument is used to avoid problems with external linkage.  <a href="structviennacl_1_1ocl_1_1error__checker.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">handle_inc_dec_helper</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper for OpenCL reference counting used by class handle.  <a href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">handle_inc_dec_helper< cl_mem ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">handle_inc_dec_helper< cl_program ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">handle_inc_dec_helper< cl_kernel ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">handle_inc_dec_helper< cl_command_queue ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">handle_inc_dec_helper< cl_context ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Handle class the effectively represents a smart pointer for OpenCL handles.  <a href="classviennacl_1_1ocl_1_1handle.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Represents an OpenCL kernel within ViennaCL.  <a href="classviennacl_1_1ocl_1_1kernel.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A class representing local (shared) OpenCL memory. Typically used as kernel argument.  <a href="classviennacl_1_1ocl_1_1local__mem.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">DOUBLE_PRECISION_CHECKER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a <a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> is thrown.  <a href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">DOUBLE_PRECISION_CHECKER< double ></a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf">current_context</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the current context.  <a href="#a0c2a174533a0aca403ff7c4aa802edcf"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6">switch_context</a> (long i)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for switching the current context.  <a href="#acc1a7460a9ff237b7c0306c32c3d34c6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb">setup_context</a> (long i, std::vector< cl_device_id > const &devices)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting devices for a context.  <a href="#add1725d48cfd159ce187e287369d1cdb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a643e413cdc3e3d682c8ae0c6f0a83e0a">setup_context</a> (long i, cl_context c, std::vector< cl_device_id > const &devices, std::map< cl_device_id, std::vector< cl_command_queue > > const &queues)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting up a context in ViennaCL from an existing OpenCL context.  <a href="#a643e413cdc3e3d682c8ae0c6f0a83e0a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aae5ebc6a53d1c2ac134b5d955c61ad9e">setup_context</a> (long i, cl_context c, std::vector< cl_device_id > const &devices, std::vector< cl_command_queue > const &queues)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting up a context in ViennaCL from an existing OpenCL context.  <a href="#aae5ebc6a53d1c2ac134b5d955c61ad9e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a4ee09e7150e7158ac0e2fbfe21740138">setup_context</a> (long i, cl_context c, cl_device_id d, cl_command_queue q)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting up a context in ViennaCL from an existing OpenCL context.  <a href="#a4ee09e7150e7158ac0e2fbfe21740138"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd">set_context_device_type</a> (long i, cl_device_type dev_type)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context.  <a href="#a11349d9bbd1691595c6ac23d03b294fd"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a0bda50e7a1d1ce32d0eb999bcf40ff65">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">viennacl::ocl::gpu_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to GPUs.  <a href="#a0bda50e7a1d1ce32d0eb999bcf40ff65"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aae6d53d33250af634366a082eb389e1e">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">viennacl::ocl::cpu_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to CPUs.  <a href="#aae6d53d33250af634366a082eb389e1e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aa55ca72f1d88e6366d9d7555d5fd3e3c">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">viennacl::ocl::default_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to the default OpenCL device type.  <a href="#aa55ca72f1d88e6366d9d7555d5fd3e3c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a8eb7b871db32c1425afe547854885e83">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">viennacl::ocl::accelerator_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to accelerators.  <a href="#a8eb7b871db32c1425afe547854885e83"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a">get_queue</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the default queue for the currently active device in the active context.  <a href="#ac7871671987d322a8766aea79b1cd17a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a053c7351f8606ff49117e251683a77b4">get_queue</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> d, unsigned int queue_id=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the queue for a particular device in the current active context.  <a href="#a053c7351f8606ff49117e251683a77b4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aaa732391e632ec192953cc997fa269df">get_queue</a> (cl_device_id dev_id, unsigned int queue_id=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the queue for a particular device in the current active context.  <a href="#aaa732391e632ec192953cc997fa269df"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f">get_kernel</a> (std::string const &prog_name, std::string const &kernel_name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the kernel for a particular program from the current active context.  <a href="#a61a73653d92f1eb2ef9c649ec253e29f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#ac8bcead4c47a372eef33d7d660fa0072">switch_device</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> &d)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for switching the active device in the current context.  <a href="#ac8bcead4c47a372eef33d7d660fa0072"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5">current_device</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the active device in the current context.  <a href="#a31b4bfa886efdae7ada1c0c5f2591ed5"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KernelType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084">enqueue</a> (KernelType &k, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> const &queue)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueues a kernel in the provided queue.  <a href="#a46527eb5023de820b1f1c16ec5a11084"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KernelType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#ab0e19e66c4f09964ef88fcfdf1a5afc3">enqueue</a> (KernelType &k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function that enqueues the provided kernel into the first queue of the currently active device in the currently active context.  <a href="#ab0e19e66c4f09964ef88fcfdf1a5afc3"></a><br/></td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a0c2a174533a0aca403ff7c4aa802edcf"></a><!-- doxytag: member="viennacl::ocl::current_context" ref="a0c2a174533a0aca403ff7c4aa802edcf" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & current_context </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for returning the current context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a31b4bfa886efdae7ada1c0c5f2591ed5"></a><!-- doxytag: member="viennacl::ocl::current_device" ref="a31b4bfa886efdae7ada1c0c5f2591ed5" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & current_device </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for returning the active device in the current context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a46527eb5023de820b1f1c16ec5a11084"></a><!-- doxytag: member="viennacl::ocl::enqueue" ref="a46527eb5023de820b1f1c16ec5a11084" args="(KernelType &k, viennacl::ocl::command_queue const &queue)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void enqueue </td>
-          <td>(</td>
-          <td class="paramtype">KernelType & </td>
-          <td class="paramname"> <em>k</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> const & </td>
-          <td class="paramname"> <em>queue</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Enqueues a kernel in the provided queue. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab0e19e66c4f09964ef88fcfdf1a5afc3"></a><!-- doxytag: member="viennacl::ocl::enqueue" ref="ab0e19e66c4f09964ef88fcfdf1a5afc3" args="(KernelType &k)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::ocl::enqueue </td>
-          <td>(</td>
-          <td class="paramtype">KernelType & </td>
-          <td class="paramname"> <em>k</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function that enqueues the provided kernel into the first queue of the currently active device in the currently active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a61a73653d92f1eb2ef9c649ec253e29f"></a><!-- doxytag: member="viennacl::ocl::get_kernel" ref="a61a73653d92f1eb2ef9c649ec253e29f" args="(std::string const &prog_name, std::string const &kernel_name)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a>& viennacl::ocl::get_kernel </td>
-          <td>(</td>
-          <td class="paramtype">std::string const & </td>
-          <td class="paramname"> <em>prog_name</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::string const & </td>
-          <td class="paramname"> <em>kernel_name</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for getting the kernel for a particular program from the current active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="aaa732391e632ec192953cc997fa269df"></a><!-- doxytag: member="viennacl::ocl::get_queue" ref="aaa732391e632ec192953cc997fa269df" args="(cl_device_id dev_id, unsigned int queue_id=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a>& viennacl::ocl::get_queue </td>
-          <td>(</td>
-          <td class="paramtype">cl_device_id </td>
-          <td class="paramname"> <em>dev_id</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>queue_id</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for getting the queue for a particular device in the current active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a053c7351f8606ff49117e251683a77b4"></a><!-- doxytag: member="viennacl::ocl::get_queue" ref="a053c7351f8606ff49117e251683a77b4" args="(viennacl::ocl::device d, unsigned int queue_id=0)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a>& viennacl::ocl::get_queue </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> </td>
-          <td class="paramname"> <em>d</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>queue_id</em> = <code>0</code></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for getting the queue for a particular device in the current active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac7871671987d322a8766aea79b1cd17a"></a><!-- doxytag: member="viennacl::ocl::get_queue" ref="ac7871671987d322a8766aea79b1cd17a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a>& viennacl::ocl::get_queue </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for getting the default queue for the currently active device in the active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="aae6d53d33250af634366a082eb389e1e"></a><!-- doxytag: member="viennacl::ocl::set_context_device_type" ref="aae6d53d33250af634366a082eb389e1e" args="(long i, viennacl::ocl::cpu_tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::ocl::set_context_device_type </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">viennacl::ocl::cpu_tag</a> </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting the default device type for a context to CPUs. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8eb7b871db32c1425afe547854885e83"></a><!-- doxytag: member="viennacl::ocl::set_context_device_type" ref="a8eb7b871db32c1425afe547854885e83" args="(long i, viennacl::ocl::accelerator_tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::ocl::set_context_device_type </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">viennacl::ocl::accelerator_tag</a> </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting the default device type for a context to accelerators. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0bda50e7a1d1ce32d0eb999bcf40ff65"></a><!-- doxytag: member="viennacl::ocl::set_context_device_type" ref="a0bda50e7a1d1ce32d0eb999bcf40ff65" args="(long i, viennacl::ocl::gpu_tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::ocl::set_context_device_type </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">viennacl::ocl::gpu_tag</a> </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting the default device type for a context to GPUs. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa55ca72f1d88e6366d9d7555d5fd3e3c"></a><!-- doxytag: member="viennacl::ocl::set_context_device_type" ref="aa55ca72f1d88e6366d9d7555d5fd3e3c" args="(long i, viennacl::ocl::default_tag)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::ocl::set_context_device_type </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">viennacl::ocl::default_tag</a> </td>
-          <td class="paramname"></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting the default device type for a context to the default OpenCL device type. </p>
-
-</div>
-</div>
-<a class="anchor" id="a11349d9bbd1691595c6ac23d03b294fd"></a><!-- doxytag: member="viennacl::ocl::set_context_device_type" ref="a11349d9bbd1691595c6ac23d03b294fd" args="(long i, cl_device_type dev_type)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::ocl::set_context_device_type </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_device_type </td>
-          <td class="paramname"> <em>dev_type</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting the default device type for a context. </p>
-
-</div>
-</div>
-<a class="anchor" id="add1725d48cfd159ce187e287369d1cdb"></a><!-- doxytag: member="viennacl::ocl::setup_context" ref="add1725d48cfd159ce187e287369d1cdb" args="(long i, std::vector< cl_device_id > const &devices)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::ocl::setup_context </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::vector< cl_device_id > const & </td>
-          <td class="paramname"> <em>devices</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting devices for a context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a643e413cdc3e3d682c8ae0c6f0a83e0a"></a><!-- doxytag: member="viennacl::ocl::setup_context" ref="a643e413cdc3e3d682c8ae0c6f0a83e0a" args="(long i, cl_context c, std::vector< cl_device_id > const &devices, std::map< cl_device_id, std::vector< cl_command_queue > > const &queues)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::ocl::setup_context </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_context </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::vector< cl_device_id > const & </td>
-          <td class="paramname"> <em>devices</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::map< cl_device_id, std::vector< cl_command_queue > > const & </td>
-          <td class="paramname"> <em>queues</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting up a context in ViennaCL from an existing OpenCL context. </p>
-
-</div>
-</div>
-<a class="anchor" id="aae5ebc6a53d1c2ac134b5d955c61ad9e"></a><!-- doxytag: member="viennacl::ocl::setup_context" ref="aae5ebc6a53d1c2ac134b5d955c61ad9e" args="(long i, cl_context c, std::vector< cl_device_id > const &devices, std::vector< cl_command_queue > const &queues)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::ocl::setup_context </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_context </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::vector< cl_device_id > const & </td>
-          <td class="paramname"> <em>devices</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::vector< cl_command_queue > const & </td>
-          <td class="paramname"> <em>queues</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting up a context in ViennaCL from an existing OpenCL context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4ee09e7150e7158ac0e2fbfe21740138"></a><!-- doxytag: member="viennacl::ocl::setup_context" ref="a4ee09e7150e7158ac0e2fbfe21740138" args="(long i, cl_context c, cl_device_id d, cl_command_queue q)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::ocl::setup_context </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_context </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_device_id </td>
-          <td class="paramname"> <em>d</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">cl_command_queue </td>
-          <td class="paramname"> <em>q</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting up a context in ViennaCL from an existing OpenCL context. </p>
-
-</div>
-</div>
-<a class="anchor" id="acc1a7460a9ff237b7c0306c32c3d34c6"></a><!-- doxytag: member="viennacl::ocl::switch_context" ref="acc1a7460a9ff237b7c0306c32c3d34c6" args="(long i)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::ocl::switch_context </td>
-          <td>(</td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>i</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for switching the current context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac8bcead4c47a372eef33d7d660fa0072"></a><!-- doxytag: member="viennacl::ocl::switch_device" ref="ac8bcead4c47a372eef33d7d660fa0072" args="(viennacl::ocl::device &d)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::ocl::switch_device </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> & </td>
-          <td class="paramname"> <em>d</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for switching the active device in the current context. </p>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1tools.html b/doc/doxygen/html/namespaceviennacl_1_1tools.html
deleted file mode 100644
index 66c6e8d..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1tools.html
+++ /dev/null
@@ -1,287 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::tools Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#nested-classes">Data Structures</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>viennacl::tools Namespace Reference</h1>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1result__of.html">result_of</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html">traits</a></td></tr>
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >  <a href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility.  <a href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >  <a href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility.  <a href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_KERNEL_CLASS_DEDUCER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of a helper meta class for deducing the correct kernels for the supplied matrix.  <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectively  <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">MATRIX_SIZE_DEDUCER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands.  <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2  <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Supply suitable increment functions for the iterators:  <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1enable__if.html">enable_if</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Simple enable-if variant that uses the SFINAE pattern.  <a href="structviennacl_1_1tools_1_1enable__if.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">enable_if< false, T ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">CHECK_SCALAR_TEMPLATE_ARGUMENT</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A guard that checks whether the floating point type of GPU types is either float or double.  <a href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes the const qualifier from a type.  <a href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">CONST_REMOVER< const T ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Extracts the vector type from one of the two arguments. Used for the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> type.  <a href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">VECTOR_SIZE_DEDUCER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands.  <a href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">CPU_SCALAR_TYPE_DEDUCER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>  <a href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">CPU_SCALAR_TYPE_DEDUCER< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">CPU_SCALAR_TYPE_DEDUCER< double ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#ae0476afc58ea44d5d67ffe7384f59389">readTextFromFile</a> (const std::string &filename)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a text from a file into a std::string.  <a href="#ae0476afc58ea44d5d67ffe7384f59389"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8">strReplace</a> (const std::string &text, std::string to_search, std::string to_replace)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Replaces all occurances of a substring by another stringstream.  <a href="#aabca73e564ff14ed639cfe0a94c88cf8"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class INT_TYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">INT_TYPE </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#a8422b8f21a3e19bc1dcd4cc3a8447227">roundUpToNextMultiple</a> (INT_TYPE to_reach, INT_TYPE base)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Rounds an integer to the next multiple of another integer.  <a href="#a8422b8f21a3e19bc1dcd4cc3a8447227"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0">make_double_kernel</a> (std::string const &source, std::string platform_info)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a double precision kernel out of a single precision kernel.  <a href="#acac5a5c4b9410d22c87a4286042a42b0"></a><br/></td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="acac5a5c4b9410d22c87a4286042a42b0"></a><!-- doxytag: member="viennacl::tools::make_double_kernel" ref="acac5a5c4b9410d22c87a4286042a42b0" args="(std::string const &source, std::string platform_info)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string viennacl::tools::make_double_kernel </td>
-          <td>(</td>
-          <td class="paramtype">std::string const & </td>
-          <td class="paramname"> <em>source</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::string </td>
-          <td class="paramname"> <em>platform_info</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Create a double precision kernel out of a single precision kernel. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>source</em> </td><td>The source string </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>platform_info</em> </td><td>An info string that contains the OpenCL platform vendor </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The double precision kernel </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ae0476afc58ea44d5d67ffe7384f59389"></a><!-- doxytag: member="viennacl::tools::readTextFromFile" ref="ae0476afc58ea44d5d67ffe7384f59389" args="(const std::string &filename)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string viennacl::tools::readTextFromFile </td>
-          <td>(</td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"> <em>filename</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Reads a text from a file into a std::string. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>filename</em> </td><td>The filename </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The text read from the file </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a8422b8f21a3e19bc1dcd4cc3a8447227"></a><!-- doxytag: member="viennacl::tools::roundUpToNextMultiple" ref="a8422b8f21a3e19bc1dcd4cc3a8447227" args="(INT_TYPE to_reach, INT_TYPE base)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">INT_TYPE viennacl::tools::roundUpToNextMultiple </td>
-          <td>(</td>
-          <td class="paramtype">INT_TYPE </td>
-          <td class="paramname"> <em>to_reach</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">INT_TYPE </td>
-          <td class="paramname"> <em>base</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Rounds an integer to the next multiple of another integer. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>INT_TYPE</em> </td><td>The integer type </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>to_reach</em> </td><td>The integer to be rounded up (ceil operation) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>base</em> </td><td>The base </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The smallest multiple of 'base' such that to_reach <= base </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="aabca73e564ff14ed639cfe0a94c88cf8"></a><!-- doxytag: member="viennacl::tools::strReplace" ref="aabca73e564ff14ed639cfe0a94c88cf8" args="(const std::string &text, std::string to_search, std::string to_replace)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::string viennacl::tools::strReplace </td>
-          <td>(</td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"> <em>text</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::string </td>
-          <td class="paramname"> <em>to_search</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::string </td>
-          <td class="paramname"> <em>to_replace</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Replaces all occurances of a substring by another stringstream. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>text</em> </td><td>The string to search in </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>to_search</em> </td><td>The substring to search for </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>to_replace</em> </td><td>The replacement for found substrings </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The resulting string </dd></dl>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1tools_1_1result__of.html b/doc/doxygen/html/namespaceviennacl_1_1tools_1_1result__of.html
deleted file mode 100644
index c66e308..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1tools_1_1result__of.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::tools::result_of Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools_1_1result__of.html">result_of</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a>  </div>
-  <div class="headertitle">
-<h1>viennacl::tools::result_of Namespace Reference</h1>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1tools_1_1traits.html b/doc/doxygen/html/namespaceviennacl_1_1tools_1_1traits.html
deleted file mode 100644
index 0b9b783..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1tools_1_1traits.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::tools::traits Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html">traits</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>viennacl::tools::traits Namespace Reference</h1>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a> (MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, size_t rows, size_t cols)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a331bbc1a30fe491fc4416993c336bc06">resize</a> (VectorType &vec, size_t new_size)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">clear</a> (VectorType &vec)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> (VectorType &vec)</td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a1e44adefdd155bbd9a9d9a169f9ebcfb"></a><!-- doxytag: member="viennacl::tools::traits::clear" ref="a1e44adefdd155bbd9a9d9a169f9ebcfb" args="(VectorType &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::tools::traits::clear </td>
-          <td>(</td>
-          <td class="paramtype">VectorType & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a331bbc1a30fe491fc4416993c336bc06"></a><!-- doxytag: member="viennacl::tools::traits::resize" ref="a331bbc1a30fe491fc4416993c336bc06" args="(VectorType &vec, size_t new_size)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::tools::traits::resize </td>
-          <td>(</td>
-          <td class="paramtype">VectorType & </td>
-          <td class="paramname"> <em>vec</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>new_size</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2c970f9e5f6646b2c6de39d51a5a7e50"></a><!-- doxytag: member="viennacl::tools::traits::resize" ref="a2c970f9e5f6646b2c6de39d51a5a7e50" args="(MatrixType &matrix, size_t rows, size_t cols)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void viennacl::tools::traits::resize </td>
-          <td>(</td>
-          <td class="paramtype">MatrixType & </td>
-          <td class="paramname"> <em>matrix</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>rows</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>cols</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab56a8d68c5b23bac1e41386447e29c5f"></a><!-- doxytag: member="viennacl::tools::traits::size" ref="ab56a8d68c5b23bac1e41386447e29c5f" args="(VectorType &vec)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned int viennacl::tools::traits::size </td>
-          <td>(</td>
-          <td class="paramtype">VectorType & </td>
-          <td class="paramname"> <em>vec</em></td>
-          <td> ) </td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1traits.html b/doc/doxygen/html/namespaceviennacl_1_1traits.html
deleted file mode 100644
index 905d68f..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1traits.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::traits Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a>  </div>
-  <div class="headertitle">
-<h1>viennacl::traits Namespace Reference</h1>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">tag_of< std::vector< T, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">tag_of< std::vector< std::vector< T, A >, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">tag_of< viennacl::vector< T, alignment > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">tag_of< viennacl::matrix< T, F, alignment > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::compressed_matrix< T, I > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::coordinate_matrix< T, I > ></a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/nav_f.png b/doc/doxygen/html/nav_f.png
deleted file mode 100644
index 1b07a16..0000000
Binary files a/doc/doxygen/html/nav_f.png and /dev/null differ
diff --git a/doc/doxygen/html/nav_h.png b/doc/doxygen/html/nav_h.png
deleted file mode 100644
index 01f5fa6..0000000
Binary files a/doc/doxygen/html/nav_h.png and /dev/null differ
diff --git a/doc/doxygen/html/norm__1_8hpp.html b/doc/doxygen/html/norm__1_8hpp.html
deleted file mode 100644
index f96b118..0000000
--- a/doc/doxygen/html/norm__1_8hpp.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_1.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_1.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Generic interface for the l^1-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations.  
-<a href="#_details">More...</a></p>
-<code>#include <math.h></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>"</code><br/>
-
-<p><a href="norm__1_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">norm_1</a> (VectorT const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, viennacl::op_norm_1 > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ac5e7e99c21b05b4db0e9422d9c9ed181">norm_1</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const &vector, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type *dummy=0)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Generic interface for the l^1-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations. </p>
-<p>Generic interface for the l^infty-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations.</p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/norm__1_8hpp_source.html b/doc/doxygen/html/norm__1_8hpp_source.html
deleted file mode 100644
index b0925e1..0000000
--- a/doc/doxygen/html/norm__1_8hpp_source.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_1.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_1.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="norm__1_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_NORM_1_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_NORM_1_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <math.h></span>    <span class="comment">//for sqrt()</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="tag__of_8hpp.html" title="Dispatch facility for distinguishing between ublas, STL and ViennaCL types.">tag_of.hpp</a>"</span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028   <span class="comment">//</span>
-<a name="l00029"></a>00029   <span class="comment">// generic norm_1 function</span>
-<a name="l00030"></a>00030   <span class="comment">//   uses tag dispatch to identify which algorithm</span>
-<a name="l00031"></a>00031   <span class="comment">//   should be called </span>
-<a name="l00032"></a>00032   <span class="comment">//</span>
-<a name="l00033"></a>00033   <span class="keyword">namespace </span>linalg 
-<a name="l00034"></a>00034   {
-<a name="l00035"></a>00035     
-<a name="l00036"></a>00036 <span class="preprocessor">    #ifdef VIENNACL_HAVE_UBLAS</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00038"></a>00038     <span class="comment">// UBLAS</span>
-<a name="l00039"></a>00039     <span class="comment">//</span>
-<a name="l00040"></a>00040     <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT >
-<a name="l00041"></a>00041     <span class="keyword">typename</span> VectorT::value_type
-<a name="l00042"></a>00042     <a class="code" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">norm_1</a>(VectorT <span class="keyword">const</span>& vector, 
-<a name="l00043"></a>00043          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_ublas</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00044"></a>00044                                             >::type* dummy = 0)
-<a name="l00045"></a>00045     {
-<a name="l00046"></a>00046       <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00047"></a>00047       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">boost::numeric::ublas::norm_1</a>(vector);
-<a name="l00048"></a>00048     }
-<a name="l00049"></a>00049 <span class="preprocessor">    #endif</span>
-<a name="l00050"></a>00050 <span class="preprocessor"></span>    
-<a name="l00051"></a>00051     
-<a name="l00052"></a>00052     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00053"></a>00053     <span class="comment">// STL</span>
-<a name="l00054"></a>00054     <span class="comment">//</span>
-<a name="l00055"></a>00055     <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT>
-<a name="l00056"></a>00056     <span class="keyword">typename</span> VectorT::value_type
-<a name="l00057"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">00057</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">norm_1</a>(VectorT <span class="keyword">const</span>& v1,
-<a name="l00058"></a>00058          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_stl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00059"></a>00059                                             >::type* dummy = 0)
-<a name="l00060"></a>00060     {
-<a name="l00061"></a>00061       <span class="comment">//std::cout << "stl .. " << std::endl;</span>
-<a name="l00062"></a>00062       <span class="keyword">typename</span> VectorT::value_type result = 0;
-<a name="l00063"></a>00063       <span class="keywordflow">for</span> (<span class="keyword">typename</span> VectorT::size_type i=0; i<v1.size(); ++i)
-<a name="l00064"></a>00064         result += fabs(v1[i]);
-<a name="l00065"></a>00065       
-<a name="l00066"></a>00066       <span class="keywordflow">return</span> result;
-<a name="l00067"></a>00067     }
-<a name="l00068"></a>00068     
-<a name="l00069"></a>00069     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00070"></a>00070     <span class="comment">// VIENNACL</span>
-<a name="l00071"></a>00071     <span class="comment">//</span>
-<a name="l00072"></a>00072     <span class="keyword">template</span>< <span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment >
-<a name="l00073"></a>00073     <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment></a>, 
-<a name="l00074"></a>00074                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a>,
-<a name="l00075"></a>00075                                  viennacl::op_norm_1 >
-<a name="l00076"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ac5e7e99c21b05b4db0e9422d9c9ed181">00076</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">norm_1</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a> <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>, 
-<a name="l00077"></a>00077          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a> >::type >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00078"></a>00078                                             >::type* dummy = 0)
-<a name="l00079"></a>00079     {
-<a name="l00080"></a>00080       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment></a>, 
-<a name="l00081"></a>00081                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a>,
-<a name="l00082"></a>00082                                           viennacl::op_norm_1 >(vector, vector);
-<a name="l00083"></a>00083     }
-<a name="l00084"></a>00084 
-<a name="l00085"></a>00085   } <span class="comment">// end namespace linalg</span>
-<a name="l00086"></a>00086 } <span class="comment">// end namespace viennacl</span>
-<a name="l00087"></a>00087 <span class="preprocessor">#endif</span>
-<a name="l00088"></a>00088 <span class="preprocessor"></span>
-<a name="l00089"></a>00089 
-<a name="l00090"></a>00090 
-<a name="l00091"></a>00091 
-<a name="l00092"></a>00092 
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/norm__2_8hpp.html b/doc/doxygen/html/norm__2_8hpp.html
deleted file mode 100644
index 6262d76..0000000
--- a/doc/doxygen/html/norm__2_8hpp.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_2.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_2.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Generic interface for the l^2-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations.  
-<a href="#_details">More...</a></p>
-<code>#include <math.h></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>"</code><br/>
-
-<p><a href="norm__2_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a> (VectorT const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, viennacl::op_norm_2 > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a12a0a2106e96f8f1625b6c5bdec90f4c">norm_2</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const &v, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type *dummy=0)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Generic interface for the l^2-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/norm__2_8hpp_source.html b/doc/doxygen/html/norm__2_8hpp_source.html
deleted file mode 100644
index 2ed8439..0000000
--- a/doc/doxygen/html/norm__2_8hpp_source.html
+++ /dev/null
@@ -1,192 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_2.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_2.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="norm__2_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_NORM_2_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_NORM_2_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <math.h></span>    <span class="comment">//for sqrt()</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="tag__of_8hpp.html" title="Dispatch facility for distinguishing between ublas, STL and ViennaCL types.">tag_of.hpp</a>"</span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028   <span class="comment">//</span>
-<a name="l00029"></a>00029   <span class="comment">// generic norm_2 function</span>
-<a name="l00030"></a>00030   <span class="comment">//   uses tag dispatch to identify which algorithm</span>
-<a name="l00031"></a>00031   <span class="comment">//   should be called </span>
-<a name="l00032"></a>00032   <span class="comment">//</span>
-<a name="l00033"></a>00033   <span class="keyword">namespace </span>linalg 
-<a name="l00034"></a>00034   {
-<a name="l00035"></a>00035 <span class="preprocessor">    #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00036"></a>00036 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00037"></a>00037     <span class="comment">// MTL4</span>
-<a name="l00038"></a>00038     <span class="comment">//</span>
-<a name="l00039"></a>00039 <span class="preprocessor">      #if defined(_MSC_VER) && _MSC_VER < 1500        //Visual Studio 2005 needs special treatment</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00041"></a>00041       ScalarType <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(mtl::dense_vector<ScalarType> <span class="keyword">const</span> & v)
-<a name="l00042"></a>00042       {
-<a name="l00043"></a>00043         <span class="comment">// std::cout << "mtl4 .. " << std::endl;</span>
-<a name="l00044"></a>00044         <span class="keywordflow">return</span> mtl::two_norm(v);
-<a name="l00045"></a>00045       }
-<a name="l00046"></a>00046       
-<a name="l00047"></a>00047 <span class="preprocessor">      #else</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span>      <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT >
-<a name="l00049"></a>00049       <span class="keyword">typename</span> VectorT::value_type
-<a name="l00050"></a>00050       <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(VectorT <span class="keyword">const</span>& v, 
-<a name="l00051"></a>00051           <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__mtl4.html" title="Meta function which checks whether a tag is tag_mtl4.">viennacl::is_mtl4</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00052"></a>00052                                               >::type* dummy = 0)
-<a name="l00053"></a>00053       {
-<a name="l00054"></a>00054         <span class="comment">// std::cout << "mtl4 .. " << std::endl;</span>
-<a name="l00055"></a>00055         <span class="keywordflow">return</span> mtl::two_norm(v);
-<a name="l00056"></a>00056       }
-<a name="l00057"></a>00057 <span class="preprocessor">      #endif</span>
-<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor">    #endif</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span>    
-<a name="l00060"></a>00060     
-<a name="l00061"></a>00061 <span class="preprocessor">    #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00062"></a>00062 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00063"></a>00063     <span class="comment">// EIGEN</span>
-<a name="l00064"></a>00064     <span class="comment">//</span>
-<a name="l00065"></a>00065 <span class="preprocessor">      #if defined(_MSC_VER) && _MSC_VER < 1500        //Visual Studio 2005 needs special treatment</span>
-<a name="l00066"></a>00066 <span class="preprocessor"></span>      <span class="keywordtype">float</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(Eigen::VectorXf <span class="keyword">const</span> & v)
-<a name="l00067"></a>00067       {
-<a name="l00068"></a>00068         <span class="comment">// std::cout << "eigen .. " << std::endl;</span>
-<a name="l00069"></a>00069         <span class="keywordflow">return</span> v.norm();
-<a name="l00070"></a>00070       }
-<a name="l00071"></a>00071       
-<a name="l00072"></a>00072       <span class="keywordtype">double</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(Eigen::VectorXd <span class="keyword">const</span> & v)
-<a name="l00073"></a>00073       {
-<a name="l00074"></a>00074         <span class="comment">// std::cout << "eigen .. " << std::endl;</span>
-<a name="l00075"></a>00075         <span class="keywordflow">return</span> v.norm();
-<a name="l00076"></a>00076       }
-<a name="l00077"></a>00077       
-<a name="l00078"></a>00078 <span class="preprocessor">      #else</span>
-<a name="l00079"></a>00079 <span class="preprocessor"></span>      <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT >
-<a name="l00080"></a>00080       <span class="keyword">typename</span> VectorT::RealScalar
-<a name="l00081"></a>00081       <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(VectorT <span class="keyword">const</span>& v, 
-<a name="l00082"></a>00082           <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__eigen.html" title="Meta function which checks whether a tag is tag_eigen.">viennacl::is_eigen</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00083"></a>00083                                               >::type* dummy = 0)
-<a name="l00084"></a>00084       {
-<a name="l00085"></a>00085         <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00086"></a>00086         <span class="keywordflow">return</span> v.norm();
-<a name="l00087"></a>00087       }
-<a name="l00088"></a>00088 <span class="preprocessor">      #endif</span>
-<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor">    #endif</span>
-<a name="l00090"></a>00090 <span class="preprocessor"></span>    
-<a name="l00091"></a>00091     
-<a name="l00092"></a>00092 <span class="preprocessor">    #ifdef VIENNACL_HAVE_UBLAS</span>
-<a name="l00093"></a>00093 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00094"></a>00094     <span class="comment">// UBLAS</span>
-<a name="l00095"></a>00095     <span class="comment">//</span>
-<a name="l00096"></a>00096 <span class="preprocessor">      #if defined(_MSC_VER) && _MSC_VER < 1500        //Visual Studio 2005 needs special treatment</span>
-<a name="l00097"></a>00097 <span class="preprocessor"></span>      <span class="keyword">template</span>< <span class="keyword">typename</span> ScalarType >
-<a name="l00098"></a>00098       ScalarType
-<a name="l00099"></a>00099       <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(boost::numeric::ublas::vector<ScalarType> <span class="keyword">const</span> & v)
-<a name="l00100"></a>00100       {
-<a name="l00101"></a>00101         <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00102"></a>00102         <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">boost::numeric::ublas::norm_2</a>(v);
-<a name="l00103"></a>00103       }
-<a name="l00104"></a>00104 <span class="preprocessor">      #else</span>
-<a name="l00105"></a>00105 <span class="preprocessor"></span>      <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT >
-<a name="l00106"></a>00106       <span class="keyword">typename</span> VectorT::value_type
-<a name="l00107"></a>00107       <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(VectorT <span class="keyword">const</span>& v, 
-<a name="l00108"></a>00108           <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_ublas</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00109"></a>00109                                               >::type* dummy = 0)
-<a name="l00110"></a>00110       {
-<a name="l00111"></a>00111         <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00112"></a>00112         <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">boost::numeric::ublas::norm_2</a>(v);
-<a name="l00113"></a>00113       }
-<a name="l00114"></a>00114 <span class="preprocessor">      #endif</span>
-<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">    #endif</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span>    
-<a name="l00117"></a>00117     
-<a name="l00118"></a>00118     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00119"></a>00119     <span class="comment">// STL</span>
-<a name="l00120"></a>00120     <span class="comment">//</span>
-<a name="l00121"></a>00121     <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT>
-<a name="l00122"></a>00122     <span class="keyword">typename</span> VectorT::value_type
-<a name="l00123"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">00123</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(VectorT <span class="keyword">const</span>& v1,
-<a name="l00124"></a>00124          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_stl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00125"></a>00125                                             >::type* dummy = 0)
-<a name="l00126"></a>00126     {
-<a name="l00127"></a>00127       <span class="comment">//std::cout << "stl .. " << std::endl;</span>
-<a name="l00128"></a>00128       <span class="keyword">typename</span> VectorT::value_type result = 0;
-<a name="l00129"></a>00129       <span class="keywordflow">for</span> (<span class="keyword">typename</span> VectorT::size_type i=0; i<v1.size(); ++i)
-<a name="l00130"></a>00130         result += v1[i] * v1[i];
-<a name="l00131"></a>00131       
-<a name="l00132"></a>00132       <span class="keywordflow">return</span> sqrt(result);
-<a name="l00133"></a>00133     }
-<a name="l00134"></a>00134     
-<a name="l00135"></a>00135     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00136"></a>00136     <span class="comment">// VIENNACL</span>
-<a name="l00137"></a>00137     <span class="comment">//</span>
-<a name="l00138"></a>00138     <span class="keyword">template</span>< <span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment >
-<a name="l00139"></a>00139     <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment></a>, 
-<a name="l00140"></a>00140                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a>,
-<a name="l00141"></a>00141                                  viennacl::op_norm_2 >
-<a name="l00142"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a12a0a2106e96f8f1625b6c5bdec90f4c">00142</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a> <span class="keyword">const</span> & v, 
-<a name="l00143"></a>00143          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a> >::type >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00144"></a>00144                                             >::type* dummy = 0)
-<a name="l00145"></a>00145     {
-<a name="l00146"></a>00146        <span class="comment">//std::cout << "viennacl .. " << std::endl;</span>
-<a name="l00147"></a>00147       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment></a>, 
-<a name="l00148"></a>00148                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a>,
-<a name="l00149"></a>00149                                           viennacl::op_norm_2 >(v, v);
-<a name="l00150"></a>00150     }
-<a name="l00151"></a>00151 
-<a name="l00152"></a>00152   } <span class="comment">// end namespace linalg</span>
-<a name="l00153"></a>00153 } <span class="comment">// end namespace viennacl</span>
-<a name="l00154"></a>00154 <span class="preprocessor">#endif</span>
-<a name="l00155"></a>00155 <span class="preprocessor"></span>
-<a name="l00156"></a>00156 
-<a name="l00157"></a>00157 
-<a name="l00158"></a>00158 
-<a name="l00159"></a>00159 
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/norm__inf_8hpp.html b/doc/doxygen/html/norm__inf_8hpp.html
deleted file mode 100644
index c02efbe..0000000
--- a/doc/doxygen/html/norm__inf_8hpp.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_inf.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_inf.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include <math.h></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>"</code><br/>
-
-<p><a href="norm__inf_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">norm_inf</a> (VectorT const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, viennacl::op_norm_inf > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aadc500239f2e1967e584b71171cba268">norm_inf</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type *dummy=0)</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/norm__inf_8hpp_source.html b/doc/doxygen/html/norm__inf_8hpp_source.html
deleted file mode 100644
index 7a356f6..0000000
--- a/doc/doxygen/html/norm__inf_8hpp_source.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_inf.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_inf.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="norm__inf_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_NORM_INF_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_NORM_INF_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <math.h></span>    <span class="comment">//for sqrt()</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="tag__of_8hpp.html" title="Dispatch facility for distinguishing between ublas, STL and ViennaCL types.">tag_of.hpp</a>"</span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028   <span class="comment">//</span>
-<a name="l00029"></a>00029   <span class="comment">// generic norm_inf function</span>
-<a name="l00030"></a>00030   <span class="comment">//   uses tag dispatch to identify which algorithm</span>
-<a name="l00031"></a>00031   <span class="comment">//   should be called </span>
-<a name="l00032"></a>00032   <span class="comment">//</span>
-<a name="l00033"></a>00033   <span class="keyword">namespace </span>linalg 
-<a name="l00034"></a>00034   {
-<a name="l00035"></a>00035     
-<a name="l00036"></a>00036 <span class="preprocessor">    #ifdef VIENNACL_HAVE_UBLAS</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00038"></a>00038     <span class="comment">// UBLAS</span>
-<a name="l00039"></a>00039     <span class="comment">//</span>
-<a name="l00040"></a>00040     <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT >
-<a name="l00041"></a>00041     <span class="keyword">typename</span> VectorT::value_type
-<a name="l00042"></a>00042     <a class="code" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">norm_inf</a>(VectorT <span class="keyword">const</span>& v1, 
-<a name="l00043"></a>00043          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_ublas</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00044"></a>00044                                             >::type* dummy = 0)
-<a name="l00045"></a>00045     {
-<a name="l00046"></a>00046       <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00047"></a>00047       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">boost::numeric::ublas::norm_inf</a>(v1);
-<a name="l00048"></a>00048     }
-<a name="l00049"></a>00049 <span class="preprocessor">    #endif</span>
-<a name="l00050"></a>00050 <span class="preprocessor"></span>    
-<a name="l00051"></a>00051     
-<a name="l00052"></a>00052     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00053"></a>00053     <span class="comment">// STL</span>
-<a name="l00054"></a>00054     <span class="comment">//</span>
-<a name="l00055"></a>00055     <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT>
-<a name="l00056"></a>00056     <span class="keyword">typename</span> VectorT::value_type
-<a name="l00057"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">00057</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">norm_inf</a>(VectorT <span class="keyword">const</span>& v1,
-<a name="l00058"></a>00058          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_stl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00059"></a>00059                                             >::type* dummy = 0)
-<a name="l00060"></a>00060     {
-<a name="l00061"></a>00061       <span class="comment">//std::cout << "stl .. " << std::endl;</span>
-<a name="l00062"></a>00062       <span class="keyword">typename</span> VectorT::value_type result = 0;
-<a name="l00063"></a>00063       <span class="keywordflow">for</span> (<span class="keyword">typename</span> VectorT::size_type i=0; i<v1.size(); ++i)
-<a name="l00064"></a>00064       {
-<a name="l00065"></a>00065         <span class="keywordflow">if</span> (fabs(v1[i]) > result)
-<a name="l00066"></a>00066           result = fabs(v1[i]);
-<a name="l00067"></a>00067       }
-<a name="l00068"></a>00068       
-<a name="l00069"></a>00069       <span class="keywordflow">return</span> result;
-<a name="l00070"></a>00070     }
-<a name="l00071"></a>00071     
-<a name="l00072"></a>00072     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00073"></a>00073     <span class="comment">// VIENNACL</span>
-<a name="l00074"></a>00074     <span class="comment">//</span>
-<a name="l00075"></a>00075     <span class="keyword">template</span>< <span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment >
-<a name="l00076"></a>00076     <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment></a>, 
-<a name="l00077"></a>00077                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a>,
-<a name="l00078"></a>00078                                  viennacl::op_norm_inf >
-<a name="l00079"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aadc500239f2e1967e584b71171cba268">00079</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">norm_inf</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a> <span class="keyword">const</span> & v1, 
-<a name="l00080"></a>00080          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a> >::type >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00081"></a>00081                                             >::type* dummy = 0)
-<a name="l00082"></a>00082     {
-<a name="l00083"></a>00083        <span class="comment">//std::cout << "viennacl .. " << std::endl;</span>
-<a name="l00084"></a>00084       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment></a>, 
-<a name="l00085"></a>00085                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a>,
-<a name="l00086"></a>00086                                           viennacl::op_norm_inf >(v1, v1);
-<a name="l00087"></a>00087     }
-<a name="l00088"></a>00088 
-<a name="l00089"></a>00089   } <span class="comment">// end namespace linalg</span>
-<a name="l00090"></a>00090 } <span class="comment">// end namespace viennacl</span>
-<a name="l00091"></a>00091 <span class="preprocessor">#endif</span>
-<a name="l00092"></a>00092 <span class="preprocessor"></span>
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094 
-<a name="l00095"></a>00095 
-<a name="l00096"></a>00096 
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/ocl_2forwards_8h.html b/doc/doxygen/html/ocl_2forwards_8h.html
deleted file mode 100644
index 2c7dc46..0000000
--- a/doc/doxygen/html/ocl_2forwards_8h.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/forwards.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#define-members">Defines</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/forwards.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>This file provides the forward declarations for the OpenCL layer of ViennaCL.  
-<a href="#_details">More...</a></p>
-<code>#include <stddef.h></code><br/>
-
-<p><a href="ocl_2forwards_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-<tr><td colspan="2"><h2><a name="define-members"></a>
-Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">VIENNACL_OCL_MAX_DEVICE_NUM</a>   8</td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KernelType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084">enqueue</a> (KernelType &k, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> const &queue)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueues a kernel in the provided queue.  <a href="#a46527eb5023de820b1f1c16ec5a11084"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf">current_context</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the current context.  <a href="#a0c2a174533a0aca403ff7c4aa802edcf"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5">current_device</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the active device in the current context.  <a href="#a31b4bfa886efdae7ada1c0c5f2591ed5"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>This file provides the forward declarations for the OpenCL layer of ViennaCL. </p>
-<hr/><h2>Define Documentation</h2>
-<a class="anchor" id="a2d90eef0a67b2af2801368b3ab5b357f"></a><!-- doxytag: member="forwards.h::VIENNACL_OCL_MAX_DEVICE_NUM" ref="a2d90eef0a67b2af2801368b3ab5b357f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define VIENNACL_OCL_MAX_DEVICE_NUM   8</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/ocl_2forwards_8h_source.html b/doc/doxygen/html/ocl_2forwards_8h_source.html
deleted file mode 100644
index 438fe0d..0000000
--- a/doc/doxygen/html/ocl_2forwards_8h_source.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/forwards.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/forwards.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="ocl_2forwards_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00019"></a>00019 <span class="preprocessor">#ifndef _VIENNACL_OCL_FORWARDS_H_</span>
-<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_OCL_FORWARDS_H_</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a><a class="code" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">00022</a> <span class="preprocessor">#define VIENNACL_OCL_MAX_DEVICE_NUM  8</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <stddef.h></span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028   <span class="keyword">namespace </span>ocl
-<a name="l00029"></a>00029   {
-<a name="l00030"></a>00030     <span class="comment">//device type tags (cf. OpenCL standard)</span>
-<a name="l00031"></a><a class="code" href="structviennacl_1_1ocl_1_1gpu__tag.html">00031</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a> {};
-<a name="l00032"></a><a class="code" href="structviennacl_1_1ocl_1_1cpu__tag.html">00032</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a> {};
-<a name="l00033"></a><a class="code" href="structviennacl_1_1ocl_1_1accelerator__tag.html">00033</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a> {};
-<a name="l00034"></a><a class="code" href="structviennacl_1_1ocl_1_1default__tag.html">00034</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a> {};
-<a name="l00035"></a>00035     
-<a name="l00036"></a>00036     
-<a name="l00037"></a>00037     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a>;
-<a name="l00038"></a>00038     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">device</a>;
-<a name="l00039"></a>00039     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">command_queue</a>;
-<a name="l00040"></a>00040     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1context.html">context</a>;
-<a name="l00041"></a>00041     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1program.html">program</a>;
-<a name="l00042"></a>00042 
-<a name="l00043"></a>00043     <span class="keyword">template</span><<span class="keyword">class</span> OCL_TYPE>
-<a name="l00044"></a>00044     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a>;
-<a name="l00045"></a>00045 
-<a name="l00046"></a>00046     <span class="keyword">template</span> <<span class="keyword">typename</span> KernelType>
-<a name="l00047"></a>00047     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">enqueue</a>(KernelType & k, <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> <span class="keyword">const</span> & queue);
-<a name="l00048"></a>00048     
-<a name="l00049"></a>00049     <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">current_context</a>();
-<a name="l00050"></a>00050     <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">current_device</a>();
-<a name="l00051"></a>00051   }
-<a name="l00052"></a>00052 } <span class="comment">//namespace viennacl</span>
-<a name="l00053"></a>00053 
-<a name="l00054"></a>00054 <span class="preprocessor">#endif</span>
-<a name="l00055"></a>00055 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/open.png b/doc/doxygen/html/open.png
deleted file mode 100644
index 7b35d2c..0000000
Binary files a/doc/doxygen/html/open.png and /dev/null differ
diff --git a/doc/doxygen/html/platform_8hpp.html b/doc/doxygen/html/platform_8hpp.html
deleted file mode 100644
index eadbb39..0000000
--- a/doc/doxygen/html/platform_8hpp.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/platform.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/platform.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implements a OpenCL platform within ViennaCL.  
-<a href="#_details">More...</a></p>
-<code>#include <CL/cl.h></code><br/>
-<code>#include <vector></code><br/>
-<code>#include "<a class="el" href="ocl_2forwards_8h_source.html">viennacl/ocl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-
-<p><a href="platform_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implements a OpenCL platform within ViennaCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/platform_8hpp_source.html b/doc/doxygen/html/platform_8hpp_source.html
deleted file mode 100644
index e8ec990..0000000
--- a/doc/doxygen/html/platform_8hpp_source.html
+++ /dev/null
@@ -1,147 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/platform.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/platform.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="platform_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_PLATFORM_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_PLATFORM_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#else</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include <vector></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="ocl_2forwards_8h.html" title="This file provides the forward declarations for the OpenCL layer of ViennaCL.">viennacl/ocl/forwards.h</a>"</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>viennacl
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034   <span class="keyword">namespace </span>ocl
-<a name="l00035"></a>00035   {
-<a name="l00036"></a><a class="code" href="classviennacl_1_1ocl_1_1platform.html">00036</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1platform.html">platform</a>
-<a name="l00037"></a>00037     {
-<a name="l00038"></a>00038       
-<a name="l00039"></a>00039       <span class="keyword">public</span>:
-<a name="l00040"></a><a class="code" href="classviennacl_1_1ocl_1_1platform.html#ad69bddb2ba31b27415484b3da4213ba8">00040</a>         <a class="code" href="classviennacl_1_1ocl_1_1platform.html#ad69bddb2ba31b27415484b3da4213ba8">platform</a>()
-<a name="l00041"></a>00041         {
-<a name="l00042"></a>00042           cl_int err;
-<a name="l00043"></a>00043           cl_uint num_platforms;
-<a name="l00044"></a>00044           cl_platform_id ids[3];
-<a name="l00045"></a>00045 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL)</span>
-<a name="l00046"></a>00046 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Getting platform..."</span> << std::endl;
-<a name="l00047"></a>00047 <span class="preprocessor">          #endif</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span>          err = clGetPlatformIDs(1, ids, &num_platforms);
-<a name="l00049"></a>00049           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00050"></a>00050           id_ = ids[0];
-<a name="l00051"></a>00051           assert(num_platforms > 0 && <span class="stringliteral">"ViennaCL: ERROR: No platform found!"</span>);          
-<a name="l00052"></a>00052         }
-<a name="l00053"></a>00053         
-<a name="l00054"></a><a class="code" href="classviennacl_1_1ocl_1_1platform.html#ab35e9ce3172db05c073d481fce1e26c4">00054</a>         cl_platform_id <a class="code" href="classviennacl_1_1ocl_1_1platform.html#ab35e9ce3172db05c073d481fce1e26c4">id</a>()<span class="keyword"> const</span>
-<a name="l00055"></a>00055 <span class="keyword">        </span>{
-<a name="l00056"></a>00056           <span class="keywordflow">return</span> id_;
-<a name="l00057"></a>00057         }
-<a name="l00058"></a>00058         
-<a name="l00060"></a><a class="code" href="classviennacl_1_1ocl_1_1platform.html#a2e1e4e2742b910c44558f9cf8e4add62">00060</a>         std::string <a class="code" href="classviennacl_1_1ocl_1_1platform.html#a2e1e4e2742b910c44558f9cf8e4add62" title="Returns an information string.">info</a>()<span class="keyword"> const</span>
-<a name="l00061"></a>00061 <span class="keyword">        </span>{
-<a name="l00062"></a>00062           <span class="keywordtype">char</span> buffer[1024];
-<a name="l00063"></a>00063           cl_int err;
-<a name="l00064"></a>00064           err = clGetPlatformInfo(id_, CL_PLATFORM_VENDOR, 1024 * <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>), buffer, NULL);
-<a name="l00065"></a>00065           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00066"></a>00066           
-<a name="l00067"></a>00067           std::stringstream ss;
-<a name="l00068"></a>00068           ss << buffer << <span class="stringliteral">": "</span>;
-<a name="l00069"></a>00069 
-<a name="l00070"></a>00070           err = clGetPlatformInfo(id_, CL_PLATFORM_VERSION, 1024 * <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>), buffer, NULL);
-<a name="l00071"></a>00071           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00072"></a>00072 
-<a name="l00073"></a>00073           ss << buffer;
-<a name="l00074"></a>00074           
-<a name="l00075"></a>00075           <span class="keywordflow">return</span> ss.str();
-<a name="l00076"></a>00076         }
-<a name="l00077"></a>00077         
-<a name="l00079"></a>00079 
-<a name="l00080"></a><a class="code" href="classviennacl_1_1ocl_1_1platform.html#a257844d23a69f95c6a6572631ffa5995">00080</a>         std::vector<device> <a class="code" href="classviennacl_1_1ocl_1_1platform.html#a257844d23a69f95c6a6572631ffa5995" title="Returns the available devices of the supplied device type.">devices</a>(cl_device_type dtype = CL_DEVICE_TYPE_DEFAULT)
-<a name="l00081"></a>00081         {
-<a name="l00082"></a>00082           cl_int err;
-<a name="l00083"></a>00083 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_DEVICE)</span>
-<a name="l00084"></a>00084 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Querying devices available at current platform."</span> << std::endl;
-<a name="l00085"></a>00085 <span class="preprocessor">          #endif</span>
-<a name="l00086"></a>00086 <span class="preprocessor"></span>          cl_device_id device_ids[VIENNACL_OCL_MAX_DEVICE_NUM];
-<a name="l00087"></a>00087           cl_uint num_devices;
-<a name="l00088"></a>00088           err = clGetDeviceIDs(id_, dtype, <a class="code" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">VIENNACL_OCL_MAX_DEVICE_NUM</a>, device_ids, &num_devices);
-<a name="l00089"></a>00089           <span class="keywordflow">if</span> (err == CL_DEVICE_NOT_FOUND && dtype == CL_DEVICE_TYPE_DEFAULT)
-<a name="l00090"></a>00090           {
-<a name="l00091"></a>00091             <span class="comment">//workaround for ATI Stream SDK v2.3: No CPUs detected with default device type:</span>
-<a name="l00092"></a>00092             err = clGetDeviceIDs(id_, CL_DEVICE_TYPE_CPU, <a class="code" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">VIENNACL_OCL_MAX_DEVICE_NUM</a>, device_ids, &num_devices);
-<a name="l00093"></a>00093           }
-<a name="l00094"></a>00094           
-<a name="l00095"></a>00095           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00096"></a>00096 <span class="preprocessor">          #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_DEVICE)</span>
-<a name="l00097"></a>00097 <span class="preprocessor"></span>          std::cout << <span class="stringliteral">"ViennaCL: Found "</span> << num_devices << <span class="stringliteral">" devices."</span> << std::endl;
-<a name="l00098"></a>00098 <span class="preprocessor">          #endif</span>
-<a name="l00099"></a>00099 <span class="preprocessor"></span>          
-<a name="l00100"></a>00100           assert(num_devices > 0 && <span class="stringliteral">"Error in viennacl::ocl::platform::devices(): No OpenCL devices available!"</span>);
-<a name="l00101"></a>00101           std::vector<device> devices;
-<a name="l00102"></a>00102           
-<a name="l00103"></a>00103           <span class="keywordflow">for</span> (cl_uint i=0; i<num_devices; ++i)
-<a name="l00104"></a>00104             devices.push_back(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">device</a>(device_ids[i]));
-<a name="l00105"></a>00105 
-<a name="l00106"></a>00106           <span class="keywordflow">return</span> devices;
-<a name="l00107"></a>00107         }
-<a name="l00108"></a>00108         
-<a name="l00109"></a>00109       <span class="keyword">private</span>:
-<a name="l00110"></a>00110         cl_platform_id id_;
-<a name="l00111"></a>00111     };
-<a name="l00112"></a>00112     
-<a name="l00113"></a>00113   }
-<a name="l00114"></a>00114 }
-<a name="l00115"></a>00115 
-<a name="l00116"></a>00116 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/prod_8hpp.html b/doc/doxygen/html/prod_8hpp.html
deleted file mode 100644
index c20f626..0000000
--- a/doc/doxygen/html/prod_8hpp.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/prod.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/prod.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Generic interface for matrix-vector and matrix-matrix products. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a>, <a class="el" href="matrix__operations_8hpp.html" title="Implementations of dense matrix related operations. also matrix-vector products.">viennacl/linalg/matrix_operations.hpp</a>, <a class="el" href="compressed__matrix__operations_8hpp.html" title="Implementations of operations using compressed_matrix.">viennacl/linalg/compressed_matrix_operations.hpp</a> and <a class="el" href="coordinate__matrix__operations_8hpp.html" title="Implementations of operations using coordinate_matrix.">viennacl/linalg/coordinate_matrix_operations.hpp</a> for implementations.  
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="prod_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T , typename A1 , typename A2 , typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a07b1f6f849c9950dd557bbf3e38f569d">prod_impl</a> (std::vector< std::vector< T, A1 >, A2 > const &matrix, VectorT const &vector)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KEY , typename DATA , typename COMPARE , typename AMAP , typename AVEC , typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a8bb2b3cdaa265974abb81154593357b3">prod_impl</a> (std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > const &matrix, VectorT const &vector)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a> (MatrixT const &matrix, VectorT const &vector, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename NumericT , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const MatrixT, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< NumericT, <br class="typebreak"/>
-ALIGNMENT >, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#abe959c83610141222955cfa6c52ed961">prod</a> (MatrixT const &matrix, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< NumericT, ALIGNMENT > const &vector, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename NumericT , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const MatrixT, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, <br class="typebreak"/>
-ALIGNMENT >, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a12682dd49c61d3897b1c18e49042c721">prod</a> (MatrixT const &matrix_A, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT > const &matrix_B, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename NumericT , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const MatrixT, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< NumericT, F, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< NumericT, F, ALIGNMENT ><br class="typebreak"/>
-, viennacl::op_trans ><br class="typebreak"/>
-, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#acfb30430740c1e7b8ab2c81aee31878a">prod</a> (MatrixT const &matrix_A, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT >, viennacl::op_trans > &matrix_B, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Generic interface for matrix-vector and matrix-matrix products. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a>, <a class="el" href="matrix__operations_8hpp.html" title="Implementations of dense matrix related operations. also matrix-vector products.">viennacl/linalg/matrix_operations.hpp</a>, <a class="el" href="compressed__matrix__operations_8hpp.html" title="Implementations of operations using compressed_matrix.">viennacl/linalg/compressed_matrix_operations.hpp</a> and <a class="el" href="coordinate__matrix__operations_8hpp.html" title="Implementations of operations using coordinate_matrix.">viennacl/linalg/coordinate_matrix_operations.hpp</a> for implementations. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/prod_8hpp_source.html b/doc/doxygen/html/prod_8hpp_source.html
deleted file mode 100644
index 253f21a..0000000
--- a/doc/doxygen/html/prod_8hpp_source.html
+++ /dev/null
@@ -1,224 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/prod.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/prod.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="prod_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_PROD_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_PROD_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="tag__of_8hpp.html" title="Dispatch facility for distinguishing between ublas, STL and ViennaCL types.">tag_of.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <vector></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include <map></span>
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>viennacl
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031   <span class="comment">//</span>
-<a name="l00032"></a>00032   <span class="comment">// generic prod function</span>
-<a name="l00033"></a>00033   <span class="comment">//   uses tag dispatch to identify which algorithm</span>
-<a name="l00034"></a>00034   <span class="comment">//   should be called </span>
-<a name="l00035"></a>00035   <span class="comment">//</span>
-<a name="l00036"></a>00036   <span class="keyword">namespace </span>linalg 
-<a name="l00037"></a>00037   {
-<a name="l00038"></a>00038 <span class="preprocessor">    #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00040"></a>00040     <span class="comment">// mtl4</span>
-<a name="l00041"></a>00041     <span class="comment">//</span>
-<a name="l00042"></a>00042     <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> VectorT >
-<a name="l00043"></a>00043     VectorT 
-<a name="l00044"></a>00044     <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& <a class="code" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">matrix</a>, VectorT <span class="keyword">const</span>& vector, 
-<a name="l00045"></a>00045          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__mtl4.html" title="Meta function which checks whether a tag is tag_mtl4.">viennacl::is_mtl4</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00046"></a>00046                                             >::type* dummy = 0)
-<a name="l00047"></a>00047     {
-<a name="l00048"></a>00048       <span class="comment">// std::cout << "mtl4 .. " << std::endl;</span>
-<a name="l00049"></a>00049       <span class="keywordflow">return</span> VectorT(matrix * vector);
-<a name="l00050"></a>00050     }
-<a name="l00051"></a>00051 <span class="preprocessor">    #endif</span>
-<a name="l00052"></a>00052 <span class="preprocessor"></span>    
-<a name="l00053"></a>00053 <span class="preprocessor">    #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00055"></a>00055     <span class="comment">// Eigen</span>
-<a name="l00056"></a>00056     <span class="comment">//</span>
-<a name="l00057"></a>00057     <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> VectorT >
-<a name="l00058"></a>00058     VectorT 
-<a name="l00059"></a>00059     <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& <a class="code" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">matrix</a>, VectorT <span class="keyword">const</span>& vector, 
-<a name="l00060"></a>00060          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__eigen.html" title="Meta function which checks whether a tag is tag_eigen.">viennacl::is_eigen</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00061"></a>00061                                             >::type* dummy = 0)
-<a name="l00062"></a>00062     {
-<a name="l00063"></a>00063       <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00064"></a>00064       <span class="keywordflow">return</span> matrix * vector;
-<a name="l00065"></a>00065     }
-<a name="l00066"></a>00066 <span class="preprocessor">    #endif</span>
-<a name="l00067"></a>00067 <span class="preprocessor"></span>    
-<a name="l00068"></a>00068 <span class="preprocessor">    #ifdef VIENNACL_HAVE_UBLAS</span>
-<a name="l00069"></a>00069 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00070"></a>00070     <span class="comment">// UBLAS</span>
-<a name="l00071"></a>00071     <span class="comment">//</span>
-<a name="l00072"></a>00072     <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> VectorT >
-<a name="l00073"></a>00073     VectorT 
-<a name="l00074"></a>00074     <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& <a class="code" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">matrix</a>, VectorT <span class="keyword">const</span>& vector, 
-<a name="l00075"></a>00075          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_ublas</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00076"></a>00076                                             >::type* dummy = 0)
-<a name="l00077"></a>00077     {
-<a name="l00078"></a>00078       <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00079"></a>00079       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">boost::numeric::ublas::prod</a>(matrix, vector);
-<a name="l00080"></a>00080     }
-<a name="l00081"></a>00081 <span class="preprocessor">    #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>
-<a name="l00083"></a>00083 
-<a name="l00084"></a>00084     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00085"></a>00085     <span class="comment">// STL type</span>
-<a name="l00086"></a>00086     <span class="comment">//</span>
-<a name="l00087"></a>00087     
-<a name="l00088"></a>00088     <span class="comment">// dense matrix-vector product:</span>
-<a name="l00089"></a>00089     <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2, <span class="keyword">typename</span> VectorT >
-<a name="l00090"></a>00090     VectorT 
-<a name="l00091"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a07b1f6f849c9950dd557bbf3e38f569d">00091</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(std::vector< std::vector<T, A1>, A2 > <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorT <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>)
-<a name="l00092"></a>00092     {
-<a name="l00093"></a>00093       VectorT result(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>.size());
-<a name="l00094"></a>00094       <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T, A1>::size_type i=0; i<<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>.size(); ++i)
-<a name="l00095"></a>00095       {
-<a name="l00096"></a>00096         result[i] = 0; <span class="comment">//we will not assume that VectorT is initialized to zero</span>
-<a name="l00097"></a>00097         <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T, A1>::size_type j=0; j<<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>[i].size(); ++j)
-<a name="l00098"></a>00098           result[i] += <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>[i][j] * vector[j];
-<a name="l00099"></a>00099       }
-<a name="l00100"></a>00100       <span class="keywordflow">return</span> result;
-<a name="l00101"></a>00101     }
-<a name="l00102"></a>00102     
-<a name="l00103"></a>00103     <span class="comment">// sparse matrix-vector product:</span>
-<a name="l00104"></a>00104     <span class="keyword">template</span>< <span class="keyword">typename</span> KEY, <span class="keyword">typename</span> DATA, <span class="keyword">typename</span> COMPARE, <span class="keyword">typename</span> AMAP, <span class="keyword">typename</span> AVEC, <span class="keyword">typename</span> VectorT >
-<a name="l00105"></a>00105     VectorT 
-<a name="l00106"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a8bb2b3cdaa265974abb81154593357b3">00106</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(std::vector< std::map<KEY, DATA, COMPARE, AMAP>, AVEC > <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorT <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>)
-<a name="l00107"></a>00107     {
-<a name="l00108"></a>00108       <span class="keyword">typedef</span> std::vector< std::map<KEY, DATA, COMPARE, AMAP>, AVEC > MatrixType;
-<a name="l00109"></a>00109       
-<a name="l00110"></a>00110       VectorT result(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>.size());
-<a name="l00111"></a>00111       <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::size_type i=0; i<<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>.size(); ++i)
-<a name="l00112"></a>00112       { 
-<a name="l00113"></a>00113         result[i] = 0; <span class="comment">//we will not assume that VectorT is initialized to zero</span>
-<a name="l00114"></a>00114         <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::map<KEY, DATA, COMPARE, AMAP>::const_iterator row_entries = <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>[i].begin();
-<a name="l00115"></a>00115              row_entries != <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>[i].end();
-<a name="l00116"></a>00116              ++row_entries)
-<a name="l00117"></a>00117           result[i] += row_entries->second * vector[row_entries->first];
-<a name="l00118"></a>00118       }
-<a name="l00119"></a>00119       <span class="keywordflow">return</span> result;
-<a name="l00120"></a>00120     }
-<a name="l00121"></a>00121     
-<a name="l00122"></a>00122     
-<a name="l00123"></a>00123     <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> VectorT >
-<a name="l00124"></a>00124     VectorT 
-<a name="l00125"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">00125</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorT <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>, 
-<a name="l00126"></a>00126          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_stl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00127"></a>00127                                             >::type* dummy = 0)
-<a name="l00128"></a>00128     {
-<a name="l00129"></a>00129       <span class="comment">// std::cout << "std .. " << std::endl;</span>
-<a name="l00130"></a>00130       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(matrix, vector);
-<a name="l00131"></a>00131     }
-<a name="l00132"></a>00132 
-<a name="l00133"></a>00133     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00134"></a>00134     <span class="comment">// VIENNACL</span>
-<a name="l00135"></a>00135     <span class="comment">//</span>
-<a name="l00136"></a>00136     <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> NumericT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT >
-<a name="l00137"></a>00137     <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression</a>< <span class="keyword">const</span> MatrixT, 
-<a name="l00138"></a>00138                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<NumericT, ALIGNMENT></a>,
-<a name="l00139"></a>00139                                  viennacl::op_prod >
-<a name="l00140"></a><a class="code" href="namespaceviennacl_1_1linalg.html#abe959c83610141222955cfa6c52ed961">00140</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>,
-<a name="l00141"></a>00141          <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<NumericT, ALIGNMENT></a> <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>, 
-<a name="l00142"></a>00142          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00143"></a>00143                                             >::type* dummy = 0)
-<a name="l00144"></a>00144     {
-<a name="l00145"></a>00145       <span class="comment">// std::cout << "viennacl .. " << std::endl;</span>
-<a name="l00146"></a>00146       <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(matrix, vector);
-<a name="l00147"></a>00147     }
-<a name="l00148"></a>00148 
-<a name="l00149"></a>00149     <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> NumericT, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT >
-<a name="l00150"></a>00150     <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> MatrixT, 
-<a name="l00151"></a>00151                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00152"></a>00152                                  viennacl::op_prod >
-<a name="l00153"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a12682dd49c61d3897b1c18e49042c721">00153</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& matrix_A,
-<a name="l00154"></a>00154          <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a> <span class="keyword">const</span>& matrix_B, 
-<a name="l00155"></a>00155          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00156"></a>00156                                             >::type* dummy = 0)
-<a name="l00157"></a>00157     {
-<a name="l00158"></a>00158       <span class="comment">// std::cout << "viennacl .. " << std::endl;</span>
-<a name="l00159"></a>00159       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> MatrixT, 
-<a name="l00160"></a>00160                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00161"></a>00161                                           viennacl::op_prod >(matrix_A, matrix_B);
-<a name="l00162"></a>00162     }
-<a name="l00163"></a>00163 
-<a name="l00164"></a>00164     <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> NumericT, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT >
-<a name="l00165"></a>00165     <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> MatrixT, 
-<a name="l00166"></a>00166                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::matrix<NumericT, F, ALIGNMENT></a>, 
-<a name="l00167"></a>00167                                                                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00168"></a>00168                                                                     viennacl::op_trans >,
-<a name="l00169"></a>00169                                  viennacl::op_prod >
-<a name="l00170"></a><a class="code" href="namespaceviennacl_1_1linalg.html#acfb30430740c1e7b8ab2c81aee31878a">00170</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& matrix_A,
-<a name="l00171"></a>00171          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a>, 
-<a name="l00172"></a>00172                                             <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00173"></a>00173                                             viennacl::op_trans > & matrix_B,
-<a name="l00174"></a>00174          <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00175"></a>00175                                             >::type* dummy = 0)
-<a name="l00176"></a>00176     {
-<a name="l00177"></a>00177       <span class="comment">// std::cout << "viennacl .. " << std::endl;</span>
-<a name="l00178"></a>00178       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> MatrixT, 
-<a name="l00179"></a>00179                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::matrix<NumericT, F, ALIGNMENT></a>, 
-<a name="l00180"></a>00180                                                                              <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00181"></a>00181                                                                              viennacl::op_trans >,
-<a name="l00182"></a>00182                                           viennacl::op_prod >(matrix_A, matrix_B);
-<a name="l00183"></a>00183       <span class="comment">//return viennacl::linalg::prod_impl(matrix_A, matrix_B);</span>
-<a name="l00184"></a>00184     }
-<a name="l00185"></a>00185 
-<a name="l00186"></a>00186   } <span class="comment">// end namespace linalg</span>
-<a name="l00187"></a>00187 } <span class="comment">// end namespace viennacl</span>
-<a name="l00188"></a>00188 <span class="preprocessor">#endif</span>
-<a name="l00189"></a>00189 <span class="preprocessor"></span>
-<a name="l00190"></a>00190 
-<a name="l00191"></a>00191 
-<a name="l00192"></a>00192 
-<a name="l00193"></a>00193 
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/program_8hpp.html b/doc/doxygen/html/program_8hpp.html
deleted file mode 100644
index ac5682b..0000000
--- a/doc/doxygen/html/program_8hpp.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/program.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/program.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implements an OpenCL program class for ViennaCL.  
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <vector></code><br/>
-<code>#include "<a class="el" href="ocl_2forwards_8h_source.html">viennacl/ocl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-
-<p><a href="program_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implements an OpenCL program class for ViennaCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/program_8hpp_source.html b/doc/doxygen/html/program_8hpp_source.html
deleted file mode 100644
index 0ab169f..0000000
--- a/doc/doxygen/html/program_8hpp_source.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/program.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/program.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="program_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_PROGRAM_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_PROGRAM_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <vector></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="ocl_2forwards_8h.html" title="This file provides the forward declarations for the OpenCL layer of ViennaCL.">viennacl/ocl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00027"></a>00027 
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>viennacl
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030   <span class="keyword">namespace </span>ocl
-<a name="l00031"></a>00031   {
-<a name="l00032"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html">00032</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1program.html">program</a>
-<a name="l00033"></a>00033     {
-<a name="l00034"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#aaae51189d6e1e8b24b5654e3704ff50b">00034</a>       <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a>;
-<a name="l00035"></a>00035       
-<a name="l00036"></a>00036       <span class="keyword">typedef</span> std::vector<viennacl::ocl::kernel>    KernelContainer;
-<a name="l00037"></a>00037       
-<a name="l00038"></a>00038     <span class="keyword">public</span>:
-<a name="l00039"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#ac22da204c9d1580d094bc37b41ee6a5a">00039</a>       <a class="code" href="classviennacl_1_1ocl_1_1program.html#ac22da204c9d1580d094bc37b41ee6a5a">program</a>() {}
-<a name="l00040"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#a396823275fb41e9a64fff458b6b4415d">00040</a>       <a class="code" href="classviennacl_1_1ocl_1_1program.html#a396823275fb41e9a64fff458b6b4415d">program</a>(<a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_program></a> <span class="keyword">const</span> & h, std::string <span class="keyword">const</span> & prog_name = std::string()) : handle_(h), name_(prog_name) {}
-<a name="l00041"></a>00041       
-<a name="l00042"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#a454539d49698f09affc0a399289e2611">00042</a>       <a class="code" href="classviennacl_1_1ocl_1_1program.html#ac22da204c9d1580d094bc37b41ee6a5a">program</a>(<a class="code" href="classviennacl_1_1ocl_1_1program.html">program</a> <span class="keyword">const</span> & other)
-<a name="l00043"></a>00043       {
-<a name="l00044"></a>00044         handle_ = other.handle_;
-<a name="l00045"></a>00045         name_ = other.name_;
-<a name="l00046"></a>00046         kernels_ = other.kernels_;
-<a name="l00047"></a>00047       }
-<a name="l00048"></a>00048       
-<a name="l00049"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#ab38d1becd4cb60e89dd0b11f3f4e3fe4">00049</a>       <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & <a class="code" href="classviennacl_1_1ocl_1_1program.html#ab38d1becd4cb60e89dd0b11f3f4e3fe4">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1program.html">program</a> & other)
-<a name="l00050"></a>00050       {
-<a name="l00051"></a>00051         handle_ = other.handle_;
-<a name="l00052"></a>00052         name_ = other.name_;
-<a name="l00053"></a>00053         kernels_ = other.kernels_;
-<a name="l00054"></a>00054         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00055"></a>00055       }
-<a name="l00056"></a>00056 
-<a name="l00057"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#a836b9d82daf374fab15aac8c87eb1133">00057</a>       std::string <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1program.html#a836b9d82daf374fab15aac8c87eb1133">name</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> name_; }
-<a name="l00058"></a>00058       
-<a name="l00060"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92">00060</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(std::string <span class="keyword">const</span> & kernel_name)
-<a name="l00061"></a>00061       {
-<a name="l00062"></a>00062         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> temp(handle_, kernel_name);
-<a name="l00063"></a>00063         kernels_.push_back(temp);
-<a name="l00064"></a>00064         <span class="keywordflow">return</span> kernels_.back();
-<a name="l00065"></a>00065       }
-<a name="l00066"></a>00066       
-<a name="l00068"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#a593fbca8c511a382654582513faf24fb">00068</a>       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1program.html#a593fbca8c511a382654582513faf24fb" title="Returns the kernel with the provided name.">get_kernel</a>(std::string <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1program.html#a836b9d82daf374fab15aac8c87eb1133">name</a>)
-<a name="l00069"></a>00069       {
-<a name="l00070"></a>00070         <span class="comment">//std::cout << "Requiring kernel " << name << " from program " << name_ << std::endl;</span>
-<a name="l00071"></a>00071         <span class="keywordflow">for</span> (KernelContainer::iterator it = kernels_.begin();
-<a name="l00072"></a>00072               it != kernels_.end();
-<a name="l00073"></a>00073              ++it)
-<a name="l00074"></a>00074         {
-<a name="l00075"></a>00075           <span class="keywordflow">if</span> (it->name() == name)
-<a name="l00076"></a>00076             <span class="keywordflow">return</span> *it;
-<a name="l00077"></a>00077         }
-<a name="l00078"></a>00078         std::cerr << <span class="stringliteral">"ViennaCL: FATAL ERROR: Could not find kernel '"</span> << name << <span class="stringliteral">"'"</span> << std::endl;
-<a name="l00079"></a>00079         assert(!<span class="stringliteral">"Kernel not found"</span>);
-<a name="l00080"></a>00080         <span class="keywordflow">return</span> kernels_[0];  <span class="comment">//return a defined object</span>
-<a name="l00081"></a>00081       }
-<a name="l00082"></a>00082 
-<a name="l00083"></a>00083     <span class="keyword">private</span>:
-<a name="l00084"></a>00084       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_program></a> & <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> handle_; }
-<a name="l00085"></a>00085       
-<a name="l00086"></a>00086       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_program></a> handle_;
-<a name="l00087"></a>00087       std::string name_;
-<a name="l00088"></a>00088       KernelContainer kernels_;
-<a name="l00089"></a>00089     };
-<a name="l00090"></a>00090   } <span class="comment">//namespace ocl</span>
-<a name="l00091"></a>00091 } <span class="comment">//namespace viennacl</span>
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/row__scaling_8hpp.html b/doc/doxygen/html/row__scaling_8hpp.html
deleted file mode 100644
index d71d90b..0000000
--- a/doc/doxygen/html/row__scaling_8hpp.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/row_scaling.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/row_scaling.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>A row normalization preconditioner is implemented here.  
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <cmath></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="compressed__matrix_8hpp_source.html">viennacl/compressed_matrix.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="row__scaling_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for a row preconditioner.  <a href="classviennacl_1_1linalg_1_1row__scaling__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling< MatrixType ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  <a href="classviennacl_1_1linalg_1_1row__scaling.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.  <a href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A row normalization preconditioner is implemented here. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/row__scaling_8hpp_source.html b/doc/doxygen/html/row__scaling_8hpp_source.html
deleted file mode 100644
index 8d73e77..0000000
--- a/doc/doxygen/html/row__scaling_8hpp_source.html
+++ /dev/null
@@ -1,232 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/row_scaling.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/row_scaling.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="row__scaling_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_ROW_SCALING_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_ROW_SCALING_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <cmath></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="compressed__matrix_8hpp.html" title="Implementation of the compressed_matrix class.">viennacl/compressed_matrix.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029 <span class="preprocessor">#include <map></span>
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033   <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034   {
-<a name="l00035"></a>00035     
-<a name="l00038"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">00038</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html" title="A tag for a row preconditioner.">row_scaling_tag</a>
-<a name="l00039"></a>00039     {
-<a name="l00040"></a>00040       <span class="keyword">public</span>:
-<a name="l00045"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a12412041036e5beed6c8c1e0f2fade5e">00045</a>         <a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a12412041036e5beed6c8c1e0f2fade5e" title="Constructor.">row_scaling_tag</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> p = 2) : norm_(p) {}
-<a name="l00046"></a>00046         
-<a name="l00048"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687">00048</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687" title="Returns the index p of the l^p-norm (1... sum(abs(x)), 2... sqrt(sum(x_i^2))). Currently only p=1 and...">norm</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> norm_; }
-<a name="l00049"></a>00049         
-<a name="l00050"></a>00050       <span class="keyword">private</span>:
-<a name="l00051"></a>00051         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> norm_;
-<a name="l00052"></a>00052     };
-<a name="l00053"></a>00053     
-<a name="l00054"></a>00054 
-<a name="l00057"></a>00057     <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00058"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html">00058</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html" title="Jacobi preconditioner class, can be supplied to solve()-routines.">row_scaling</a>
-<a name="l00059"></a>00059     {
-<a name="l00060"></a>00060       <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::value_type      ScalarType;
-<a name="l00061"></a>00061       
-<a name="l00062"></a>00062       <span class="keyword">public</span>:
-<a name="l00068"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html#a505b14065ba3fd81710d349907a73334">00068</a>         <a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html#a505b14065ba3fd81710d349907a73334" title="Constructor for the preconditioner.">row_scaling</a>(MatrixType <span class="keyword">const</span> & mat, <a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html" title="A tag for a row preconditioner.">row_scaling_tag</a> <span class="keyword">const</span> & tag) : system_matrix(mat), tag_(tag)
-<a name="l00069"></a>00069         {
-<a name="l00070"></a>00070           assert(mat.size1() == mat.size2());
-<a name="l00071"></a>00071           diag_M_inv.resize(mat.size1());  <span class="comment">//resize without preserving values</span>
-<a name="l00072"></a>00072           
-<a name="l00073"></a>00073           <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator1 row_it = system_matrix.begin1();
-<a name="l00074"></a>00074                 row_it != system_matrix.end1();
-<a name="l00075"></a>00075                 ++row_it)
-<a name="l00076"></a>00076           {
-<a name="l00077"></a>00077             diag_M_inv[row_it.index1()];
-<a name="l00078"></a>00078             <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator2 col_it = row_it.begin();
-<a name="l00079"></a>00079                   col_it != row_it.end();
-<a name="l00080"></a>00080                   ++col_it)
-<a name="l00081"></a>00081             {
-<a name="l00082"></a>00082               <span class="keywordflow">if</span> (tag_.<a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687" title="Returns the index p of the l^p-norm (1... sum(abs(x)), 2... sqrt(sum(x_i^2))). Currently only p=1 and...">norm</a>() == 1)
-<a name="l00083"></a>00083                 diag_M_inv[col_it.index1()] += std::fabs(*col_it);
-<a name="l00084"></a>00084               <span class="keywordflow">else</span>
-<a name="l00085"></a>00085                 diag_M_inv[col_it.index1()] += (*col_it) * (*col_it);
-<a name="l00086"></a>00086             }
-<a name="l00087"></a>00087             <span class="keywordflow">if</span> (diag_M_inv[row_it.index1()] == 0)
-<a name="l00088"></a>00088               <span class="keywordflow">throw</span> <span class="stringliteral">"ViennaCL: Zero row encountered while setting up row scaling preconditioner!"</span>;
-<a name="l00089"></a>00089             
-<a name="l00090"></a>00090             <span class="keywordflow">if</span> (tag_.<a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687" title="Returns the index p of the l^p-norm (1... sum(abs(x)), 2... sqrt(sum(x_i^2))). Currently only p=1 and...">norm</a>() == 1)
-<a name="l00091"></a>00091               diag_M_inv[row_it.index1()] = <span class="keyword">static_cast<</span>ScalarType<span class="keyword">></span>(1.0) / diag_M_inv[row_it.index1()];
-<a name="l00092"></a>00092             <span class="keywordflow">else</span>
-<a name="l00093"></a>00093               diag_M_inv[row_it.index1()] = <span class="keyword">static_cast<</span>ScalarType<span class="keyword">></span>(1.0) / std::sqrt(diag_M_inv[row_it.index1()]);
-<a name="l00094"></a>00094           }
-<a name="l00095"></a>00095         }
-<a name="l00096"></a>00096         
-<a name="l00097"></a>00097         
-<a name="l00099"></a>00099         <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00100"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html#a58cb0bc6ab58fc3b770c91cc15362d0a">00100</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html#a58cb0bc6ab58fc3b770c91cc15362d0a" title="Apply to res = b - Ax, i.e. row applied vec (right hand side),.">apply</a>(VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00101"></a>00101 <span class="keyword">        </span>{
-<a name="l00102"></a>00102           assert(vec.size() == diag_M_inv.size());
-<a name="l00103"></a>00103           <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<vec.size(); ++i)
-<a name="l00104"></a>00104           {
-<a name="l00105"></a>00105             vec[i] *= diag_M_inv[i];
-<a name="l00106"></a>00106           }
-<a name="l00107"></a>00107         }
-<a name="l00108"></a>00108         
-<a name="l00109"></a>00109       <span class="keyword">private</span>:
-<a name="l00110"></a>00110         MatrixType <span class="keyword">const</span> & system_matrix;
-<a name="l00111"></a>00111         <a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html" title="A tag for a row preconditioner.">row_scaling_tag</a> <span class="keyword">const</span> & tag_;
-<a name="l00112"></a>00112         std::vector<ScalarType> diag_M_inv;
-<a name="l00113"></a>00113     };
-<a name="l00114"></a>00114 
-<a name="l00115"></a>00115     
-<a name="l00120"></a>00120     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00121"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">00121</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html" title="Jacobi preconditioner class, can be supplied to solve()-routines.">row_scaling</a>< <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><ScalarType, MAT_ALIGNMENT> >
-<a name="l00122"></a>00122     {
-<a name="l00123"></a>00123       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<ScalarType, MAT_ALIGNMENT></a>   <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">MatrixType</a>;
-<a name="l00124"></a>00124       
-<a name="l00125"></a>00125       <span class="keyword">public</span>:
-<a name="l00131"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a505b14065ba3fd81710d349907a73334">00131</a>         <a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html#a505b14065ba3fd81710d349907a73334" title="Constructor for the preconditioner.">row_scaling</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">MatrixType</a> <span class="keyword">const</span> & mat, <a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html" title="A tag for a row preconditioner.">row_scaling_tag</a> <span class="keyword">const</span> & tag) : system_matrix(mat), tag_(tag), diag_M_inv(mat.size1())
-<a name="l00132"></a>00132         {
-<a name="l00133"></a>00133           assert(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00134"></a>00134           
-<a name="l00135"></a>00135           init_gpu();
-<a name="l00136"></a>00136         }
-<a name="l00137"></a>00137         
-<a name="l00138"></a>00138         <span class="comment">/*</span>
-<a name="l00139"></a>00139 <span class="comment">        void init_cpu()</span>
-<a name="l00140"></a>00140 <span class="comment">        {</span>
-<a name="l00141"></a>00141 <span class="comment">          std::vector< std::map<unsigned int, ScalarType> > cpu_check;</span>
-<a name="l00142"></a>00142 <span class="comment">          std::vector<ScalarType> diag_M_inv_cpu(system_matrix.size1());</span>
-<a name="l00143"></a>00143 <span class="comment">          </span>
-<a name="l00144"></a>00144 <span class="comment">          copy(system_matrix, cpu_check);</span>
-<a name="l00145"></a>00145 <span class="comment">          viennacl::tools::const_sparse_matrix_adapter<ScalarType> cpu_check_adapter(cpu_check);</span>
-<a name="l00146"></a>00146 <span class="comment">          </span>
-<a name="l00147"></a>00147 <span class="comment">          for (typename viennacl::tools::const_sparse_matrix_adapter<ScalarType>::const_iterator1 row_it = cpu_check_adapter.begin1();</span>
-<a name="l00148"></a>00148 <span class="comment">                row_it != cpu_check_adapter.end1();</span>
-<a name="l00149"></a>00149 <span class="comment">                ++row_it)</span>
-<a name="l00150"></a>00150 <span class="comment">          {</span>
-<a name="l00151"></a>00151 <span class="comment">            diag_M_inv_cpu[row_it.index1()] = 0;</span>
-<a name="l00152"></a>00152 <span class="comment">            for (typename viennacl::tools::const_sparse_matrix_adapter<ScalarType>::const_iterator2 col_it = row_it.begin();</span>
-<a name="l00153"></a>00153 <span class="comment">                  col_it != row_it.end();</span>
-<a name="l00154"></a>00154 <span class="comment">                  ++col_it)</span>
-<a name="l00155"></a>00155 <span class="comment">            {</span>
-<a name="l00156"></a>00156 <span class="comment">              if (tag_.norm() == 1)</span>
-<a name="l00157"></a>00157 <span class="comment">                diag_M_inv_cpu[col_it.index1()] += std::fabs(*col_it);</span>
-<a name="l00158"></a>00158 <span class="comment">              else</span>
-<a name="l00159"></a>00159 <span class="comment">                diag_M_inv_cpu[col_it.index1()] += (*col_it) * (*col_it);</span>
-<a name="l00160"></a>00160 <span class="comment">            }</span>
-<a name="l00161"></a>00161 <span class="comment">            if (diag_M_inv_cpu[row_it.index1()] == 0)</span>
-<a name="l00162"></a>00162 <span class="comment">              throw "ViennaCL: Zero row encountered while setting up row scaling preconditioner!";</span>
-<a name="l00163"></a>00163 <span class="comment">            </span>
-<a name="l00164"></a>00164 <span class="comment">            if (tag_.norm() == 1)</span>
-<a name="l00165"></a>00165 <span class="comment">              diag_M_inv_cpu[row_it.index1()] = static_cast<ScalarType>(1.0) / diag_M_inv_cpu[row_it.index1()];</span>
-<a name="l00166"></a>00166 <span class="comment">            else</span>
-<a name="l00167"></a>00167 <span class="comment">              diag_M_inv_cpu[row_it.index1()] = static_cast<ScalarType>(1.0) / std::sqrt(diag_M_inv_cpu[row_it.index1()]);</span>
-<a name="l00168"></a>00168 <span class="comment">          }</span>
-<a name="l00169"></a>00169 <span class="comment">          </span>
-<a name="l00170"></a>00170 <span class="comment">          diag_M_inv.resize(system_matrix.size1(), false);</span>
-<a name="l00171"></a>00171 <span class="comment">          viennacl::fast_copy(diag_M_inv_cpu, diag_M_inv);</span>
-<a name="l00172"></a>00172 <span class="comment">        } */</span>
-<a name="l00173"></a>00173         
-<a name="l00174"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">00174</a>         <span class="keywordtype">void</span> init_gpu()
-<a name="l00175"></a>00175         {
-<a name="l00176"></a>00176           <span class="keywordflow">if</span> (tag_.<a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687" title="Returns the index p of the l^p-norm (1... sum(abs(x)), 2... sqrt(sum(x_i^2))). Currently only p=1 and...">norm</a>() == 1)
-<a name="l00177"></a>00177           {
-<a name="l00178"></a>00178             <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(
-<a name="l00179"></a>00179                                                 viennacl::linalg::kernels::compressed_matrix<ScalarType, MAT_ALIGNMENT>::program_name(),
-<a name="l00180"></a>00180                                                 <span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00181"></a>00181 
-<a name="l00182"></a>00182             <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>( k(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), 
-<a name="l00183"></a>00183                                       diag_M_inv, <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(diag_M_inv.size())) );        
-<a name="l00184"></a>00184           }
-<a name="l00185"></a>00185           <span class="keywordflow">else</span>
-<a name="l00186"></a>00186           {
-<a name="l00187"></a>00187             <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(
-<a name="l00188"></a>00188                                                 viennacl::linalg::kernels::compressed_matrix<ScalarType, MAT_ALIGNMENT>::program_name(),
-<a name="l00189"></a>00189                                                 <span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00190"></a>00190 
-<a name="l00191"></a>00191             <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>( k(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), 
-<a name="l00192"></a>00192                                       diag_M_inv, <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(diag_M_inv.size())) );        
-<a name="l00193"></a>00193           }
-<a name="l00194"></a>00194         }
-<a name="l00195"></a>00195         
-<a name="l00196"></a>00196         <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00197"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">00197</a>         <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html#a58cb0bc6ab58fc3b770c91cc15362d0a" title="Apply to res = b - Ax, i.e. row applied vec (right hand side),.">apply</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00198"></a>00198 <span class="keyword">        </span>{
-<a name="l00199"></a>00199           assert(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00200"></a>00200           
-<a name="l00201"></a>00201           <span class="comment">//run kernel (reuse Jacobi kernel):</span>
-<a name="l00202"></a>00202           <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<ScalarType, ALIGNMENT>::program_name(),
-<a name="l00203"></a>00203                                                                 <span class="stringliteral">"diag_precond"</span>);
-<a name="l00204"></a>00204 
-<a name="l00205"></a>00205           <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>( k(diag_M_inv, vec, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>())) );        
-<a name="l00206"></a>00206         }
-<a name="l00207"></a>00207         
-<a name="l00208"></a>00208       <span class="keyword">private</span>:
-<a name="l00209"></a>00209         MatrixType <span class="keyword">const</span> & system_matrix;
-<a name="l00210"></a>00210         <a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html" title="A tag for a row preconditioner.">row_scaling_tag</a> <span class="keyword">const</span> & tag_;
-<a name="l00211"></a>00211         <a class="code" href="classviennacl_1_1vector.html">viennacl::vector<ScalarType></a> diag_M_inv;
-<a name="l00212"></a>00212     };
-<a name="l00213"></a>00213 
-<a name="l00214"></a>00214   }
-<a name="l00215"></a>00215 }
-<a name="l00216"></a>00216 
-<a name="l00217"></a>00217 
-<a name="l00218"></a>00218 
-<a name="l00219"></a>00219 
-<a name="l00220"></a>00220 <span class="preprocessor">#endif</span>
-<a name="l00221"></a>00221 <span class="preprocessor"></span>
-<a name="l00222"></a>00222 
-<a name="l00223"></a>00223 
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/scalar_8hpp.html b/doc/doxygen/html/scalar_8hpp.html
deleted file mode 100644
index 1544b1a..0000000
--- a/doc/doxygen/html/scalar_8hpp.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/scalar.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/scalar.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementation of the ViennaCL scalar class.  
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar__kernels_8h_source.html">viennacl/linalg/kernels/scalar_kernels.h</a>"</code><br/>
-<code>#include <iostream></code><br/>
-
-<p><a href="scalar_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression< LHS, RHS, OP ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A proxy for scalar expressions (e.g. from inner vector products).  <a href="classviennacl_1_1scalar__expression.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html">scalar< TYPE ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type like float or double.  <a href="classviennacl_1_1scalar.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a5b3d6b04f0d7dac6aec4342e0b37656e">operator<<</a> (std::ostream &s, const scalar< SCALARTYPE > &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allows to directly print the value of a scalar to an output stream.  <a href="#a5b3d6b04f0d7dac6aec4342e0b37656e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::istream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab4ea659d4449111a55f748c34226f305">operator>></a> (std::istream &s, const scalar< SCALARTYPE > &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allows to directly read a value of a scalar from an input stream.  <a href="#ab4ea659d4449111a55f748c34226f305"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of the ViennaCL scalar class. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/scalar_8hpp_source.html b/doc/doxygen/html/scalar_8hpp_source.html
deleted file mode 100644
index 806ee1b..0000000
--- a/doc/doxygen/html/scalar_8hpp_source.html
+++ /dev/null
@@ -1,498 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/scalar.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/scalar.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="scalar_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_SCALAR_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_SCALAR_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="scalar__kernels_8h.html">viennacl/linalg/kernels/scalar_kernels.h</a>"</span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="preprocessor">#include <iostream></span>
-<a name="l00027"></a>00027 
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>viennacl
-<a name="l00029"></a>00029 {
-<a name="l00037"></a>00037     <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00038"></a><a class="code" href="classviennacl_1_1scalar__expression.html">00038</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression</a>
-<a name="l00039"></a>00039     {
-<a name="l00040"></a>00040         <span class="keyword">typedef</span> <span class="keyword">typename</span> LHS::value_type          DummyType; <span class="comment">//Visual C++ 2005 does not allow to write LHS::value_type::value_type</span>
-<a name="l00041"></a>00041       <span class="keyword">public</span>:
-<a name="l00042"></a><a class="code" href="classviennacl_1_1scalar__expression.html#a009d628c069d36ec739ad659e1846413">00042</a>         <span class="keyword">typedef</span> <span class="keyword">typename</span> DummyType::value_type    ScalarType;
-<a name="l00043"></a>00043         
-<a name="l00044"></a><a class="code" href="classviennacl_1_1scalar__expression.html#ae0f765f70db16af7c6d8763b8316c17c">00044</a>         <a class="code" href="classviennacl_1_1scalar__expression.html#ae0f765f70db16af7c6d8763b8316c17c">scalar_expression</a>(LHS & lhs, RHS & rhs) : _lhs(lhs), _rhs(rhs) {}
-<a name="l00045"></a>00045         
-<a name="l00047"></a><a class="code" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276">00047</a>         LHS & <a class="code" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276" title="Returns the left hand side operand.">get_lhs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _lhs; }
-<a name="l00049"></a><a class="code" href="classviennacl_1_1scalar__expression.html#a039558d10a125ddba366e099b72c7b01">00049</a>         RHS & <a class="code" href="classviennacl_1_1scalar__expression.html#a039558d10a125ddba366e099b72c7b01" title="Returns the left hand side operand.">get_rhs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _rhs; }
-<a name="l00050"></a>00050 
-<a name="l00052"></a><a class="code" href="classviennacl_1_1scalar__expression.html#a0da7f7ae214746d5b37ea6c28855155c">00052</a>         <a class="code" href="classviennacl_1_1scalar__expression.html#a0da7f7ae214746d5b37ea6c28855155c" title="Conversion operator to a ViennaCL scalar.">operator ScalarType </a>()<span class="keyword"> const</span>
-<a name="l00053"></a>00053 <span class="keyword">        </span>{
-<a name="l00054"></a>00054           <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">viennacl::scalar<ScalarType></a> temp;
-<a name="l00055"></a>00055           temp = *<span class="keyword">this</span>;
-<a name="l00056"></a>00056           <span class="keywordflow">return</span> temp;
-<a name="l00057"></a>00057         }
-<a name="l00058"></a>00058 
-<a name="l00059"></a>00059       <span class="keyword">private</span>:
-<a name="l00060"></a>00060         LHS & _lhs;
-<a name="l00061"></a>00061         RHS & _rhs;
-<a name="l00062"></a>00062     };
-<a name="l00063"></a>00063     
-<a name="l00071"></a>00071     <span class="keyword">template</span><<span class="keyword">class</span> TYPE>
-<a name="l00072"></a><a class="code" href="classviennacl_1_1scalar.html">00072</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar</a>
-<a name="l00073"></a>00073     {
-<a name="l00074"></a>00074     <span class="keyword">public</span>:
-<a name="l00076"></a><a class="code" href="classviennacl_1_1scalar.html#a46dcdd29c175f21b173b96ae4dd0a46e">00076</a>       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#a465b19472e9fa1cbd9bbd334947c6042">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT<TYPE>::ResultType</a>   value_type;
-<a name="l00077"></a>00077       
-<a name="l00079"></a><a class="code" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e">00079</a>       <a class="code" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e" title="Allocates the memory for the scalar, but does not set it to zero.">scalar</a>()
-<a name="l00080"></a>00080       {
-<a name="l00081"></a>00081         viennacl::linalg::kernels::scalar<TYPE, 1>::init(); 
-<a name="l00082"></a>00082         val_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(TYPE));
-<a name="l00083"></a>00083       }
-<a name="l00085"></a><a class="code" href="classviennacl_1_1scalar.html#ab491583d840a0f494f5b6cf505defa7f">00085</a>       <a class="code" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e" title="Allocates the memory for the scalar, but does not set it to zero.">scalar</a>(TYPE val)
-<a name="l00086"></a>00086       {
-<a name="l00087"></a>00087         viennacl::linalg::kernels::scalar<TYPE, 1>::init(); 
-<a name="l00088"></a>00088         val_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(TYPE), &val);
-<a name="l00089"></a>00089       }
-<a name="l00090"></a>00090       
-<a name="l00096"></a><a class="code" href="classviennacl_1_1scalar.html#a577ea3a750a7975b2a5c256f94081b1c">00096</a>       <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1scalar.html#a577ea3a750a7975b2a5c256f94081b1c" title="Wraps an existing memory entry into a scalar.">scalar</a>(cl_mem mem, <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>) : val_(mem) { val_.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>(); }
-<a name="l00097"></a>00097 
-<a name="l00099"></a>00099       <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> OP>
-<a name="l00100"></a><a class="code" href="classviennacl_1_1scalar.html#a1c6a89a7d2a7e6744f1b92d8466e0c56">00100</a>       <a class="code" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e" title="Allocates the memory for the scalar, but does not set it to zero.">scalar</a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, OP></a> <span class="keyword">const</span> & proxy)
-<a name="l00101"></a>00101       {
-<a name="l00102"></a>00102         viennacl::linalg::kernels::scalar<TYPE, 1>::init(); 
-<a name="l00103"></a>00103         val_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(TYPE));
-<a name="l00104"></a>00104         *<span class="keyword">this</span> = proxy;
-<a name="l00105"></a>00105       }
-<a name="l00106"></a>00106 
-<a name="l00107"></a>00107       <span class="comment">//copy constructor</span>
-<a name="l00109"></a><a class="code" href="classviennacl_1_1scalar.html#a5449b52ebb29a6a9005ae8dc082b3415">00109</a> <span class="comment"></span>      <a class="code" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e" title="Allocates the memory for the scalar, but does not set it to zero.">scalar</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar</a> & other) : val_(viennacl::ocl::<a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">current_context</a>().create_memory(CL_MEM_READ_WRITE, sizeof(TYPE)))
-<a name="l00110"></a>00110       {
-<a name="l00111"></a>00111         <span class="comment">//copy value:</span>
-<a name="l00112"></a>00112         cl_int err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), other.<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), 0, 0, <span class="keyword">sizeof</span>(TYPE), 0, NULL, NULL);
-<a name="l00113"></a>00113         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00114"></a>00114       }
-<a name="l00115"></a>00115 
-<a name="l00117"></a><a class="code" href="classviennacl_1_1scalar.html#aeeb8591dc2b4252a62d89522f583c9b3">00117</a>       <a class="code" href="classviennacl_1_1scalar.html#aeeb8591dc2b4252a62d89522f583c9b3" title="Reads the value of the scalar from the GPU and returns the float or double value.">operator TYPE</a>()<span class="keyword"> const</span>
-<a name="l00118"></a>00118 <span class="keyword">      </span>{
-<a name="l00119"></a>00119         TYPE tmp;
-<a name="l00120"></a>00120         cl_int err;
-<a name="l00121"></a>00121         err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), val_, CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &tmp, 0, NULL, NULL);
-<a name="l00122"></a>00122         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00123"></a>00123         <span class="keywordflow">return</span> tmp;
-<a name="l00124"></a>00124       } 
-<a name="l00125"></a>00125       
-<a name="l00127"></a><a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c">00127</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00128"></a>00128       {
-<a name="l00129"></a>00129         <span class="comment">//copy value:</span>
-<a name="l00130"></a>00130         cl_int err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), other.<a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d" title="Returns the memory viennacl::ocl::handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), other.<a class="code" href="classviennacl_1_1entry__proxy.html#a5a79972f223067007dcfd4350cbad30f" title="Returns the index of the represented element.">index</a>() * <span class="keyword">sizeof</span>(TYPE), 0, <span class="keyword">sizeof</span>(TYPE), 0, NULL, NULL);
-<a name="l00131"></a>00131         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00132"></a>00132         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00133"></a>00133       }
-<a name="l00134"></a>00134 
-<a name="l00136"></a><a class="code" href="classviennacl_1_1scalar.html#aaeeb1bb633ef72f60b37ee06b3fd07da">00136</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00137"></a>00137       {
-<a name="l00138"></a>00138         <span class="comment">//copy value:</span>
-<a name="l00139"></a>00139         cl_int err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), other.<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), 0, 0, <span class="keyword">sizeof</span>(TYPE), 0, NULL, NULL);
-<a name="l00140"></a>00140         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00141"></a>00141         
-<a name="l00142"></a>00142         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00143"></a>00143       }
-<a name="l00144"></a>00144 
-<a name="l00145"></a><a class="code" href="classviennacl_1_1scalar.html#a7b7ff8ec9039215d41042fb6dff8b24e">00145</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<span class="keywordtype">float</span> cpu_other)
-<a name="l00146"></a>00146       {
-<a name="l00147"></a>00147         <span class="comment">//copy value:</span>
-<a name="l00148"></a>00148         TYPE other = cpu_other;
-<a name="l00149"></a>00149         cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &other, 0, NULL, NULL);
-<a name="l00150"></a>00150         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00151"></a>00151         
-<a name="l00152"></a>00152         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00153"></a>00153       }
-<a name="l00154"></a>00154 
-<a name="l00155"></a><a class="code" href="classviennacl_1_1scalar.html#a24e0667388106b9f4150ade71c219b29">00155</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<span class="keywordtype">double</span> cpu_other)
-<a name="l00156"></a>00156       {
-<a name="l00157"></a>00157         <span class="comment">//copy value:</span>
-<a name="l00158"></a>00158         TYPE other = cpu_other;
-<a name="l00159"></a>00159         cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &other, 0, NULL, NULL);
-<a name="l00160"></a>00160         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00161"></a>00161         
-<a name="l00162"></a>00162         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00163"></a>00163       }
-<a name="l00164"></a>00164 
-<a name="l00165"></a><a class="code" href="classviennacl_1_1scalar.html#a11b85e1905ff83211365912d4d5c3d48">00165</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<span class="keywordtype">long</span> cpu_other)
-<a name="l00166"></a>00166       {
-<a name="l00167"></a>00167         <span class="comment">//copy value:</span>
-<a name="l00168"></a>00168         TYPE other = cpu_other;
-<a name="l00169"></a>00169         cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &other, 0, NULL, NULL);
-<a name="l00170"></a>00170         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00171"></a>00171         
-<a name="l00172"></a>00172         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00173"></a>00173       }
-<a name="l00174"></a>00174 
-<a name="l00175"></a><a class="code" href="classviennacl_1_1scalar.html#a601bfbe9d4b4f0a5136649f6b6f2062e">00175</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> cpu_other)
-<a name="l00176"></a>00176       {
-<a name="l00177"></a>00177         <span class="comment">//copy value:</span>
-<a name="l00178"></a>00178         TYPE other = cpu_other;
-<a name="l00179"></a>00179         cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &other, 0, NULL, NULL);
-<a name="l00180"></a>00180         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00181"></a>00181         
-<a name="l00182"></a>00182         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00183"></a>00183       }
-<a name="l00184"></a>00184 
-<a name="l00185"></a><a class="code" href="classviennacl_1_1scalar.html#a2d72be42c42830b4e6f5426dc385daca">00185</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<span class="keywordtype">int</span> cpu_other)
-<a name="l00186"></a>00186       {
-<a name="l00187"></a>00187         <span class="comment">//copy value:</span>
-<a name="l00188"></a>00188         TYPE other = cpu_other;
-<a name="l00189"></a>00189         cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &other, 0, NULL, NULL);
-<a name="l00190"></a>00190         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00191"></a>00191         
-<a name="l00192"></a>00192         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00193"></a>00193       }
-<a name="l00194"></a>00194 
-<a name="l00195"></a><a class="code" href="classviennacl_1_1scalar.html#a4de3e801606700dc657414c0634ad46e">00195</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cpu_other)
-<a name="l00196"></a>00196       {
-<a name="l00197"></a>00197         <span class="comment">//copy value:</span>
-<a name="l00198"></a>00198         TYPE other = cpu_other;
-<a name="l00199"></a>00199         cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &other, 0, NULL, NULL);
-<a name="l00200"></a>00200         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00201"></a>00201         
-<a name="l00202"></a>00202         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00203"></a>00203       }
-<a name="l00205"></a>00205       <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2>
-<a name="l00206"></a><a class="code" href="classviennacl_1_1scalar.html#a8f7fe13c798d1186206cd1cebe76b41f">00206</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, op_inner_prod></a> <span class="keyword">const</span> & proxy)
-<a name="l00207"></a>00207       {
-<a name="l00208"></a>00208         <a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b" title="Computes the inner product of two vectors.">viennacl::linalg::inner_prod_impl</a>(proxy.<a class="code" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276" title="Returns the left hand side operand.">get_lhs</a>(), proxy.<a class="code" href="classviennacl_1_1scalar__expression.html#a039558d10a125ddba366e099b72c7b01" title="Returns the left hand side operand.">get_rhs</a>(), *<span class="keyword">this</span>);
-<a name="l00209"></a>00209         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00210"></a>00210       }
-<a name="l00211"></a>00211 
-<a name="l00213"></a>00213       <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2>
-<a name="l00214"></a><a class="code" href="classviennacl_1_1scalar.html#a2f070f408c1f475ffb38ee82f59276c2">00214</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, op_norm_1></a> <span class="keyword">const</span> & proxy)
-<a name="l00215"></a>00215       {
-<a name="l00216"></a>00216         <a class="code" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30" title="Computes the l^1-norm of a vector.">viennacl::linalg::norm_1_impl</a>(proxy.<a class="code" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276" title="Returns the left hand side operand.">get_lhs</a>(), *<span class="keyword">this</span>);
-<a name="l00217"></a>00217         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00218"></a>00218       }
-<a name="l00219"></a>00219 
-<a name="l00221"></a>00221       <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2>
-<a name="l00222"></a><a class="code" href="classviennacl_1_1scalar.html#a896fd9035e7735fd9fb3ea18fbae225e">00222</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, op_norm_2></a> <span class="keyword">const</span> & proxy)
-<a name="l00223"></a>00223       {
-<a name="l00224"></a>00224         <a class="code" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a" title="Computes the l^2-norm of a vector - implementation.">viennacl::linalg::norm_2_impl</a>(proxy.<a class="code" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276" title="Returns the left hand side operand.">get_lhs</a>(), *<span class="keyword">this</span>);
-<a name="l00225"></a>00225         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00226"></a>00226       }
-<a name="l00227"></a>00227 
-<a name="l00229"></a>00229       <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2>
-<a name="l00230"></a><a class="code" href="classviennacl_1_1scalar.html#acea2777143dac0b71bfa981adbdf0fc5">00230</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, op_norm_inf></a> <span class="keyword">const</span> & proxy)
-<a name="l00231"></a>00231       {
-<a name="l00232"></a>00232         <a class="code" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca" title="Computes the supremum-norm of a vector.">viennacl::linalg::norm_inf_impl</a>(proxy.<a class="code" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276" title="Returns the left hand side operand.">get_lhs</a>(), *<span class="keyword">this</span>);
-<a name="l00233"></a>00233         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00234"></a>00234       }
-<a name="l00235"></a>00235 
-<a name="l00237"></a><a class="code" href="classviennacl_1_1scalar.html#a54ddb6fd129bd75c57e27007c37a6ed9">00237</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a54ddb6fd129bd75c57e27007c37a6ed9" title="Inplace addition of a ViennaCL scalar.">operator += </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00238"></a>00238       {
-<a name="l00239"></a>00239         <span class="comment">//get kernel:</span>
-<a name="l00240"></a>00240         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"inplace_add"</span>);
-<a name="l00241"></a>00241         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00242"></a>00242         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00243"></a>00243         
-<a name="l00244"></a>00244         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));
-<a name="l00245"></a>00245         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00246"></a>00246       }
-<a name="l00248"></a><a class="code" href="classviennacl_1_1scalar.html#a3ead36ea34f169d78e44c621834d92fa">00248</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a54ddb6fd129bd75c57e27007c37a6ed9" title="Inplace addition of a ViennaCL scalar.">operator += </a>(TYPE other)
-<a name="l00249"></a>00249       {
-<a name="l00250"></a>00250         <span class="comment">//get kernel:</span>
-<a name="l00251"></a>00251         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_inplace_add"</span>);
-<a name="l00252"></a>00252         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00253"></a>00253         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00254"></a>00254 
-<a name="l00255"></a>00255         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));        
-<a name="l00256"></a>00256         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00257"></a>00257       }
-<a name="l00258"></a>00258 
-<a name="l00259"></a>00259 
-<a name="l00261"></a><a class="code" href="classviennacl_1_1scalar.html#a67a75928643713bf283d1bdce350589c">00261</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a67a75928643713bf283d1bdce350589c" title="Inplace subtraction of a ViennaCL scalar.">operator -= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00262"></a>00262       {
-<a name="l00263"></a>00263         <span class="comment">//get kernel:</span>
-<a name="l00264"></a>00264         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"inplace_sub"</span>);
-<a name="l00265"></a>00265         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00266"></a>00266         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00267"></a>00267         
-<a name="l00268"></a>00268         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));
-<a name="l00269"></a>00269         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00270"></a>00270       }
-<a name="l00272"></a><a class="code" href="classviennacl_1_1scalar.html#a73870d8ac2703677743701c8fa1d0ac0">00272</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a67a75928643713bf283d1bdce350589c" title="Inplace subtraction of a ViennaCL scalar.">operator -= </a>(TYPE other)
-<a name="l00273"></a>00273       {
-<a name="l00274"></a>00274         <span class="comment">//get kernel:</span>
-<a name="l00275"></a>00275         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_inplace_sub"</span>);
-<a name="l00276"></a>00276         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00277"></a>00277         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00278"></a>00278 
-<a name="l00279"></a>00279         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));        
-<a name="l00280"></a>00280         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00281"></a>00281       }
-<a name="l00282"></a>00282 
-<a name="l00283"></a>00283 
-<a name="l00285"></a><a class="code" href="classviennacl_1_1scalar.html#a9b5f86e060ae258394d0333cff946b08">00285</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a9b5f86e060ae258394d0333cff946b08" title="Inplace multiplication with a ViennaCL scalar.">operator *= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00286"></a>00286       {
-<a name="l00287"></a>00287         <span class="comment">//get kernel:</span>
-<a name="l00288"></a>00288         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"inplace_mul"</span>);
-<a name="l00289"></a>00289         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00290"></a>00290         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00291"></a>00291         
-<a name="l00292"></a>00292         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));
-<a name="l00293"></a>00293         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00294"></a>00294       }
-<a name="l00296"></a><a class="code" href="classviennacl_1_1scalar.html#a70b79d882deca6e3cb7d86ac5b893c58">00296</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a9b5f86e060ae258394d0333cff946b08" title="Inplace multiplication with a ViennaCL scalar.">operator *= </a>(TYPE other)
-<a name="l00297"></a>00297       {
-<a name="l00298"></a>00298         <span class="comment">//get kernel:</span>
-<a name="l00299"></a>00299         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_inplace_mul"</span>);
-<a name="l00300"></a>00300         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00301"></a>00301         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00302"></a>00302 
-<a name="l00303"></a>00303         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));        
-<a name="l00304"></a>00304         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00305"></a>00305       }
-<a name="l00306"></a>00306 
-<a name="l00307"></a>00307 
-<a name="l00309"></a>00309 
-<a name="l00310"></a><a class="code" href="classviennacl_1_1scalar.html#a5bb32c06b69bc99ab13df93be2f262f4">00310</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a5bb32c06b69bc99ab13df93be2f262f4" title="Inplace division with a ViennaCL scalar.">operator /= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00311"></a>00311       {
-<a name="l00312"></a>00312         <span class="comment">//get kernel:</span>
-<a name="l00313"></a>00313         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"inplace_div"</span>);
-<a name="l00314"></a>00314         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00315"></a>00315         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00316"></a>00316         
-<a name="l00317"></a>00317         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));
-<a name="l00318"></a>00318         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00319"></a>00319       }
-<a name="l00321"></a><a class="code" href="classviennacl_1_1scalar.html#a0631b7d2624ee483233b85ead71b4a78">00321</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a5bb32c06b69bc99ab13df93be2f262f4" title="Inplace division with a ViennaCL scalar.">operator /= </a>(TYPE other)
-<a name="l00322"></a>00322       {
-<a name="l00323"></a>00323         <span class="comment">//get kernel:</span>
-<a name="l00324"></a>00324         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_inplace_div"</span>);
-<a name="l00325"></a>00325         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00326"></a>00326         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00327"></a>00327 
-<a name="l00328"></a>00328         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));        
-<a name="l00329"></a>00329         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00330"></a>00330       }
-<a name="l00331"></a>00331       
-<a name="l00332"></a>00332       
-<a name="l00334"></a>00334 
-<a name="l00335"></a><a class="code" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88">00335</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88" title="Addition of two ViennaCL scalars.">operator + </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00336"></a>00336       {
-<a name="l00337"></a>00337         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00338"></a>00338         <span class="comment">//get kernel:</span>
-<a name="l00339"></a>00339         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"add"</span>);
-<a name="l00340"></a>00340         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00341"></a>00341         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00342"></a>00342 
-<a name="l00343"></a>00343         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_, result));        
-<a name="l00344"></a>00344         <span class="keywordflow">return</span> result;
-<a name="l00345"></a>00345       }
-<a name="l00347"></a>00347       <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> OP>
-<a name="l00348"></a><a class="code" href="classviennacl_1_1scalar.html#a6459d7d73f3f0d94757b0b1461d59814">00348</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88" title="Addition of two ViennaCL scalars.">operator + </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, OP></a> <span class="keyword">const</span> & proxy)<span class="keyword"> const</span>
-<a name="l00349"></a>00349 <span class="keyword">      </span>{
-<a name="l00350"></a>00350         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result = proxy;
-<a name="l00351"></a>00351         <span class="comment">//get kernel:</span>
-<a name="l00352"></a>00352         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"add"</span>);
-<a name="l00353"></a>00353         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00354"></a>00354         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00355"></a>00355 
-<a name="l00356"></a>00356         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, result, result));        
-<a name="l00357"></a>00357         <span class="keywordflow">return</span> result;
-<a name="l00358"></a>00358       }
-<a name="l00360"></a><a class="code" href="classviennacl_1_1scalar.html#a843d737fff3a5d68391099cbf26381f2">00360</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88" title="Addition of two ViennaCL scalars.">operator + </a>(TYPE other)
-<a name="l00361"></a>00361       {
-<a name="l00362"></a>00362         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00363"></a>00363         <span class="comment">//get kernel:</span>
-<a name="l00364"></a>00364         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_add"</span>);
-<a name="l00365"></a>00365         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00366"></a>00366         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00367"></a>00367 
-<a name="l00368"></a>00368         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other, result));        
-<a name="l00369"></a>00369         <span class="keywordflow">return</span> result;
-<a name="l00370"></a>00370       }
-<a name="l00371"></a>00371 
-<a name="l00372"></a>00372 
-<a name="l00374"></a>00374 
-<a name="l00375"></a><a class="code" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32">00375</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32" title="Subtraction of two ViennaCL scalars.">operator - </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00376"></a>00376 <span class="keyword">      </span>{
-<a name="l00377"></a>00377         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00378"></a>00378         <span class="comment">//get kernel:</span>
-<a name="l00379"></a>00379         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"sub"</span>);
-<a name="l00380"></a>00380         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00381"></a>00381         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00382"></a>00382 
-<a name="l00383"></a>00383         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_, result));        
-<a name="l00384"></a>00384         <span class="keywordflow">return</span> result;
-<a name="l00385"></a>00385       }
-<a name="l00387"></a>00387       <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> OP>
-<a name="l00388"></a><a class="code" href="classviennacl_1_1scalar.html#a46f766bad633277898cb5c4dcd033d68">00388</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32" title="Subtraction of two ViennaCL scalars.">operator - </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, OP></a> <span class="keyword">const</span> & proxy)<span class="keyword"> const</span>
-<a name="l00389"></a>00389 <span class="keyword">      </span>{
-<a name="l00390"></a>00390         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result = *<span class="keyword">this</span>;
-<a name="l00391"></a>00391         <span class="comment">//get kernel:</span>
-<a name="l00392"></a>00392         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"sub"</span>);
-<a name="l00393"></a>00393         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00394"></a>00394         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00395"></a>00395 
-<a name="l00396"></a>00396         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, result, result));        
-<a name="l00397"></a>00397         <span class="keywordflow">return</span> result;
-<a name="l00398"></a>00398       }
-<a name="l00400"></a><a class="code" href="classviennacl_1_1scalar.html#aeb369f81094dc1dcae284916a820fa34">00400</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32" title="Subtraction of two ViennaCL scalars.">operator - </a>(TYPE other)<span class="keyword"> const</span>
-<a name="l00401"></a>00401 <span class="keyword">      </span>{
-<a name="l00402"></a>00402         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00403"></a>00403         <span class="comment">//get kernel:</span>
-<a name="l00404"></a>00404         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_sub"</span>);
-<a name="l00405"></a>00405         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00406"></a>00406         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00407"></a>00407 
-<a name="l00408"></a>00408         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other, result));        
-<a name="l00409"></a>00409         <span class="keywordflow">return</span> result;
-<a name="l00410"></a>00410         
-<a name="l00411"></a>00411         <span class="keywordflow">return</span> result;
-<a name="l00412"></a>00412       }
-<a name="l00413"></a>00413 
-<a name="l00415"></a>00415 
-<a name="l00416"></a><a class="code" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16">00416</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16" title="Multiplication of two ViennaCL scalars.">operator * </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00417"></a>00417 <span class="keyword">      </span>{
-<a name="l00418"></a>00418         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00419"></a>00419         <span class="comment">//get kernel:</span>
-<a name="l00420"></a>00420         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"mul"</span>);
-<a name="l00421"></a>00421         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00422"></a>00422         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00423"></a>00423 
-<a name="l00424"></a>00424         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_, result));        
-<a name="l00425"></a>00425         <span class="keywordflow">return</span> result;
-<a name="l00426"></a>00426       }
-<a name="l00428"></a>00428       <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> OP>
-<a name="l00429"></a><a class="code" href="classviennacl_1_1scalar.html#a8a8ee730a8f51c85440630a48d07429d">00429</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16" title="Multiplication of two ViennaCL scalars.">operator * </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, OP></a> <span class="keyword">const</span> & proxy)<span class="keyword"> const</span>
-<a name="l00430"></a>00430 <span class="keyword">      </span>{
-<a name="l00431"></a>00431         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result = proxy;
-<a name="l00432"></a>00432         <span class="comment">//get kernel:</span>
-<a name="l00433"></a>00433         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"mul"</span>);
-<a name="l00434"></a>00434         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00435"></a>00435         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00436"></a>00436 
-<a name="l00437"></a>00437         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, result, result));        
-<a name="l00438"></a>00438         <span class="keywordflow">return</span> result;
-<a name="l00439"></a>00439       }
-<a name="l00441"></a><a class="code" href="classviennacl_1_1scalar.html#a232414930e04594eeb40a5a387f91337">00441</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16" title="Multiplication of two ViennaCL scalars.">operator * </a>(TYPE other)<span class="keyword"> const</span>
-<a name="l00442"></a>00442 <span class="keyword">      </span>{
-<a name="l00443"></a>00443         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00444"></a>00444         <span class="comment">//get kernel:</span>
-<a name="l00445"></a>00445         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_mul"</span>);
-<a name="l00446"></a>00446         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00447"></a>00447         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00448"></a>00448 
-<a name="l00449"></a>00449         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other, result));        
-<a name="l00450"></a>00450         <span class="keywordflow">return</span> result;
-<a name="l00451"></a>00451       }
-<a name="l00452"></a>00452       
-<a name="l00454"></a>00454 
-<a name="l00455"></a><a class="code" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb">00455</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb" title="Division of two ViennaCL scalars.">operator / </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00456"></a>00456 <span class="keyword">      </span>{
-<a name="l00457"></a>00457         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00458"></a>00458         <span class="comment">//get kernel:</span>
-<a name="l00459"></a>00459         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"divide"</span>);
-<a name="l00460"></a>00460         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00461"></a>00461         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00462"></a>00462 
-<a name="l00463"></a>00463         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_, result));        
-<a name="l00464"></a>00464         <span class="keywordflow">return</span> result;
-<a name="l00465"></a>00465       }
-<a name="l00467"></a>00467       <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> OP>
-<a name="l00468"></a><a class="code" href="classviennacl_1_1scalar.html#a27b5a8f4b44fd9f9b83e3e9f274f01e7">00468</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb" title="Division of two ViennaCL scalars.">operator / </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, OP></a> <span class="keyword">const</span> & proxy)<span class="keyword"> const</span>
-<a name="l00469"></a>00469 <span class="keyword">      </span>{
-<a name="l00470"></a>00470         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result = proxy;
-<a name="l00471"></a>00471         <span class="comment">//get kernel:</span>
-<a name="l00472"></a>00472         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"divide"</span>);
-<a name="l00473"></a>00473         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00474"></a>00474         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00475"></a>00475 
-<a name="l00476"></a>00476         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, result, result));        
-<a name="l00477"></a>00477         <span class="keywordflow">return</span> result;
-<a name="l00478"></a>00478       }
-<a name="l00480"></a><a class="code" href="classviennacl_1_1scalar.html#affd5ad0c4067234e832db130cea14288">00480</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb" title="Division of two ViennaCL scalars.">operator / </a>(TYPE other)<span class="keyword"> const</span>
-<a name="l00481"></a>00481 <span class="keyword">      </span>{
-<a name="l00482"></a>00482         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00483"></a>00483         <span class="comment">//get kernel:</span>
-<a name="l00484"></a>00484         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_div"</span>);
-<a name="l00485"></a>00485         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00486"></a>00486         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00487"></a>00487 
-<a name="l00488"></a>00488         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other, result));        
-<a name="l00489"></a>00489         <span class="keywordflow">return</span> result;
-<a name="l00490"></a>00490       }
-<a name="l00491"></a>00491 
-<a name="l00493"></a><a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c">00493</a>       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> val_; }
-<a name="l00494"></a>00494       
-<a name="l00495"></a>00495     <span class="keyword">private</span>:
-<a name="l00496"></a>00496       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> val_;
-<a name="l00497"></a>00497     };
-<a name="l00498"></a>00498     
-<a name="l00499"></a>00499     
-<a name="l00500"></a>00500     <span class="comment">//stream operators:</span>
-<a name="l00502"></a>00502 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE>
-<a name="l00503"></a><a class="code" href="namespaceviennacl.html#a5b3d6b04f0d7dac6aec4342e0b37656e">00503</a>     std::ostream & operator<<(std::ostream & s, const scalar<SCALARTYPE> & val)
-<a name="l00504"></a>00504     {
-<a name="l00505"></a>00505       SCALARTYPE temp = val;
-<a name="l00506"></a>00506       s << temp;
-<a name="l00507"></a>00507       <span class="keywordflow">return</span> s;
-<a name="l00508"></a>00508     }
-<a name="l00509"></a>00509 
-<a name="l00511"></a>00511     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE>
-<a name="l00512"></a><a class="code" href="namespaceviennacl.html#ab4ea659d4449111a55f748c34226f305">00512</a>     std::istream & <a class="code" href="namespaceviennacl.html#ab4ea659d4449111a55f748c34226f305" title="Allows to directly read a value of a scalar from an input stream.">operator>></a>(std::istream & s, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & val)
-<a name="l00513"></a>00513     {
-<a name="l00514"></a>00514       SCALARTYPE temp;
-<a name="l00515"></a>00515       s >> temp;
-<a name="l00516"></a>00516       val = temp;
-<a name="l00517"></a>00517       <span class="keywordflow">return</span> s;
-<a name="l00518"></a>00518     }
-<a name="l00519"></a>00519 
-<a name="l00520"></a>00520 } <span class="comment">//namespace viennacl</span>
-<a name="l00521"></a>00521 
-<a name="l00522"></a>00522 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/scalar__kernels_8h.html b/doc/doxygen/html/scalar__kernels_8h.html
deleted file mode 100644
index 538a70c..0000000
--- a/doc/doxygen/html/scalar__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar__source_8h_source.html">viennacl/linalg/kernels/scalar_source.h</a>"</code><br/>
-
-<p><a href="scalar__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">scalar< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">scalar< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/scalar__kernels_8h_source.html b/doc/doxygen/html/scalar__kernels_8h_source.html
deleted file mode 100644
index 4f23782..0000000
--- a/doc/doxygen/html/scalar__kernels_8h_source.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="scalar__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_SCALAR_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_SCALAR_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="scalar__source_8h.html">viennacl/linalg/kernels/scalar_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>scalar;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">00022</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar</a><float, 1>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_scalar_1"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">scalar_align1_inplace_sub</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">scalar_align1_cpu_inplace_div</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">scalar_align1_cpu_inplace_add</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">scalar_align1_cpu_sub</a>);
-<a name="l00040"></a>00040         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">scalar_align1_cpu_mul</a>);
-<a name="l00041"></a>00041         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">scalar_align1_sub</a>);
-<a name="l00042"></a>00042         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">scalar_align1_inplace_mul</a>);
-<a name="l00043"></a>00043         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">scalar_align1_cpu_inplace_mul</a>);
-<a name="l00044"></a>00044         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">scalar_align1_mul</a>);
-<a name="l00045"></a>00045         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">scalar_align1_cpu_add</a>);
-<a name="l00046"></a>00046         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">scalar_align1_inplace_div</a>);
-<a name="l00047"></a>00047         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">scalar_align1_add</a>);
-<a name="l00048"></a>00048         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">scalar_align1_cpu_inplace_sub</a>);
-<a name="l00049"></a>00049         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">scalar_align1_inplace_add</a>);
-<a name="l00050"></a>00050         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">scalar_align1_divide</a>);
-<a name="l00051"></a>00051         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">scalar_align1_cpu_div</a>);
-<a name="l00052"></a>00052         std::string prog_name = program_name();
-<a name="l00053"></a>00053 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00055"></a>00055 <span class="preprocessor">        #endif</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00057"></a>00057         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00058"></a>00058         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00059"></a>00059         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_div"</span>);
-<a name="l00060"></a>00060         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_add"</span>);
-<a name="l00061"></a>00061         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_sub"</span>);
-<a name="l00062"></a>00062         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul"</span>);
-<a name="l00063"></a>00063         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00064"></a>00064         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul"</span>);
-<a name="l00065"></a>00065         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul"</span>);
-<a name="l00066"></a>00066         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul"</span>);
-<a name="l00067"></a>00067         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_add"</span>);
-<a name="l00068"></a>00068         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div"</span>);
-<a name="l00069"></a>00069         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00070"></a>00070         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_sub"</span>);
-<a name="l00071"></a>00071         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00072"></a>00072         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00073"></a>00073         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_div"</span>);
-<a name="l00074"></a>00074         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00075"></a>00075        } <span class="comment">//if</span>
-<a name="l00076"></a>00076      } <span class="comment">//init</span>
-<a name="l00077"></a>00077     }; <span class="comment">// struct</span>
-<a name="l00078"></a>00078 
-<a name="l00079"></a>00079 
-<a name="l00080"></a>00080 
-<a name="l00082"></a>00082    <span class="keyword">template</span> <>
-<a name="l00083"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">00083</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar</a><double, 1>
-<a name="l00084"></a>00084    {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00085</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00086"></a>00086     {
-<a name="l00087"></a>00087       <span class="keywordflow">return</span> <span class="stringliteral">"d_scalar_1"</span>;
-<a name="l00088"></a>00088     }
-<a name="l00089"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00089</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00090"></a>00090     {
-<a name="l00091"></a>00091       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00092"></a>00092       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00093"></a>00093       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00094"></a>00094       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00095"></a>00095       {
-<a name="l00096"></a>00096         std::string source;
-<a name="l00097"></a>00097         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00098"></a>00098         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">scalar_align1_inplace_sub</a>, fp64_ext));
-<a name="l00099"></a>00099         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">scalar_align1_cpu_inplace_div</a>, fp64_ext));
-<a name="l00100"></a>00100         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">scalar_align1_cpu_inplace_add</a>, fp64_ext));
-<a name="l00101"></a>00101         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">scalar_align1_cpu_sub</a>, fp64_ext));
-<a name="l00102"></a>00102         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">scalar_align1_cpu_mul</a>, fp64_ext));
-<a name="l00103"></a>00103         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">scalar_align1_sub</a>, fp64_ext));
-<a name="l00104"></a>00104         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">scalar_align1_inplace_mul</a>, fp64_ext));
-<a name="l00105"></a>00105         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">scalar_align1_cpu_inplace_mul</a>, fp64_ext));
-<a name="l00106"></a>00106         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">scalar_align1_mul</a>, fp64_ext));
-<a name="l00107"></a>00107         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">scalar_align1_cpu_add</a>, fp64_ext));
-<a name="l00108"></a>00108         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">scalar_align1_inplace_div</a>, fp64_ext));
-<a name="l00109"></a>00109         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">scalar_align1_add</a>, fp64_ext));
-<a name="l00110"></a>00110         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">scalar_align1_cpu_inplace_sub</a>, fp64_ext));
-<a name="l00111"></a>00111         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">scalar_align1_inplace_add</a>, fp64_ext));
-<a name="l00112"></a>00112         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">scalar_align1_divide</a>, fp64_ext));
-<a name="l00113"></a>00113         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">scalar_align1_cpu_div</a>, fp64_ext));
-<a name="l00114"></a>00114         std::string prog_name = program_name();
-<a name="l00115"></a>00115 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00117"></a>00117 <span class="preprocessor">        #endif</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00119"></a>00119         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00120"></a>00120         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00121"></a>00121         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_div"</span>);
-<a name="l00122"></a>00122         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_add"</span>);
-<a name="l00123"></a>00123         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_sub"</span>);
-<a name="l00124"></a>00124         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul"</span>);
-<a name="l00125"></a>00125         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00126"></a>00126         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul"</span>);
-<a name="l00127"></a>00127         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul"</span>);
-<a name="l00128"></a>00128         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul"</span>);
-<a name="l00129"></a>00129         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_add"</span>);
-<a name="l00130"></a>00130         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div"</span>);
-<a name="l00131"></a>00131         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00132"></a>00132         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_sub"</span>);
-<a name="l00133"></a>00133         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00134"></a>00134         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00135"></a>00135         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_div"</span>);
-<a name="l00136"></a>00136         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00137"></a>00137        } <span class="comment">//if</span>
-<a name="l00138"></a>00138      } <span class="comment">//init</span>
-<a name="l00139"></a>00139     }; <span class="comment">// struct</span>
-<a name="l00140"></a>00140 
-<a name="l00141"></a>00141 
-<a name="l00142"></a>00142   }  <span class="comment">//namespace kernels</span>
-<a name="l00143"></a>00143  }  <span class="comment">//namespace linalg</span>
-<a name="l00144"></a>00144 }  <span class="comment">//namespace viennacl</span>
-<a name="l00145"></a>00145 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/scalar__source_8h.html b/doc/doxygen/html/scalar__source_8h.html
deleted file mode 100644
index 1d72a57..0000000
--- a/doc/doxygen/html/scalar__source_8h.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="scalar__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">scalar_align1_inplace_sub</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">scalar_align1_cpu_inplace_div</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">scalar_align1_cpu_inplace_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">scalar_align1_cpu_sub</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">scalar_align1_cpu_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">scalar_align1_sub</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">scalar_align1_inplace_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">scalar_align1_cpu_inplace_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">scalar_align1_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">scalar_align1_cpu_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">scalar_align1_inplace_div</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">scalar_align1_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">scalar_align1_cpu_inplace_sub</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">scalar_align1_inplace_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">scalar_align1_divide</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">scalar_align1_cpu_div</a> = " \n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/scalar__source_8h_source.html b/doc/doxygen/html/scalar__source_8h_source.html
deleted file mode 100644
index a21c692..0000000
--- a/doc/doxygen/html/scalar__source_8h_source.html
+++ /dev/null
@@ -1,254 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="scalar__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_SCALAR_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_SCALAR_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">scalar_align1_inplace_sub</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">" \n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"__kernel void inplace_sub(\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"          __global float * val1,\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"          __global const float * val2) \n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"{ \n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"    *val1 -= *val2;\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"}\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" \n"</span>
-<a name="l00020"></a>00020 ; <span class="comment">//scalar_align1_inplace_sub</span>
-<a name="l00021"></a>00021 
-<a name="l00022"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">00022</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">scalar_align1_cpu_inplace_div</a> = 
-<a name="l00023"></a>00023 <span class="stringliteral">" \n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"__kernel void cpu_inplace_div(\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"          __global float * val1,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"          float val2) \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"{ \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"    *val1 /= val2;\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"}\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"\n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">" \n"</span>
-<a name="l00033"></a>00033 ; <span class="comment">//scalar_align1_cpu_inplace_div</span>
-<a name="l00034"></a>00034 
-<a name="l00035"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">00035</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">scalar_align1_cpu_inplace_add</a> = 
-<a name="l00036"></a>00036 <span class="stringliteral">" \n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"__kernel void cpu_inplace_add(\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"          __global float * val1,\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">"          float val2) \n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"{ \n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">"    *val1 += val2;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"}\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" \n"</span>
-<a name="l00045"></a>00045 ; <span class="comment">//scalar_align1_cpu_inplace_add</span>
-<a name="l00046"></a>00046 
-<a name="l00047"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">00047</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">scalar_align1_cpu_sub</a> = 
-<a name="l00048"></a>00048 <span class="stringliteral">" \n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"__kernel void cpu_sub(\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"          __global const float * val1,\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"          float val2, \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"{ \n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"    *result = *val1 - val2;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"}\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" \n"</span>
-<a name="l00058"></a>00058 ; <span class="comment">//scalar_align1_cpu_sub</span>
-<a name="l00059"></a>00059 
-<a name="l00060"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">00060</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">scalar_align1_cpu_mul</a> = 
-<a name="l00061"></a>00061 <span class="stringliteral">" \n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"__kernel void cpu_mul(\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"          __global const float * val1,\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"          float val2, \n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"{ \n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"    *result = *val1 * val2;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 <span class="stringliteral">" \n"</span>
-<a name="l00071"></a>00071 ; <span class="comment">//scalar_align1_cpu_mul</span>
-<a name="l00072"></a>00072 
-<a name="l00073"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">00073</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">scalar_align1_sub</a> = 
-<a name="l00074"></a>00074 <span class="stringliteral">" \n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"__kernel void sub(\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"          __global const float * val1,\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"          __global const float * val2, \n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"{ \n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">"    *result = *val1 - *val2;\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"}\n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" \n"</span>
-<a name="l00084"></a>00084 ; <span class="comment">//scalar_align1_sub</span>
-<a name="l00085"></a>00085 
-<a name="l00086"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">00086</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">scalar_align1_inplace_mul</a> = 
-<a name="l00087"></a>00087 <span class="stringliteral">" \n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"__kernel void inplace_mul(\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"          __global float * val1,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"          __global const float * val2) \n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"{ \n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"    *val1 *= *val2;\n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"}\n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" \n"</span>
-<a name="l00096"></a>00096 ; <span class="comment">//scalar_align1_inplace_mul</span>
-<a name="l00097"></a>00097 
-<a name="l00098"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">00098</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">scalar_align1_cpu_inplace_mul</a> = 
-<a name="l00099"></a>00099 <span class="stringliteral">" \n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"__kernel void cpu_inplace_mul(\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"          __global float * val1,\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"          float val2) \n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"{ \n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"    *val1 *= val2;\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"}\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" \n"</span>
-<a name="l00108"></a>00108 ; <span class="comment">//scalar_align1_cpu_inplace_mul</span>
-<a name="l00109"></a>00109 
-<a name="l00110"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">00110</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">scalar_align1_mul</a> = 
-<a name="l00111"></a>00111 <span class="stringliteral">" \n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"__kernel void mul(\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"          __global const float * val1,\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"          __global const float * val2, \n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"{ \n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"    *result = *val1 * *val2;\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"}\n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" \n"</span>
-<a name="l00121"></a>00121 ; <span class="comment">//scalar_align1_mul</span>
-<a name="l00122"></a>00122 
-<a name="l00123"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">00123</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">scalar_align1_cpu_add</a> = 
-<a name="l00124"></a>00124 <span class="stringliteral">" \n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"__kernel void cpu_add(\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"          __global const float * val1,\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"          float val2, \n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"{ \n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"    *result = *val1 + val2;\n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">"}\n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">" \n"</span>
-<a name="l00134"></a>00134 ; <span class="comment">//scalar_align1_cpu_add</span>
-<a name="l00135"></a>00135 
-<a name="l00136"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">00136</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">scalar_align1_inplace_div</a> = 
-<a name="l00137"></a>00137 <span class="stringliteral">" \n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void inplace_div(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"          __global float * val1,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"          __global const float * val2) \n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"{ \n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"    *val1 /= *val2;\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"}\n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" \n"</span>
-<a name="l00146"></a>00146 ; <span class="comment">//scalar_align1_inplace_div</span>
-<a name="l00147"></a>00147 
-<a name="l00148"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">00148</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">scalar_align1_add</a> = 
-<a name="l00149"></a>00149 <span class="stringliteral">" \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"__kernel void add(\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"          __global const float * val1,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"          __global const float * val2, \n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"{ \n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"    *result = *val1 + *val2;\n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"}\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" \n"</span>
-<a name="l00159"></a>00159 ; <span class="comment">//scalar_align1_add</span>
-<a name="l00160"></a>00160 
-<a name="l00161"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">00161</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">scalar_align1_cpu_inplace_sub</a> = 
-<a name="l00162"></a>00162 <span class="stringliteral">" \n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"__kernel void cpu_inplace_sub(\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"          __global float * val1,\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"          float val2) \n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"{ \n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"    *val1 -= val2;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"}\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" \n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"\n"</span>
-<a name="l00172"></a>00172 ; <span class="comment">//scalar_align1_cpu_inplace_sub</span>
-<a name="l00173"></a>00173 
-<a name="l00174"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">00174</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">scalar_align1_inplace_add</a> = 
-<a name="l00175"></a>00175 <span class="stringliteral">" \n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"__kernel void inplace_add(\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"          __global float * val1,\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"          __global const float * val2) \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"{ \n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"    *val1 += *val2;\n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"}\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" \n"</span>
-<a name="l00184"></a>00184 ; <span class="comment">//scalar_align1_inplace_add</span>
-<a name="l00185"></a>00185 
-<a name="l00186"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">00186</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">scalar_align1_divide</a> = 
-<a name="l00187"></a>00187 <span class="stringliteral">" \n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"// note: 'div' seems to produce some name clashes with the OpenCL jit-compiler, thus using 'divide'\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"__kernel void divide(\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"          __global const float * val1,\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"          __global const float * val2, \n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"{ \n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">"    *result = *val1 / *val2;\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">"}\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">" \n"</span>
-<a name="l00199"></a>00199 ; <span class="comment">//scalar_align1_divide</span>
-<a name="l00200"></a>00200 
-<a name="l00201"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">00201</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">scalar_align1_cpu_div</a> = 
-<a name="l00202"></a>00202 <span class="stringliteral">" \n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"__kernel void cpu_div(\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">"          __global const float * val1,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"          float val2, \n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"{ \n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"    *result = *val1 / val2;\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"}\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" \n"</span>
-<a name="l00212"></a>00212 ; <span class="comment">//scalar_align1_cpu_div</span>
-<a name="l00213"></a>00213 
-<a name="l00214"></a>00214   }  <span class="comment">//namespace kernels</span>
-<a name="l00215"></a>00215  }  <span class="comment">//namespace linalg</span>
-<a name="l00216"></a>00216 }  <span class="comment">//namespace viennacl</span>
-<a name="l00217"></a>00217 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1col__iteration.html b/doc/doxygen/html/structviennacl_1_1col__iteration.html
deleted file mode 100644
index c37e574..0000000
--- a/doc/doxygen/html/structviennacl_1_1col__iteration.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: col_iteration Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>col_iteration Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::col_iteration" -->
-<p>A tag indicating iteration along increasing columns index of a matrix.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag indicating iteration along increasing columns index of a matrix. </p>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1column__major.html b/doc/doxygen/html/structviennacl_1_1column__major.html
deleted file mode 100644
index dc1d792..0000000
--- a/doc/doxygen/html/structviennacl_1_1column__major.html
+++ /dev/null
@@ -1,164 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: column_major Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1column__major.html">column_major</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>column_major Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::column_major" -->
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1column__major.html#abf70953c0d567f696a5dc4d3a75d9881">mem_index</a> (unsigned int i, unsigned int j, unsigned int num_rows, unsigned int num_cols)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the memory offset for entry (i,j) of a dense matrix.  <a href="#abf70953c0d567f696a5dc4d3a75d9881"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1column__major.html#a285614b7315f207587dd60ebcc1e56e5">internal_size1</a> (unsigned int rows, unsigned int alignment)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1column__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">internal_size2</a> (unsigned int cols, unsigned int alignment)</td></tr>
-</table>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a285614b7315f207587dd60ebcc1e56e5"></a><!-- doxytag: member="viennacl::column_major::internal_size1" ref="a285614b7315f207587dd60ebcc1e56e5" args="(unsigned int rows, unsigned int alignment)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static unsigned int internal_size1 </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>rows</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>alignment</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af807a6cf25c4bd0b3f62e17e2b90f2c1"></a><!-- doxytag: member="viennacl::column_major::internal_size2" ref="af807a6cf25c4bd0b3f62e17e2b90f2c1" args="(unsigned int cols, unsigned int alignment)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static unsigned int internal_size2 </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>cols</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>alignment</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abf70953c0d567f696a5dc4d3a75d9881"></a><!-- doxytag: member="viennacl::column_major::mem_index" ref="abf70953c0d567f696a5dc4d3a75d9881" args="(unsigned int i, unsigned int j, unsigned int num_rows, unsigned int num_cols)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static unsigned int mem_index </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>j</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>num_rows</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>num_cols</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the memory offset for entry (i,j) of a dense matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>row index </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>j</em> </td><td>column index </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>num_rows</em> </td><td>number of entries per row (including alignment) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>num_cols</em> </td><td>number of entries per column (including alignment) </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type.html b/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type.html
deleted file mode 100644
index 4bf296e..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: first_letter_of_type< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html">first_letter_of_type< T ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>first_letter_of_type< T > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::first_letter_of_type" -->
-<p>Helper meta class that returns the first letter of a particular type (float or double).  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static char </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html#aa44c884075e7f0158bc2c09528227af0">get</a> ()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br/>
- struct viennacl::io::first_letter_of_type< T ></h3>
-
-<p>Helper meta class that returns the first letter of a particular type (float or double). </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aa44c884075e7f0158bc2c09528227af0"></a><!-- doxytag: member="viennacl::io::first_letter_of_type::get" ref="aa44c884075e7f0158bc2c09528227af0" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static char get </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html
deleted file mode 100644
index 36017a7..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: first_letter_of_type< double > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">first_letter_of_type< double ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>first_letter_of_type< double > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::first_letter_of_type< double >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static char </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html#aa44c884075e7f0158bc2c09528227af0">get</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::io::first_letter_of_type< double ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aa44c884075e7f0158bc2c09528227af0"></a><!-- doxytag: member="viennacl::io::first_letter_of_type< double >::get" ref="aa44c884075e7f0158bc2c09528227af0" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static char get </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html
deleted file mode 100644
index c6bdc2b..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: first_letter_of_type< float > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">first_letter_of_type< float ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>first_letter_of_type< float > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::first_letter_of_type< float >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static char </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html#aa44c884075e7f0158bc2c09528227af0">get</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::io::first_letter_of_type< float ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aa44c884075e7f0158bc2c09528227af0"></a><!-- doxytag: member="viennacl::io::first_letter_of_type< float >::get" ref="aa44c884075e7f0158bc2c09528227af0" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static char get </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1parameter__database.html b/doc/doxygen/html/structviennacl_1_1io_1_1parameter__database.html
deleted file mode 100644
index 66ba099..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1parameter__database.html
+++ /dev/null
@@ -1,425 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: parameter_database Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<h1>parameter_database Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::parameter_database" -->
-<p>A XML parameter database using PugiXML. Allows to add tests for different devices and the like.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab4a2fcf734630c9363badbfd4205053a">parameter_database</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a94640ee3f014f43e802e3bb26e40bc19">add_device</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ad8c7260fd6a9b708e5da662b295206b8">add_test</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ad95fb4cdb80c4e90c51a031b77302711">add_kernel</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a36e505990b93973addc58a7ea20b2c0d">add_parameter</a> ()</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ValueT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">add_data_node</a> (std::string tagstr, ValueT data)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a6704481b4c6d8ee327a1250dadc3ea2a">add_data_node</a> (std::string tagstr, std::string data)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a8e1b7829ae19153197f38719ce73fb67">load</a> (std::string filename)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#afe9b5c984fb20d9be09fb29c01afb21d">dump</a> (std::string filename)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#afd80b88d872b6d3dec066c52f2ccc5de">dump</a> (std::ostream &stream=std::cout)</td></tr>
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_document </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_node </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">root</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_node </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_node </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_node </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_node </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_node </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">devices_open</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">tests_open</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A XML parameter database using PugiXML. Allows to add tests for different devices and the like. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ab4a2fcf734630c9363badbfd4205053a"></a><!-- doxytag: member="viennacl::io::parameter_database::parameter_database" ref="ab4a2fcf734630c9363badbfd4205053a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a> </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ab298617c087c245561aa3911f1a04989"></a><!-- doxytag: member="viennacl::io::parameter_database::add_data_node" ref="ab298617c087c245561aa3911f1a04989" args="(std::string tagstr, ValueT data)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void add_data_node </td>
-          <td>(</td>
-          <td class="paramtype">std::string </td>
-          <td class="paramname"> <em>tagstr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ValueT </td>
-          <td class="paramname"> <em>data</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6704481b4c6d8ee327a1250dadc3ea2a"></a><!-- doxytag: member="viennacl::io::parameter_database::add_data_node" ref="a6704481b4c6d8ee327a1250dadc3ea2a" args="(std::string tagstr, std::string data)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void add_data_node </td>
-          <td>(</td>
-          <td class="paramtype">std::string </td>
-          <td class="paramname"> <em>tagstr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">std::string </td>
-          <td class="paramname"> <em>data</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a94640ee3f014f43e802e3bb26e40bc19"></a><!-- doxytag: member="viennacl::io::parameter_database::add_device" ref="a94640ee3f014f43e802e3bb26e40bc19" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void add_device </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad95fb4cdb80c4e90c51a031b77302711"></a><!-- doxytag: member="viennacl::io::parameter_database::add_kernel" ref="ad95fb4cdb80c4e90c51a031b77302711" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void add_kernel </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a36e505990b93973addc58a7ea20b2c0d"></a><!-- doxytag: member="viennacl::io::parameter_database::add_parameter" ref="a36e505990b93973addc58a7ea20b2c0d" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void add_parameter </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad8c7260fd6a9b708e5da662b295206b8"></a><!-- doxytag: member="viennacl::io::parameter_database::add_test" ref="ad8c7260fd6a9b708e5da662b295206b8" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void add_test </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afe9b5c984fb20d9be09fb29c01afb21d"></a><!-- doxytag: member="viennacl::io::parameter_database::dump" ref="afe9b5c984fb20d9be09fb29c01afb21d" args="(std::string filename)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void dump </td>
-          <td>(</td>
-          <td class="paramtype">std::string </td>
-          <td class="paramname"> <em>filename</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afd80b88d872b6d3dec066c52f2ccc5de"></a><!-- doxytag: member="viennacl::io::parameter_database::dump" ref="afd80b88d872b6d3dec066c52f2ccc5de" args="(std::ostream &stream=std::cout)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void dump </td>
-          <td>(</td>
-          <td class="paramtype">std::ostream & </td>
-          <td class="paramname"> <em>stream</em> = <code>std::cout</code></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8e1b7829ae19153197f38719ce73fb67"></a><!-- doxytag: member="viennacl::io::parameter_database::load" ref="a8e1b7829ae19153197f38719ce73fb67" args="(std::string filename)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void load </td>
-          <td>(</td>
-          <td class="paramtype">std::string </td>
-          <td class="paramname"> <em>filename</em></td>
-          <td> ) </td>
-          <td><code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="acd3f31f4a5aaba12eebad965d6ce75d9"></a><!-- doxytag: member="viennacl::io::parameter_database::devices" ref="acd3f31f4a5aaba12eebad965d6ce75d9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">pugi::xml_node <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5a2e3cc6c46af9e1eb2473ba5c05b001"></a><!-- doxytag: member="viennacl::io::parameter_database::devices_open" ref="a5a2e3cc6c46af9e1eb2473ba5c05b001" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">devices_open</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="addf5f92d6f325c77e4bb1750c8397c20"></a><!-- doxytag: member="viennacl::io::parameter_database::doc" ref="addf5f92d6f325c77e4bb1750c8397c20" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">pugi::xml_document <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa554c2c7a6130d370fca7ea0f5b823e9"></a><!-- doxytag: member="viennacl::io::parameter_database::kernels" ref="aa554c2c7a6130d370fca7ea0f5b823e9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">pugi::xml_node <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac7fc3c25e70d9d19f649c5d92fb5eee4"></a><!-- doxytag: member="viennacl::io::parameter_database::kernels_open" ref="ac7fc3c25e70d9d19f649c5d92fb5eee4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2fd4b22200fdf58426eb7a194733a395"></a><!-- doxytag: member="viennacl::io::parameter_database::last" ref="a2fd4b22200fdf58426eb7a194733a395" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">pugi::xml_node <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab21bd7aeadc22e8f46c3e7b683e90c95"></a><!-- doxytag: member="viennacl::io::parameter_database::parameters" ref="ab21bd7aeadc22e8f46c3e7b683e90c95" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">pugi::xml_node <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2696ceb01771609859e796101433b1b8"></a><!-- doxytag: member="viennacl::io::parameter_database::parameters_open" ref="a2696ceb01771609859e796101433b1b8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ace6133f70085dd8835a5ad866251b437"></a><!-- doxytag: member="viennacl::io::parameter_database::root" ref="ace6133f70085dd8835a5ad866251b437" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">pugi::xml_node <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">root</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac650b8c949de44f0b33f978316a78ae7"></a><!-- doxytag: member="viennacl::io::parameter_database::tests" ref="ac650b8c949de44f0b33f978316a78ae7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">pugi::xml_node <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa27b43e24c4d69392cde0a29b9f71f9e"></a><!-- doxytag: member="viennacl::io::parameter_database::tests_open" ref="aa27b43e24c4d69392cde0a29b9f71f9e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">tests_open</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype.html b/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype.html
deleted file mode 100644
index dee2978..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: program_for_vcltype< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype< T ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>program_for_vcltype< T > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::program_for_vcltype" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<typename T><br/>
- struct viennacl::io::program_for_vcltype< T ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::program_for_vcltype::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string get </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html
deleted file mode 100644
index a3aed36..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<typename T, unsigned int ALIGNMENT><br/>
- struct viennacl::io::program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > >::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string get </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html b/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html
deleted file mode 100644
index 011a664..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<typename T, unsigned int ALIGNMENT><br/>
- struct viennacl::io::program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > >::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string get </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html
deleted file mode 100644
index 9b39407..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<typename T, unsigned int ALIGNMENT><br/>
- struct viennacl::io::program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > >::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string get </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html
deleted file mode 100644
index 6652674..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: program_for_vcltype< viennacl::vector< T, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>program_for_vcltype< viennacl::vector< T, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::program_for_vcltype< viennacl::vector< T, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<typename T, unsigned int ALIGNMENT><br/>
- struct viennacl::io::program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::program_for_vcltype< viennacl::vector< T, ALIGNMENT > >::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string get </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1to__string.html b/doc/doxygen/html/structviennacl_1_1io_1_1to__string.html
deleted file mode 100644
index 05df7ef..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1to__string.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: to_string< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="structviennacl_1_1io_1_1to__string.html">to_string< T ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>to_string< T > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::to_string" -->
-<p>Helper meta-class that converts a type to a string.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br/>
- struct viennacl::io::to_string< T ></h3>
-
-<p>Helper meta-class that converts a type to a string. </p>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1to__string_3_01double_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1to__string_3_01double_01_4.html
deleted file mode 100644
index e4a13ce..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1to__string_3_01double_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: to_string< double > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">to_string< double ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>to_string< double > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::to_string< double >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::io::to_string< double ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::to_string< double >::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string get </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1to__string_3_01float_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1to__string_3_01float_01_4.html
deleted file mode 100644
index 37c7aa1..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1to__string_3_01float_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: to_string< float > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1io.html">io</a>      </li>
-      <li><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">to_string< float ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>to_string< float > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::to_string< float >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::io::to_string< float ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::to_string< float >::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string get </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__eigen.html b/doc/doxygen/html/structviennacl_1_1is__eigen.html
deleted file mode 100644
index 06100c9..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__eigen.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_eigen< Tag > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1is__eigen.html">is_eigen< Tag ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>is_eigen< Tag > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_eigen" -->
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a>.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__eigen.html#a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9">value</a> =  false
- }</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Tag><br/>
- struct viennacl::is_eigen< Tag ></h3>
-
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a>. </p>
-<p>This is an internal function only, there is no need for a library user of ViennaCL to care about it any further </p>
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="a99fb83031ce9923c84392b4e92f956b5"></a><!-- doxytag: member="viennacl::is_eigen::@2" ref="a99fb83031ce9923c84392b4e92f956b5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">anonymous enum</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html b/doc/doxygen/html/structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html
deleted file mode 100644
index 747afdd..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_eigen< viennacl::tag_eigen > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">is_eigen< viennacl::tag_eigen ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>is_eigen< viennacl::tag_eigen > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_eigen< viennacl::tag_eigen >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html#abc6126af1d45847bc59afa0aa3216b04a97de9ab6885342a574053b8f64a563a9">value</a> =  true
- }</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::is_eigen< viennacl::tag_eigen ></h3>
-
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="abc6126af1d45847bc59afa0aa3216b04"></a><!-- doxytag: member="viennacl::is_eigen< viennacl::tag_eigen >::@3" ref="abc6126af1d45847bc59afa0aa3216b04" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">anonymous enum</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="abc6126af1d45847bc59afa0aa3216b04a97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="abc6126af1d45847bc59afa0aa3216b04a97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__mtl4.html b/doc/doxygen/html/structviennacl_1_1is__mtl4.html
deleted file mode 100644
index 95f808f..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__mtl4.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_mtl4< Tag > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1is__mtl4.html">is_mtl4< Tag ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>is_mtl4< Tag > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_mtl4" -->
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a>.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__mtl4.html#a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9">value</a> =  false
- }</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Tag><br/>
- struct viennacl::is_mtl4< Tag ></h3>
-
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a>. </p>
-<p>This is an internal function only, there is no need for a library user of ViennaCL to care about it any further </p>
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="a06fc87d81c62e9abb8790b6e5713c55b"></a><!-- doxytag: member="viennacl::is_mtl4::@0" ref="a06fc87d81c62e9abb8790b6e5713c55b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">anonymous enum</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html b/doc/doxygen/html/structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html
deleted file mode 100644
index 9f53031..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_mtl4< viennacl::tag_mtl4 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">is_mtl4< viennacl::tag_mtl4 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>is_mtl4< viennacl::tag_mtl4 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_mtl4< viennacl::tag_mtl4 >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html#adf764cbdea00d65edcd07bb9953ad2b7a97de9ab6885342a574053b8f64a563a9">value</a> =  true
- }</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::is_mtl4< viennacl::tag_mtl4 ></h3>
-
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="adf764cbdea00d65edcd07bb9953ad2b7"></a><!-- doxytag: member="viennacl::is_mtl4< viennacl::tag_mtl4 >::@1" ref="adf764cbdea00d65edcd07bb9953ad2b7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">anonymous enum</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="adf764cbdea00d65edcd07bb9953ad2b7a97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="adf764cbdea00d65edcd07bb9953ad2b7a97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__stl.html b/doc/doxygen/html/structviennacl_1_1is__stl.html
deleted file mode 100644
index 54e8006..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__stl.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_stl< Tag > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1is__stl.html">is_stl< Tag ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>is_stl< Tag > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_stl" -->
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__stl.html#a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9">value</a> =  false
- }</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Tag><br/>
- struct viennacl::is_stl< Tag ></h3>
-
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>. </p>
-<p>This is an internal function only, there is no need for a library user of ViennaCL to care about it any further </p>
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="a726ca809ffd3d67ab4b8476646f26635"></a><!-- doxytag: member="viennacl::is_stl::@6" ref="a726ca809ffd3d67ab4b8476646f26635" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">anonymous enum</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html b/doc/doxygen/html/structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html
deleted file mode 100644
index 976cba8..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_stl< viennacl::tag_stl > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">is_stl< viennacl::tag_stl ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>is_stl< viennacl::tag_stl > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_stl< viennacl::tag_stl >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html#a0411cd49bb5b71852cecd93bcbf0ca2da97de9ab6885342a574053b8f64a563a9">value</a> =  true
- }</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::is_stl< viennacl::tag_stl ></h3>
-
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="a0411cd49bb5b71852cecd93bcbf0ca2d"></a><!-- doxytag: member="viennacl::is_stl< viennacl::tag_stl >::@7" ref="a0411cd49bb5b71852cecd93bcbf0ca2d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">anonymous enum</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a0411cd49bb5b71852cecd93bcbf0ca2da97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="a0411cd49bb5b71852cecd93bcbf0ca2da97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__ublas.html b/doc/doxygen/html/structviennacl_1_1is__ublas.html
deleted file mode 100644
index e7841bf..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__ublas.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_ublas< Tag > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1is__ublas.html">is_ublas< Tag ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>is_ublas< Tag > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_ublas" -->
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__ublas.html#adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9">value</a> =  false
- }</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Tag><br/>
- struct viennacl::is_ublas< Tag ></h3>
-
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>. </p>
-<p>This is an internal function only, there is no need for a library user of ViennaCL to care about it any further </p>
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="adc29c2ff13d900c2f185ee95427fb06c"></a><!-- doxytag: member="viennacl::is_ublas::@4" ref="adc29c2ff13d900c2f185ee95427fb06c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">anonymous enum</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html b/doc/doxygen/html/structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html
deleted file mode 100644
index f8ab86a..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_ublas< viennacl::tag_ublas > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">is_ublas< viennacl::tag_ublas ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>is_ublas< viennacl::tag_ublas > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_ublas< viennacl::tag_ublas >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html#a61dadd085c1777f559549e05962b2c9ea97de9ab6885342a574053b8f64a563a9">value</a> =  true
- }</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::is_ublas< viennacl::tag_ublas ></h3>
-
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="a61dadd085c1777f559549e05962b2c9e"></a><!-- doxytag: member="viennacl::is_ublas< viennacl::tag_ublas >::@5" ref="a61dadd085c1777f559549e05962b2c9e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">anonymous enum</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a61dadd085c1777f559549e05962b2c9ea97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="a61dadd085c1777f559549e05962b2c9ea97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__viennacl.html b/doc/doxygen/html/structviennacl_1_1is__viennacl.html
deleted file mode 100644
index 77f9451..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__viennacl.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_viennacl< Tag > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1is__viennacl.html">is_viennacl< Tag ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>is_viennacl< Tag > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_viennacl" -->
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a>.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__viennacl.html#abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9">value</a> =  false
- }</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Tag><br/>
- struct viennacl::is_viennacl< Tag ></h3>
-
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a>. </p>
-<p>This is an internal function only, there is no need for a library user of ViennaCL to care about it any further </p>
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="abed82baf7f470b522273a3e37c24c600"></a><!-- doxytag: member="viennacl::is_viennacl::@8" ref="abed82baf7f470b522273a3e37c24c600" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">anonymous enum</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html b/doc/doxygen/html/structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html
deleted file mode 100644
index a127273..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_viennacl< viennacl::tag_viennacl > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">is_viennacl< viennacl::tag_viennacl ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>is_viennacl< viennacl::tag_viennacl > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_viennacl< viennacl::tag_viennacl >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html#ab04a0655cd1e3bcac5e8f48c18df1a57a97de9ab6885342a574053b8f64a563a9">value</a> =  true
- }</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::is_viennacl< viennacl::tag_viennacl ></h3>
-
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="ab04a0655cd1e3bcac5e8f48c18df1a57"></a><!-- doxytag: member="viennacl::is_viennacl< viennacl::tag_viennacl >::@9" ref="ab04a0655cd1e3bcac5e8f48c18df1a57" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">anonymous enum</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="ab04a0655cd1e3bcac5e8f48c18df1a57a97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="ab04a0655cd1e3bcac5e8f48c18df1a57a97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html
deleted file mode 100644
index de10500..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">compressed_matrix< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>compressed_matrix< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::compressed_matrix< double, 1 >" -->
-<p><code>#include <<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::compressed_matrix< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html
deleted file mode 100644
index b2aa675..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< double, 4 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">compressed_matrix< double, 4 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>compressed_matrix< double, 4 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::compressed_matrix< double, 4 >" -->
-<p><code>#include <<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::compressed_matrix< double, 4 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< double, 4 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< double, 4 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html
deleted file mode 100644
index 1d678d2..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< double, 8 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">compressed_matrix< double, 8 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>compressed_matrix< double, 8 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::compressed_matrix< double, 8 >" -->
-<p><code>#include <<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::compressed_matrix< double, 8 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< double, 8 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< double, 8 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html
deleted file mode 100644
index 1c0cb4c..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">compressed_matrix< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>compressed_matrix< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::compressed_matrix< float, 1 >" -->
-<p><code>#include <<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::compressed_matrix< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html
deleted file mode 100644
index 558ac7c..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< float, 4 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">compressed_matrix< float, 4 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>compressed_matrix< float, 4 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::compressed_matrix< float, 4 >" -->
-<p><code>#include <<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::compressed_matrix< float, 4 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< float, 4 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< float, 4 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html
deleted file mode 100644
index be88be0..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< float, 8 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">compressed_matrix< float, 8 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>compressed_matrix< float, 8 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::compressed_matrix< float, 8 >" -->
-<p><code>#include <<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::compressed_matrix< float, 8 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< float, 8 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< float, 8 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html
deleted file mode 100644
index 5288c41..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: coordinate_matrix< double, 128 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">coordinate_matrix< double, 128 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>coordinate_matrix< double, 128 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::coordinate_matrix< double, 128 >" -->
-<p><code>#include <<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::coordinate_matrix< double, 128 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< double, 128 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< double, 128 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html
deleted file mode 100644
index 69aa883..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: coordinate_matrix< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">coordinate_matrix< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>coordinate_matrix< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::coordinate_matrix< double, 1 >" -->
-<p><code>#include <<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::coordinate_matrix< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html
deleted file mode 100644
index 1406541..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: coordinate_matrix< float, 128 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">coordinate_matrix< float, 128 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>coordinate_matrix< float, 128 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::coordinate_matrix< float, 128 >" -->
-<p><code>#include <<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::coordinate_matrix< float, 128 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< float, 128 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< float, 128 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html
deleted file mode 100644
index 4b5c6e4..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: coordinate_matrix< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">coordinate_matrix< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>coordinate_matrix< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::coordinate_matrix< float, 1 >" -->
-<p><code>#include <<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::coordinate_matrix< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html
deleted file mode 100644
index 3793de7..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_col< double, 16 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">matrix_col< double, 16 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_col< double, 16 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_col< double, 16 >" -->
-<p><code>#include <<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_col< double, 16 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< double, 16 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< double, 16 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html
deleted file mode 100644
index 96a4cdb..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">matrix_col< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_col< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html
deleted file mode 100644
index f66b724..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_col< float, 16 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">matrix_col< float, 16 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_col< float, 16 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_col< float, 16 >" -->
-<p><code>#include <<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_col< float, 16 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< float, 16 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< float, 16 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html
deleted file mode 100644
index 7ce44ac..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">matrix_col< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_col< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html
deleted file mode 100644
index c23d4ba..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_col_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">matrix_prod_col_col_col< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_col_col_col< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_col_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__col__col__kernels_8h_source.html">matrix_prod_col_col_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_col_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__col__kernels_8h_source.html">matrix_prod_col_col_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html
deleted file mode 100644
index 2dc1462..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_col_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">matrix_prod_col_col_col< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_col_col_col< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_col_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__col__col__kernels_8h_source.html">matrix_prod_col_col_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_col_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__col__kernels_8h_source.html">matrix_prod_col_col_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html
deleted file mode 100644
index 5763767..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_col_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">matrix_prod_col_col_row< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_col_col_row< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_col_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__col__row__kernels_8h_source.html">matrix_prod_col_col_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_col_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__row__kernels_8h_source.html">matrix_prod_col_col_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html
deleted file mode 100644
index 6311af0..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_col_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">matrix_prod_col_col_row< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_col_col_row< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_col_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__col__row__kernels_8h_source.html">matrix_prod_col_col_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_col_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__row__kernels_8h_source.html">matrix_prod_col_col_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html
deleted file mode 100644
index b898a40..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_row_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">matrix_prod_col_row_col< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_col_row_col< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_row_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__row__col__kernels_8h_source.html">matrix_prod_col_row_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_row_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__col__kernels_8h_source.html">matrix_prod_col_row_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html
deleted file mode 100644
index fcb5193..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_row_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">matrix_prod_col_row_col< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_col_row_col< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_row_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__row__col__kernels_8h_source.html">matrix_prod_col_row_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_row_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__col__kernels_8h_source.html">matrix_prod_col_row_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html
deleted file mode 100644
index 713c344..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_row_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">matrix_prod_col_row_row< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_col_row_row< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_row_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__row__row__kernels_8h_source.html">matrix_prod_col_row_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_row_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__row__kernels_8h_source.html">matrix_prod_col_row_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html
deleted file mode 100644
index dffd72a..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_row_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">matrix_prod_col_row_row< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_col_row_row< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_row_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__row__row__kernels_8h_source.html">matrix_prod_col_row_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_row_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__row__kernels_8h_source.html">matrix_prod_col_row_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html
deleted file mode 100644
index 6cafcd4..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_col_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">matrix_prod_row_col_col< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_row_col_col< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_col_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__col__col__kernels_8h_source.html">matrix_prod_row_col_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_col_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__col__kernels_8h_source.html">matrix_prod_row_col_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html
deleted file mode 100644
index e415de6..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_col_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">matrix_prod_row_col_col< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_row_col_col< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_col_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__col__col__kernels_8h_source.html">matrix_prod_row_col_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_col_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__col__kernels_8h_source.html">matrix_prod_row_col_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html
deleted file mode 100644
index 90c3a9c..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_col_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">matrix_prod_row_col_row< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_row_col_row< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_col_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__col__row__kernels_8h_source.html">matrix_prod_row_col_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_col_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__row__kernels_8h_source.html">matrix_prod_row_col_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html
deleted file mode 100644
index 1324d30..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_col_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">matrix_prod_row_col_row< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_row_col_row< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_col_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__col__row__kernels_8h_source.html">matrix_prod_row_col_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_col_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__row__kernels_8h_source.html">matrix_prod_row_col_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html
deleted file mode 100644
index 2e46b2b..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_row_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">matrix_prod_row_row_col< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_row_row_col< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_row_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__row__col__kernels_8h_source.html">matrix_prod_row_row_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_row_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__col__kernels_8h_source.html">matrix_prod_row_row_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html
deleted file mode 100644
index 54f90d4..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_row_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">matrix_prod_row_row_col< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_row_row_col< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_row_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__row__col__kernels_8h_source.html">matrix_prod_row_row_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_row_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__col__kernels_8h_source.html">matrix_prod_row_row_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html
deleted file mode 100644
index 49e739f..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_row_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">matrix_prod_row_row_row< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_row_row_row< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_row_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__row__row__kernels_8h_source.html">matrix_prod_row_row_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_row_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__row__kernels_8h_source.html">matrix_prod_row_row_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html
deleted file mode 100644
index cca4572..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_row_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">matrix_prod_row_row_row< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_prod_row_row_row< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_row_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__row__row__kernels_8h_source.html">matrix_prod_row_row_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_row_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__row__kernels_8h_source.html">matrix_prod_row_row_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html
deleted file mode 100644
index bc7b7df..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_row< double, 16 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">matrix_row< double, 16 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_row< double, 16 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_row< double, 16 >" -->
-<p><code>#include <<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_row< double, 16 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< double, 16 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< double, 16 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html
deleted file mode 100644
index c7c58e2..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">matrix_row< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_row< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html
deleted file mode 100644
index e857d10..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_row< float, 16 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">matrix_row< float, 16 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_row< float, 16 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_row< float, 16 >" -->
-<p><code>#include <<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_row< float, 16 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< float, 16 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< float, 16 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html
deleted file mode 100644
index fd086a3..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">matrix_row< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_row< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html
deleted file mode 100644
index a01ac12..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_col_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">matrix_solve_col_col< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_solve_col_col< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_col_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__col__col__kernels_8h_source.html">matrix_solve_col_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_col_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__col__kernels_8h_source.html">matrix_solve_col_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html
deleted file mode 100644
index a466c2f..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_col_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">matrix_solve_col_col< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_solve_col_col< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_col_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__col__col__kernels_8h_source.html">matrix_solve_col_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_col_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__col__kernels_8h_source.html">matrix_solve_col_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html
deleted file mode 100644
index 9132f77..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_col_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">matrix_solve_col_row< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_solve_col_row< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_col_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__col__row__kernels_8h_source.html">matrix_solve_col_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_col_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__row__kernels_8h_source.html">matrix_solve_col_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html
deleted file mode 100644
index e3018e8..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_col_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">matrix_solve_col_row< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_solve_col_row< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_col_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__col__row__kernels_8h_source.html">matrix_solve_col_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_col_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__row__kernels_8h_source.html">matrix_solve_col_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html
deleted file mode 100644
index 06389b6..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_row_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">matrix_solve_row_col< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_solve_row_col< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_row_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__row__col__kernels_8h_source.html">matrix_solve_row_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_row_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__col__kernels_8h_source.html">matrix_solve_row_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html
deleted file mode 100644
index 5df8573..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_row_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">matrix_solve_row_col< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_solve_row_col< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_row_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__row__col__kernels_8h_source.html">matrix_solve_row_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_row_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__col__kernels_8h_source.html">matrix_solve_row_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html
deleted file mode 100644
index fe53ac2..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_row_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">matrix_solve_row_row< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_solve_row_row< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_row_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__row__row__kernels_8h_source.html">matrix_solve_row_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_row_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__row__kernels_8h_source.html">matrix_solve_row_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html
deleted file mode 100644
index 599aa08..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_row_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">matrix_solve_row_row< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>matrix_solve_row_row< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_row_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__row__row__kernels_8h_source.html">matrix_solve_row_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_row_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__row__kernels_8h_source.html">matrix_solve_row_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html
deleted file mode 100644
index 1e11461..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: scalar< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">scalar< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>scalar< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::scalar< double, 1 >" -->
-<p><code>#include <<a class="el" href="scalar__kernels_8h_source.html">scalar_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::scalar< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="scalar__kernels_8h_source.html">scalar_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html
deleted file mode 100644
index b4282e2..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: scalar< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">scalar< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>scalar< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::scalar< float, 1 >" -->
-<p><code>#include <<a class="el" href="scalar__kernels_8h_source.html">scalar_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::scalar< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="scalar__kernels_8h_source.html">scalar_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html
deleted file mode 100644
index ae5312b..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< double, 16 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">vector< double, 16 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>vector< double, 16 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::vector< double, 16 >" -->
-<p><code>#include <<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::vector< double, 16 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< double, 16 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< double, 16 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html
deleted file mode 100644
index 9978e69..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">vector< double, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>vector< double, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::vector< double, 1 >" -->
-<p><code>#include <<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::vector< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html
deleted file mode 100644
index f0420ce..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< double, 4 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">vector< double, 4 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>vector< double, 4 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::vector< double, 4 >" -->
-<p><code>#include <<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::vector< double, 4 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< double, 4 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< double, 4 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html
deleted file mode 100644
index 45165e2..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< float, 16 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">vector< float, 16 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>vector< float, 16 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::vector< float, 16 >" -->
-<p><code>#include <<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::vector< float, 16 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< float, 16 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< float, 16 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html
deleted file mode 100644
index c531d53..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">vector< float, 1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>vector< float, 1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::vector< float, 1 >" -->
-<p><code>#include <<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::vector< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html
deleted file mode 100644
index 302d8a7..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< float, 4 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">vector< float, 4 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>vector< float, 4 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::vector< float, 4 >" -->
-<p><code>#include <<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::vector< float, 4 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< float, 4 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void init </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< float, 4 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static std::string program_name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1lower__tag.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1lower__tag.html
deleted file mode 100644
index 5307ec4..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1lower__tag.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: lower_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html">lower_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>lower_tag Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::lower_tag" -->
-<p>A tag class representing a lower triangular matrix.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html#a645e1cadcf8551f0f14160001402854a">name</a> ()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag class representing a lower triangular matrix. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a645e1cadcf8551f0f14160001402854a"></a><!-- doxytag: member="viennacl::linalg::lower_tag::name" ref="a645e1cadcf8551f0f14160001402854a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static const char* const name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1unit__lower__tag.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1unit__lower__tag.html
deleted file mode 100644
index fa86fc1..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1unit__lower__tag.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: unit_lower_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">unit_lower_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>unit_lower_tag Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::unit_lower_tag" -->
-<p>A tag class representing a lower triangular matrix with unit diagonal.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html#a645e1cadcf8551f0f14160001402854a">name</a> ()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag class representing a lower triangular matrix with unit diagonal. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a645e1cadcf8551f0f14160001402854a"></a><!-- doxytag: member="viennacl::linalg::unit_lower_tag::name" ref="a645e1cadcf8551f0f14160001402854a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static const char* const name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1unit__upper__tag.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1unit__upper__tag.html
deleted file mode 100644
index 3fc771a..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1unit__upper__tag.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: unit_upper_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">unit_upper_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>unit_upper_tag Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::unit_upper_tag" -->
-<p>A tag class representing an upper triangular matrix with unit diagonal.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html#a645e1cadcf8551f0f14160001402854a">name</a> ()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag class representing an upper triangular matrix with unit diagonal. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a645e1cadcf8551f0f14160001402854a"></a><!-- doxytag: member="viennacl::linalg::unit_upper_tag::name" ref="a645e1cadcf8551f0f14160001402854a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static const char* const name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1upper__tag.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1upper__tag.html
deleted file mode 100644
index b4c0d6e..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1upper__tag.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: upper_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a>      </li>
-      <li><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">upper_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>upper_tag Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::upper_tag" -->
-<p>A tag class representing an upper triangular matrix.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html#a645e1cadcf8551f0f14160001402854a">name</a> ()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag class representing an upper triangular matrix. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a645e1cadcf8551f0f14160001402854a"></a><!-- doxytag: member="viennacl::linalg::upper_tag::name" ref="a645e1cadcf8551f0f14160001402854a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static const char* const name </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html
deleted file mode 100644
index 3220c60..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: DOUBLE_PRECISION_CHECKER< ScalarType > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">DOUBLE_PRECISION_CHECKER< ScalarType ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>DOUBLE_PRECISION_CHECKER< ScalarType > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::DOUBLE_PRECISION_CHECKER" -->
-<p>Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a <a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> is thrown.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="utils_8hpp_source.html">utils.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#acd62521bdbf7f991a885f126413e6f89">apply</a> ()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename ScalarType><br/>
- struct viennacl::ocl::DOUBLE_PRECISION_CHECKER< ScalarType ></h3>
-
-<p>Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a <a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> is thrown. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="acd62521bdbf7f991a885f126413e6f89"></a><!-- doxytag: member="viennacl::ocl::DOUBLE_PRECISION_CHECKER::apply" ref="acd62521bdbf7f991a885f126413e6f89" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void apply </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="utils_8hpp_source.html">utils.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html
deleted file mode 100644
index 100c479..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: DOUBLE_PRECISION_CHECKER< double > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">DOUBLE_PRECISION_CHECKER< double ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>DOUBLE_PRECISION_CHECKER< double > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::DOUBLE_PRECISION_CHECKER< double >" -->
-<p><code>#include <<a class="el" href="utils_8hpp_source.html">utils.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html#acd62521bdbf7f991a885f126413e6f89">apply</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::ocl::DOUBLE_PRECISION_CHECKER< double ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="acd62521bdbf7f991a885f126413e6f89"></a><!-- doxytag: member="viennacl::ocl::DOUBLE_PRECISION_CHECKER< double >::apply" ref="acd62521bdbf7f991a885f126413e6f89" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void apply </td>
-          <td>(</td>
-          <td class="paramname"></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="utils_8hpp_source.html">utils.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1accelerator__tag.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1accelerator__tag.html
deleted file mode 100644
index 860e5a4..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1accelerator__tag.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: accelerator_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>accelerator_tag Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::accelerator_tag" -->
-<p><code>#include <<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1cpu__tag.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1cpu__tag.html
deleted file mode 100644
index 2657e03..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1cpu__tag.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: cpu_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>cpu_tag Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::cpu_tag" -->
-<p><code>#include <<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1default__tag.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1default__tag.html
deleted file mode 100644
index ccd9253..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1default__tag.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: default_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>default_tag Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::default_tag" -->
-<p><code>#include <<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1error__checker.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1error__checker.html
deleted file mode 100644
index aa44c37..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1error__checker.html
+++ /dev/null
@@ -1,138 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: error_checker< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">error_checker< T ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>error_checker< T > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::error_checker" -->
-<p>An error reporting class. Template argument is used to avoid problems with external linkage.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html#a66cd47430f5f54a019185f6d21bcb334">raise_exception</a> (cl_int err)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Trows exceptions that reflect OpenCL error codes.  <a href="#a66cd47430f5f54a019185f6d21bcb334"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html#af878a7ec14df24a0c55857513cd9555e">checkError</a> (cl_int err, const std::string &file, const std::string &func, int line)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks whether an OpenCL error has occured.  <a href="#af878a7ec14df24a0c55857513cd9555e"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br/>
- struct viennacl::ocl::error_checker< T ></h3>
-
-<p>An error reporting class. Template argument is used to avoid problems with external linkage. </p>
-<p>Do not use this class directly, use the macro CL_ERROR_CHECK instead. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>Useless. Helps to avoid troubles with external linkage of namespace functions. </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="af878a7ec14df24a0c55857513cd9555e"></a><!-- doxytag: member="viennacl::ocl::error_checker::checkError" ref="af878a7ec14df24a0c55857513cd9555e" args="(cl_int err, const std::string &file, const std::string &func, int line)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void checkError </td>
-          <td>(</td>
-          <td class="paramtype">cl_int </td>
-          <td class="paramname"> <em>err</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"> <em>file</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"> <em>func</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>line</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Checks whether an OpenCL error has occured. </p>
-<p>Do not use this function directly, use the macro CL_ERROR_CHECK instead. </p>
-
-</div>
-</div>
-<a class="anchor" id="a66cd47430f5f54a019185f6d21bcb334"></a><!-- doxytag: member="viennacl::ocl::error_checker::raise_exception" ref="a66cd47430f5f54a019185f6d21bcb334" args="(cl_int err)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void raise_exception </td>
-          <td>(</td>
-          <td class="paramtype">cl_int </td>
-          <td class="paramname"> <em>err</em></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Trows exceptions that reflect OpenCL error codes. </p>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1gpu__tag.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1gpu__tag.html
deleted file mode 100644
index 6cd41d3..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1gpu__tag.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: gpu_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>gpu_tag Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::gpu_tag" -->
-<p><code>#include <<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html
deleted file mode 100644
index 3539428..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle_inc_dec_helper< cl_command_queue > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">handle_inc_dec_helper< cl_command_queue ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>handle_inc_dec_helper< cl_command_queue > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle_inc_dec_helper< cl_command_queue >" -->
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#addb17e263480ba044f2c38997192344c">inc</a> (cl_command_queue &something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#abd0ea0583c2413dbfd45c14d33044258">dec</a> (cl_command_queue &something)</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::ocl::handle_inc_dec_helper< cl_command_queue ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="abd0ea0583c2413dbfd45c14d33044258"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_command_queue >::dec" ref="abd0ea0583c2413dbfd45c14d33044258" args="(cl_command_queue &something)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void dec </td>
-          <td>(</td>
-          <td class="paramtype">cl_command_queue & </td>
-          <td class="paramname"> <em>something</em></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="addb17e263480ba044f2c38997192344c"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_command_queue >::inc" ref="addb17e263480ba044f2c38997192344c" args="(cl_command_queue &something)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void inc </td>
-          <td>(</td>
-          <td class="paramtype">cl_command_queue & </td>
-          <td class="paramname"> <em>something</em></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html
deleted file mode 100644
index 32a8e43..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle_inc_dec_helper< cl_context > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">handle_inc_dec_helper< cl_context ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>handle_inc_dec_helper< cl_context > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle_inc_dec_helper< cl_context >" -->
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a006046d51819d0443dbf6426c4c89bd2">inc</a> (cl_context &something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a4bae375e232db0bdcd4a202b39c19816">dec</a> (cl_context &something)</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::ocl::handle_inc_dec_helper< cl_context ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a4bae375e232db0bdcd4a202b39c19816"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_context >::dec" ref="a4bae375e232db0bdcd4a202b39c19816" args="(cl_context &something)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void dec </td>
-          <td>(</td>
-          <td class="paramtype">cl_context & </td>
-          <td class="paramname"> <em>something</em></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a006046d51819d0443dbf6426c4c89bd2"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_context >::inc" ref="a006046d51819d0443dbf6426c4c89bd2" args="(cl_context &something)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void inc </td>
-          <td>(</td>
-          <td class="paramtype">cl_context & </td>
-          <td class="paramname"> <em>something</em></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html
deleted file mode 100644
index 23c5b76..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle_inc_dec_helper< cl_kernel > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">handle_inc_dec_helper< cl_kernel ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>handle_inc_dec_helper< cl_kernel > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle_inc_dec_helper< cl_kernel >" -->
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#afb9dc7b00575004c1144b3a990497a87">inc</a> (cl_kernel &something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#a0fc901ecaa7b205e0e051c2f5d43d9f4">dec</a> (cl_kernel &something)</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::ocl::handle_inc_dec_helper< cl_kernel ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a0fc901ecaa7b205e0e051c2f5d43d9f4"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_kernel >::dec" ref="a0fc901ecaa7b205e0e051c2f5d43d9f4" args="(cl_kernel &something)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void dec </td>
-          <td>(</td>
-          <td class="paramtype">cl_kernel & </td>
-          <td class="paramname"> <em>something</em></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afb9dc7b00575004c1144b3a990497a87"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_kernel >::inc" ref="afb9dc7b00575004c1144b3a990497a87" args="(cl_kernel &something)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void inc </td>
-          <td>(</td>
-          <td class="paramtype">cl_kernel & </td>
-          <td class="paramname"> <em>something</em></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html
deleted file mode 100644
index 8050b59..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle_inc_dec_helper< cl_mem > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">handle_inc_dec_helper< cl_mem ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>handle_inc_dec_helper< cl_mem > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle_inc_dec_helper< cl_mem >" -->
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#ae60134f01033d6efe66718eaf8435296">inc</a> (cl_mem &something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#a7e9e140199f7ba174f62477b2fb90366">dec</a> (cl_mem &something)</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::ocl::handle_inc_dec_helper< cl_mem ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a7e9e140199f7ba174f62477b2fb90366"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_mem >::dec" ref="a7e9e140199f7ba174f62477b2fb90366" args="(cl_mem &something)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void dec </td>
-          <td>(</td>
-          <td class="paramtype">cl_mem & </td>
-          <td class="paramname"> <em>something</em></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae60134f01033d6efe66718eaf8435296"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_mem >::inc" ref="ae60134f01033d6efe66718eaf8435296" args="(cl_mem &something)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void inc </td>
-          <td>(</td>
-          <td class="paramtype">cl_mem & </td>
-          <td class="paramname"> <em>something</em></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html
deleted file mode 100644
index 25c17c1..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle_inc_dec_helper< cl_program > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">handle_inc_dec_helper< cl_program ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>handle_inc_dec_helper< cl_program > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle_inc_dec_helper< cl_program >" -->
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#aea5d3b62ea9f881b45651e6a7d842fed">inc</a> (cl_program &something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#a8a5c0f9dc62b768106e52e66b79aa4b9">dec</a> (cl_program &something)</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::ocl::handle_inc_dec_helper< cl_program ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8a5c0f9dc62b768106e52e66b79aa4b9"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_program >::dec" ref="a8a5c0f9dc62b768106e52e66b79aa4b9" args="(cl_program &something)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void dec </td>
-          <td>(</td>
-          <td class="paramtype">cl_program & </td>
-          <td class="paramname"> <em>something</em></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aea5d3b62ea9f881b45651e6a7d842fed"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_program >::inc" ref="aea5d3b62ea9f881b45651e6a7d842fed" args="(cl_program &something)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void inc </td>
-          <td>(</td>
-          <td class="paramtype">cl_program & </td>
-          <td class="paramname"> <em>something</em></td>
-          <td> ) </td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1row__iteration.html b/doc/doxygen/html/structviennacl_1_1row__iteration.html
deleted file mode 100644
index ad39127..0000000
--- a/doc/doxygen/html/structviennacl_1_1row__iteration.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: row_iteration Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>row_iteration Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::row_iteration" -->
-<p>A tag indicating iteration along increasing row index of a matrix.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag indicating iteration along increasing row index of a matrix. </p>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1row__major.html b/doc/doxygen/html/structviennacl_1_1row__major.html
deleted file mode 100644
index ab8d5c6..0000000
--- a/doc/doxygen/html/structviennacl_1_1row__major.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: row_major Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1row__major.html">row_major</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>row_major Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::row_major" -->
-<p>A tag for row-major storage of a dense matrix.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__major.html#abf70953c0d567f696a5dc4d3a75d9881">mem_index</a> (unsigned int i, unsigned int j, unsigned int num_rows, unsigned int num_cols)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the memory offset for entry (i,j) of a dense matrix.  <a href="#abf70953c0d567f696a5dc4d3a75d9881"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__major.html#a285614b7315f207587dd60ebcc1e56e5">internal_size1</a> (unsigned int rows, unsigned int alignment)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">internal_size2</a> (unsigned int cols, unsigned int alignment)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for row-major storage of a dense matrix. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a285614b7315f207587dd60ebcc1e56e5"></a><!-- doxytag: member="viennacl::row_major::internal_size1" ref="a285614b7315f207587dd60ebcc1e56e5" args="(unsigned int rows, unsigned int alignment)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static unsigned int internal_size1 </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>rows</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>alignment</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af807a6cf25c4bd0b3f62e17e2b90f2c1"></a><!-- doxytag: member="viennacl::row_major::internal_size2" ref="af807a6cf25c4bd0b3f62e17e2b90f2c1" args="(unsigned int cols, unsigned int alignment)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static unsigned int internal_size2 </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>cols</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>alignment</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abf70953c0d567f696a5dc4d3a75d9881"></a><!-- doxytag: member="viennacl::row_major::mem_index" ref="abf70953c0d567f696a5dc4d3a75d9881" args="(unsigned int i, unsigned int j, unsigned int num_rows, unsigned int num_cols)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static unsigned int mem_index </td>
-          <td>(</td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>i</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>j</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>num_rows</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int </td>
-          <td class="paramname"> <em>num_cols</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the memory offset for entry (i,j) of a dense matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>row index </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>j</em> </td><td>column index </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>num_rows</em> </td><td>number of entries per row (including alignment) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>num_cols</em> </td><td>number of entries per column (including alignment) </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tag__eigen.html b/doc/doxygen/html/structviennacl_1_1tag__eigen.html
deleted file mode 100644
index 1d0294b..0000000
--- a/doc/doxygen/html/structviennacl_1_1tag__eigen.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_eigen Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>tag_eigen Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tag_eigen" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tag__mtl4.html b/doc/doxygen/html/structviennacl_1_1tag__mtl4.html
deleted file mode 100644
index 70a6956..0000000
--- a/doc/doxygen/html/structviennacl_1_1tag__mtl4.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_mtl4 Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>tag_mtl4 Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tag_mtl4" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tag__none.html b/doc/doxygen/html/structviennacl_1_1tag__none.html
deleted file mode 100644
index f3de6de..0000000
--- a/doc/doxygen/html/structviennacl_1_1tag__none.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_none Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tag__none.html">tag_none</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>tag_none Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tag_none" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tag__stl.html b/doc/doxygen/html/structviennacl_1_1tag__stl.html
deleted file mode 100644
index f14dc9d..0000000
--- a/doc/doxygen/html/structviennacl_1_1tag__stl.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_stl Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tag__stl.html">tag_stl</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>tag_stl Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tag_stl" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tag__ublas.html b/doc/doxygen/html/structviennacl_1_1tag__ublas.html
deleted file mode 100644
index 5b3c361..0000000
--- a/doc/doxygen/html/structviennacl_1_1tag__ublas.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_ublas Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>tag_ublas Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tag_ublas" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tag__viennacl.html b/doc/doxygen/html/structviennacl_1_1tag__viennacl.html
deleted file mode 100644
index e846d3c..0000000
--- a/doc/doxygen/html/structviennacl_1_1tag__viennacl.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_viennacl Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>tag_viennacl Struct Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tag_viennacl" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html
deleted file mode 100644
index 688d2d6..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CHECK_SCALAR_TEMPLATE_ARGUMENT< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>CHECK_SCALAR_TEMPLATE_ARGUMENT< T > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT" -->
-<p>A guard that checks whether the floating point type of GPU types is either float or double.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-T::ERROR_SCALAR_MUST_HAVE_TEMPLATE_ARGUMENT_FLOAT_OR_DOUBLE </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#a465b19472e9fa1cbd9bbd334947c6042">ResultType</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br/>
- struct viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></h3>
-
-<p>A guard that checks whether the floating point type of GPU types is either float or double. </p>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a465b19472e9fa1cbd9bbd334947c6042"></a><!-- doxytag: member="viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT::ResultType" ref="a465b19472e9fa1cbd9bbd334947c6042" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef T::ERROR_SCALAR_MUST_HAVE_TEMPLATE_ARGUMENT_FLOAT_OR_DOUBLE <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#a465b19472e9fa1cbd9bbd334947c6042">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html
deleted file mode 100644
index a5f8ab7..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CHECK_SCALAR_TEMPLATE_ARGUMENT< double > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>CHECK_SCALAR_TEMPLATE_ARGUMENT< double > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< double >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef double </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">ResultType</a></td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9a1247a9213f552c041fd48cbd89042c"></a><!-- doxytag: member="viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< double >::ResultType" ref="a9a1247a9213f552c041fd48cbd89042c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef double <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html
deleted file mode 100644
index 0e30f00..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CHECK_SCALAR_TEMPLATE_ARGUMENT< float > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>CHECK_SCALAR_TEMPLATE_ARGUMENT< float > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< float >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef float </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">ResultType</a></td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="ae663109a95092b45704754292ae4f4c0"></a><!-- doxytag: member="viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< float >::ResultType" ref="ae663109a95092b45704754292ae4f4c0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef float <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html
deleted file mode 100644
index 8baccdb..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CONST_REMOVER< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER< T ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>CONST_REMOVER< T > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CONST_REMOVER" -->
-<p>Removes the const qualifier from a type.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br/>
- struct viennacl::tools::CONST_REMOVER< T ></h3>
-
-<p>Removes the const qualifier from a type. </p>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a13d3ccc8836027e5b399582861553350"></a><!-- doxytag: member="viennacl::tools::CONST_REMOVER::ResultType" ref="a13d3ccc8836027e5b399582861553350" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html
deleted file mode 100644
index b39ef84..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CONST_REMOVER< const T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">CONST_REMOVER< const T ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>CONST_REMOVER< const T > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CONST_REMOVER< const T >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td></tr>
-</table>
-<h3>template<typename T><br/>
- struct viennacl::tools::CONST_REMOVER< const T ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a13d3ccc8836027e5b399582861553350"></a><!-- doxytag: member="viennacl::tools::CONST_REMOVER< const T >::ResultType" ref="a13d3ccc8836027e5b399582861553350" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html
deleted file mode 100644
index 7b260be..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">CPU_SCALAR_TYPE_DEDUCER< T ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< T > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER" -->
-<p>Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< T ></h3>
-
-<p>Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T> </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>Either a CPU scalar type or a GPU scalar type </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html
deleted file mode 100644
index 2488c36..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< double > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">CPU_SCALAR_TYPE_DEDUCER< double ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< double > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< double >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef double </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">ResultType</a></td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< double ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9a1247a9213f552c041fd48cbd89042c"></a><!-- doxytag: member="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< double >::ResultType" ref="a9a1247a9213f552c041fd48cbd89042c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef double <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html
deleted file mode 100644
index aa1dadb..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< float > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">CPU_SCALAR_TYPE_DEDUCER< float ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< float > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< float >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef float </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">ResultType</a></td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< float ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="ae663109a95092b45704754292ae4f4c0"></a><!-- doxytag: member="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< float >::ResultType" ref="ae663109a95092b45704754292ae4f4c0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef float <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html
deleted file mode 100644
index b524ebe..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td></tr>
-</table>
-<h3>template<typename T, typename F, unsigned int A><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a13d3ccc8836027e5b399582861553350"></a><!-- doxytag: member="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > >::ResultType" ref="a13d3ccc8836027e5b399582861553350" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html
deleted file mode 100644
index b4cfde2..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td></tr>
-</table>
-<h3>template<typename T, typename F, unsigned int A><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a13d3ccc8836027e5b399582861553350"></a><!-- doxytag: member="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > >::ResultType" ref="a13d3ccc8836027e5b399582861553350" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html
deleted file mode 100644
index 7e3a3ee..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td></tr>
-</table>
-<h3>template<typename T><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a13d3ccc8836027e5b399582861553350"></a><!-- doxytag: member="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > >::ResultType" ref="a13d3ccc8836027e5b399582861553350" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html
deleted file mode 100644
index a002cc9..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td></tr>
-</table>
-<h3>template<typename T, unsigned int A><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a13d3ccc8836027e5b399582861553350"></a><!-- doxytag: member="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > >::ResultType" ref="a13d3ccc8836027e5b399582861553350" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html
deleted file mode 100644
index ea086e4..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_ITERATOR_INCREMENTER" -->
-<p><code>#include <<a class="el" href="forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html#a020757b8af66b1f9ba27fd6467ccab00">apply</a> (const MATRIXTYPE &mat, unsigned int &row, unsigned int &col)</td></tr>
-</table>
-<h3>template<typename ROWCOL, typename MATRIXTYPE><br/>
- struct viennacl::tools::MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a020757b8af66b1f9ba27fd6467ccab00"></a><!-- doxytag: member="viennacl::tools::MATRIX_ITERATOR_INCREMENTER::apply" ref="a020757b8af66b1f9ba27fd6467ccab00" args="(const MATRIXTYPE &mat, unsigned int &row, unsigned int &col)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void apply </td>
-          <td>(</td>
-          <td class="paramtype">const MATRIXTYPE & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int & </td>
-          <td class="paramname"> <em>row</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int & </td>
-          <td class="paramname"> <em>col</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html
deleted file mode 100644
index fead851..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > >" -->
-<p>Supply suitable increment functions for the iterators:  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#ae352c09bbded2dde5b8e14b174a52d9f">apply</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, unsigned int &row, unsigned int &col)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, typename F, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></h3>
-
-<p>Supply suitable increment functions for the iterators: </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae352c09bbded2dde5b8e14b174a52d9f"></a><!-- doxytag: member="viennacl::tools::MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > >::apply" ref="ae352c09bbded2dde5b8e14b174a52d9f" args="(const viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &mat, unsigned int &row, unsigned int &col)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void apply </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int & </td>
-          <td class="paramname"> <em>row</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int & </td>
-          <td class="paramname"> <em>col</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html
deleted file mode 100644
index 90062ca..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html#ae352c09bbded2dde5b8e14b174a52d9f">apply</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, unsigned int &row, unsigned int &col)</td></tr>
-</table>
-<h3>template<class SCALARTYPE, typename F, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae352c09bbded2dde5b8e14b174a52d9f"></a><!-- doxytag: member="viennacl::tools::MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > >::apply" ref="ae352c09bbded2dde5b8e14b174a52d9f" args="(const viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &mat, unsigned int &row, unsigned int &col)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void apply </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
-          <td class="paramname"> <em>mat</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int & </td>
-          <td class="paramname"> <em>row</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned int & </td>
-          <td class="paramname"> <em>col</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html
deleted file mode 100644
index 0a56e36..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER" -->
-<p>Implementation of a helper meta class for deducing the correct kernels for the supplied matrix.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">matrix_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename MatrixType1><br/>
- struct viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 ></h3>
-
-<p>Implementation of a helper meta class for deducing the correct kernels for the supplied matrix. </p>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">matrix_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html
deleted file mode 100644
index cd6d7b0..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">matrix_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html#a9d7293574efd24702391c77e7e3971d0">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9d7293574efd24702391c77e7e3971d0"></a><!-- doxytag: member="viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a9d7293574efd24702391c77e7e3971d0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html#a9d7293574efd24702391c77e7e3971d0">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">matrix_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html
deleted file mode 100644
index 3f30ab9..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">matrix_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html#a6b4b25d7fd5078c59d141209050779f3">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a6b4b25d7fd5078c59d141209050779f3"></a><!-- doxytag: member="viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a6b4b25d7fd5078c59d141209050779f3" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html#a6b4b25d7fd5078c59d141209050779f3">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">matrix_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html
deleted file mode 100644
index 4f0cc3f..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER" -->
-<p>deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectively  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename MatrixType1, typename MatrixType2, typename MatrixType3><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 ></h3>
-
-<p>deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectively </p>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html
deleted file mode 100644
index f6df8b6..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_col_row_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html#a12f59df85ae233bdb473e7826811972c">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a12f59df85ae233bdb473e7826811972c"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a12f59df85ae233bdb473e7826811972c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_col_row_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html#a12f59df85ae233bdb473e7826811972c">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html
deleted file mode 100644
index b7e962a..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_row_row_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html#a4a11371fee17337eb321c3ff824787c8">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a4a11371fee17337eb321c3ff824787c8"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a4a11371fee17337eb321c3ff824787c8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_row_row_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html#a4a11371fee17337eb321c3ff824787c8">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html
deleted file mode 100644
index 4fb0db1..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_row_col_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html#a318762097ca7212b82ae6ab04cbfa2d7">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a318762097ca7212b82ae6ab04cbfa2d7"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a318762097ca7212b82ae6ab04cbfa2d7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_row_col_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html#a318762097ca7212b82ae6ab04cbfa2d7">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html
deleted file mode 100644
index 534e568..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_col_row_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html#a041d7c18583a2b96a0b43bb0c0c185fe">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a041d7c18583a2b96a0b43bb0c0c185fe"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a041d7c18583a2b96a0b43bb0c0c185fe" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_col_row_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html#a041d7c18583a2b96a0b43bb0c0c185fe">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html
deleted file mode 100644
index b495172..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_col_col_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html#a4a44006b05b679a3af93ea6fa03560b5">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a4a44006b05b679a3af93ea6fa03560b5"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a4a44006b05b679a3af93ea6fa03560b5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_col_col_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html#a4a44006b05b679a3af93ea6fa03560b5">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html
deleted file mode 100644
index 6f40d2c..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_row_col_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html#a3fe128220ee8ae489e1fdc1ec248c74a">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a3fe128220ee8ae489e1fdc1ec248c74a"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a3fe128220ee8ae489e1fdc1ec248c74a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_row_col_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html#a3fe128220ee8ae489e1fdc1ec248c74a">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html
deleted file mode 100644
index 81be238..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_row_row_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html#a3eb764b159bfae3b099eabbb99c418fe">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a3eb764b159bfae3b099eabbb99c418fe"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a3eb764b159bfae3b099eabbb99c418fe" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_row_row_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html#a3eb764b159bfae3b099eabbb99c418fe">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html
deleted file mode 100644
index 7be60ff..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_col_col_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html#a98c8263eaa3a4bc70fd346d1737f0f71">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a98c8263eaa3a4bc70fd346d1737f0f71"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a98c8263eaa3a4bc70fd346d1737f0f71" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_col_col_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html#a98c8263eaa3a4bc70fd346d1737f0f71">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html
deleted file mode 100644
index d4b41c7..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SIZE_DEDUCER< LHS, RHS, OP > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_SIZE_DEDUCER< LHS, RHS, OP > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SIZE_DEDUCER" -->
-<p>Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">size1</a> (LHS &lhs, RHS &rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">size2</a> (LHS &lhs, RHS &rhs)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename LHS, typename RHS, typename OP><br/>
- struct viennacl::tools::MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></h3>
-
-<p>Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>LHS</em> </td><td>The left hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>RHS</em> </td><td>The right hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OP</em> </td><td>The operation tag </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aa127bcf01d93e1e00b789461247547eb"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER::size1" ref="aa127bcf01d93e1e00b789461247547eb" args="(LHS &lhs, RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size1 </td>
-          <td>(</td>
-          <td class="paramtype">LHS & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">RHS & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae6d3dd1aae7bbcb593894a187ebdb2af"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER::size2" ref="ae6d3dd1aae7bbcb593894a187ebdb2af" args="(LHS &lhs, RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size2 </td>
-          <td>(</td>
-          <td class="paramtype">LHS & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">RHS & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html
deleted file mode 100644
index 6299aaf..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a618c0d75593fe1fe328adc6eb422bc93">size1</a> (<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, op_trans > const &lhs, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 > const &rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a8c9fa937480c316bd57a1c3254d00292">size2</a> (<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, op_trans > const &lhs, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 > const &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, typename F1, unsigned int A1, typename F2, unsigned int A2><br/>
- struct viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a618c0d75593fe1fe328adc6eb422bc93"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod >::size1" ref="a618c0d75593fe1fe328adc6eb422bc93" args="(viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans > const &lhs, viennacl::matrix< ScalarType, F2, A2 > const &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size1 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, op_trans > const & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 > const & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8c9fa937480c316bd57a1c3254d00292"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod >::size2" ref="a8c9fa937480c316bd57a1c3254d00292" args="(viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans > const &lhs, viennacl::matrix< ScalarType, F2, A2 > const &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size2 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, op_trans > const & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 > const & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html
deleted file mode 100644
index 4daef6a..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#a1cdacb8e14a2f56cbc0abf2927b27a2b">size1</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 > const &lhs, <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, op_trans > const &rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#adc37fe885156acbab596641f515a0f82">size2</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 > const &lhs, <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, op_trans > const &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, typename F1, unsigned int A1, typename F2, unsigned int A2><br/>
- struct viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a1cdacb8e14a2f56cbc0abf2927b27a2b"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod >::size1" ref="a1cdacb8e14a2f56cbc0abf2927b27a2b" args="(viennacl::matrix< ScalarType, F1, A1 > const &lhs, viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans > const &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size1 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 > const & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, op_trans > const & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adc37fe885156acbab596641f515a0f82"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod >::size2" ref="adc37fe885156acbab596641f515a0f82" args="(viennacl::matrix< ScalarType, F1, A1 > const &lhs, viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans > const &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size2 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 > const & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, op_trans > const & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html
deleted file mode 100644
index 44fa466..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a09398ed02392ac3d11157533353a8f31">size1</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A1 > &lhs, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A2 > &rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a65cfc5b2cfed688bed410fe6f983586d">size2</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A1 > &lhs, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A2 > &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, unsigned int A1, unsigned int A2><br/>
- struct viennacl::tools::MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a09398ed02392ac3d11157533353a8f31"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod >::size1" ref="a09398ed02392ac3d11157533353a8f31" args="(viennacl::vector< ScalarType, A1 > &lhs, viennacl::vector< ScalarType, A2 > &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size1 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A1 > & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A2 > & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a65cfc5b2cfed688bed410fe6f983586d"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod >::size2" ref="a65cfc5b2cfed688bed410fe6f983586d" args="(viennacl::vector< ScalarType, A1 > &lhs, viennacl::vector< ScalarType, A2 > &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size2 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A1 > & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A2 > & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html
deleted file mode 100644
index 6424277..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER" -->
-<p>deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename MatrixType1, typename MatrixType2><br/>
- struct viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 ></h3>
-
-<p>deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2 </p>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html
deleted file mode 100644
index 4e63fc2..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_solve_row_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html#a6a870d032c93af230efb9a2585d0d8fe">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a6a870d032c93af230efb9a2585d0d8fe"></a><!-- doxytag: member="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a6a870d032c93af230efb9a2585d0d8fe" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_solve_row_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html#a6a870d032c93af230efb9a2585d0d8fe">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html
deleted file mode 100644
index 64e9e99..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_solve_col_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html#a7dbff6faccea0ad583517deda3c2b7de">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a7dbff6faccea0ad583517deda3c2b7de"></a><!-- doxytag: member="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a7dbff6faccea0ad583517deda3c2b7de" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_solve_col_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html#a7dbff6faccea0ad583517deda3c2b7de">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html
deleted file mode 100644
index 79ecdd8..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_solve_row_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html#a0a0f393da391149f6db6d56f5f763838">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a0a0f393da391149f6db6d56f5f763838"></a><!-- doxytag: member="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a0a0f393da391149f6db6d56f5f763838" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_solve_row_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html#a0a0f393da391149f6db6d56f5f763838">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html
deleted file mode 100644
index bd9b66d..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_solve_col_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html#a565860d7eec92d6d3bf47c191f2b9935">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a565860d7eec92d6d3bf47c191f2b9935"></a><!-- doxytag: member="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a565860d7eec92d6d3bf47c191f2b9935" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef viennacl::linalg::kernels::matrix_solve_col_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html#a565860d7eec92d6d3bf47c191f2b9935">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html
deleted file mode 100644
index b26ebf5..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_EXTRACTOR< LHS, RHS > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR< LHS, RHS ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>VECTOR_EXTRACTOR< LHS, RHS > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_EXTRACTOR" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL</a><br class="typebreak"/>
-< typename <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER</a>< LHS ><br class="typebreak"/>
-::<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a>, typename <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER</a>< RHS ><br class="typebreak"/>
-::<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a> >::<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a></td></tr>
-</table>
-<h3>template<typename LHS, typename RHS><br/>
- struct viennacl::tools::VECTOR_EXTRACTOR< LHS, RHS ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9e7f3539ef2e71a6b4d199d882a40da0"></a><!-- doxytag: member="viennacl::tools::VECTOR_EXTRACTOR::ResultType" ref="a9e7f3539ef2e71a6b4d199d882a40da0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL</a><typename <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER</a><LHS>::<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a>, typename <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER</a><RHS>::<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a>>::<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a> <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html
deleted file mode 100644
index ee03761..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_EXTRACTOR_IMPL< LHS, RHS > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL< LHS, RHS ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>VECTOR_EXTRACTOR_IMPL< LHS, RHS > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_EXTRACTOR_IMPL" -->
-<p>Extracts the vector type from one of the two arguments. Used for the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> type.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-LHS::ERROR_COULD_NOT_EXTRACT_VECTOR_INFORMATION_FROM_VECTOR_EXPRESSION </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#a9939181a319c04ab48a0d60cbe6e7dd9">ResultType</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename LHS, typename RHS><br/>
- struct viennacl::tools::VECTOR_EXTRACTOR_IMPL< LHS, RHS ></h3>
-
-<p>Extracts the vector type from one of the two arguments. Used for the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> type. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>LHS</em> </td><td>The left hand side operand of the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>RHS</em> </td><td>The right hand side operand of the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9939181a319c04ab48a0d60cbe6e7dd9"></a><!-- doxytag: member="viennacl::tools::VECTOR_EXTRACTOR_IMPL::ResultType" ref="a9939181a319c04ab48a0d60cbe6e7dd9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef LHS::ERROR_COULD_NOT_EXTRACT_VECTOR_INFORMATION_FROM_VECTOR_EXPRESSION <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#a9939181a319c04ab48a0d60cbe6e7dd9">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html
deleted file mode 100644
index d2ab062..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, A > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html#ae695f3958fa24d64fdbaf3e978e0ea1c">ResultType</a></td></tr>
-</table>
-<h3>template<typename LHS, typename ScalarType, unsigned int A><br/>
- struct viennacl::tools::VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="ae695f3958fa24d64fdbaf3e978e0ea1c"></a><!-- doxytag: member="viennacl::tools::VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > >::ResultType" ref="ae695f3958fa24d64fdbaf3e978e0ea1c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, A> <a class="el" href="classviennacl_1_1vector.html">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html
deleted file mode 100644
index b7976a4..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, A > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html#ae695f3958fa24d64fdbaf3e978e0ea1c">ResultType</a></td></tr>
-</table>
-<h3>template<typename ScalarType, unsigned int A><br/>
- struct viennacl::tools::VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="ae695f3958fa24d64fdbaf3e978e0ea1c"></a><!-- doxytag: member="viennacl::tools::VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > >::ResultType" ref="ae695f3958fa24d64fdbaf3e978e0ea1c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, A> <a class="el" href="classviennacl_1_1vector.html">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html
deleted file mode 100644
index 7b21c4d..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, A > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html#ae695f3958fa24d64fdbaf3e978e0ea1c">ResultType</a></td></tr>
-</table>
-<h3>template<typename RHS, typename ScalarType, unsigned int A><br/>
- struct viennacl::tools::VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="ae695f3958fa24d64fdbaf3e978e0ea1c"></a><!-- doxytag: member="viennacl::tools::VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS >::ResultType" ref="ae695f3958fa24d64fdbaf3e978e0ea1c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, A> <a class="el" href="classviennacl_1_1vector.html">ResultType</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html
deleted file mode 100644
index 049487a..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< LHS, RHS, OP > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">VECTOR_SIZE_DEDUCER< LHS, RHS, OP ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< LHS, RHS, OP > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER" -->
-<p>Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename LHS, typename RHS, typename OP><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< LHS, RHS, OP ></h3>
-
-<p>Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>LHS</em> </td><td>The left hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>RHS</em> </td><td>The right hand side operand </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>OP</em> </td><td>The operation tag </td></tr>
-  </table>
-  </dd>
-</dl>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html
deleted file mode 100644
index 7cf37d1..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html#aba827ef7d82c4a95c0293eac77a9a495">size</a> (const <a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a>< ScalarType, Amat > &lhs, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, unsigned int Amat, unsigned int A><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aba827ef7d82c4a95c0293eac77a9a495"></a><!-- doxytag: member="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >::size" ref="aba827ef7d82c4a95c0293eac77a9a495" args="(const viennacl::compressed_matrix< ScalarType, Amat > &lhs, const viennacl::vector< ScalarType, A > &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a>< ScalarType, Amat > & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html
deleted file mode 100644
index ca0e66d..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html#aa843af9061cf09ded02f2c5c5edb93e0">size</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< ScalarType, Amat > &lhs, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, unsigned int Amat, unsigned int A><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aa843af9061cf09ded02f2c5c5edb93e0"></a><!-- doxytag: member="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >::size" ref="aa843af9061cf09ded02f2c5c5edb93e0" args="(const viennacl::coordinate_matrix< ScalarType, Amat > &lhs, const viennacl::vector< ScalarType, A > &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< ScalarType, Amat > & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html
deleted file mode 100644
index 21e0d3f..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html#ad135912731852cebdfa2c996d57dd4a5">size</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F, Amat > &lhs, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, typename F, unsigned int Amat, unsigned int A><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ad135912731852cebdfa2c996d57dd4a5"></a><!-- doxytag: member="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >::size" ref="ad135912731852cebdfa2c996d57dd4a5" args="(const viennacl::matrix< ScalarType, F, Amat > &lhs, const viennacl::vector< ScalarType, A > &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F, Amat > & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html
deleted file mode 100644
index 1f5e4b4..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html#afafa70095b248b947c523711ff4cd357">size</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F, Amat >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F, Amat >, op_trans > &lhs, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, typename F, unsigned int Amat, unsigned int A><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="afafa70095b248b947c523711ff4cd357"></a><!-- doxytag: member="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >::size" ref="afafa70095b248b947c523711ff4cd357" args="(const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans > &lhs, const viennacl::vector< ScalarType, A > &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F, Amat >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F, Amat >, op_trans > & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html
deleted file mode 100644
index 30c9097..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html#ada291f3a68989aac52d341b8d8e396b3">size</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > &lhs, const RHS &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, unsigned int A, typename RHS><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ada291f3a68989aac52d341b8d8e396b3"></a><!-- doxytag: member="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div >::size" ref="ada291f3a68989aac52d341b8d8e396b3" args="(const viennacl::vector< ScalarType, A > &lhs, const RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const RHS & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html
deleted file mode 100644
index 0370b2b..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
-  <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html#ada291f3a68989aac52d341b8d8e396b3">size</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > &lhs, const RHS &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, unsigned int A, typename RHS><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ada291f3a68989aac52d341b8d8e396b3"></a><!-- doxytag: member="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod >::size" ref="ada291f3a68989aac52d341b8d8e396b3" args="(const viennacl::vector< ScalarType, A > &lhs, const RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static size_t size </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > & </td>
-          <td class="paramname"> <em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const RHS & </td>
-          <td class="paramname"> <em>rhs</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1enable__if.html b/doc/doxygen/html/structviennacl_1_1tools_1_1enable__if.html
deleted file mode 100644
index 4993317..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1enable__if.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: enable_if< b, T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1enable__if.html">enable_if< b, T ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>enable_if< b, T > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::enable_if" -->
-<p>Simple enable-if variant that uses the SFINAE pattern.  
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1enable__if.html#a565429e62c1d4fd084335146ba778e17">type</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<bool b, class T = void><br/>
- struct viennacl::tools::enable_if< b, T ></h3>
-
-<p>Simple enable-if variant that uses the SFINAE pattern. </p>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a565429e62c1d4fd084335146ba778e17"></a><!-- doxytag: member="viennacl::tools::enable_if::type" ref="a565429e62c1d4fd084335146ba778e17" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1enable__if.html#a565429e62c1d4fd084335146ba778e17">type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html
deleted file mode 100644
index 6efe2d3..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: enable_if< false, T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">enable_if< false, T ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<h1>enable_if< false, T > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::enable_if< false, T >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<h3>template<class T><br/>
- struct viennacl::tools::enable_if< false, T ></h3>
-
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1result__of_1_1value__type.html b/doc/doxygen/html/structviennacl_1_1tools_1_1result__of_1_1value__type.html
deleted file mode 100644
index 11ccc87..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1result__of_1_1value__type.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: value_type< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1tools_1_1result__of.html">result_of</a>      </li>
-      <li><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type< T ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>value_type< T > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::result_of::value_type" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">type</a></td></tr>
-</table>
-<h3>template<typename T><br/>
- struct viennacl::tools::result_of::value_type< T ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="aa325c13a882156e0897098ca1ccaf7fc"></a><!-- doxytag: member="viennacl::tools::result_of::value_type::type" ref="aa325c13a882156e0897098ca1ccaf7fc" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef T::value_type <a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of.html
deleted file mode 100644
index af18078..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< Sequence, Active > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a>      </li>
-      <li><a class="el" href="structviennacl_1_1traits_1_1tag__of.html">tag_of< Sequence, Active ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>tag_of< Sequence, Active > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__none.html">viennacl::tag_none</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of.html#aa4b62e36b82735fe7680dffa115650a9">type</a></td></tr>
-</table>
-<h3>template<typename Sequence, typename Active><br/>
- struct viennacl::traits::tag_of< Sequence, Active ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="aa4b62e36b82735fe7680dffa115650a9"></a><!-- doxytag: member="viennacl::traits::tag_of::type" ref="aa4b62e36b82735fe7680dffa115650a9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__none.html">viennacl::tag_none</a> <a class="el" href="structviennacl_1_1tag__none.html">type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html
deleted file mode 100644
index aa7d3a2..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< std::vector< T, A > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a>      </li>
-      <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">tag_of< std::vector< T, A > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>tag_of< std::vector< T, A > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< std::vector< T, A > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">type</a></td></tr>
-</table>
-<h3>template<typename T, typename A><br/>
- struct viennacl::traits::tag_of< std::vector< T, A > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a0ecdaf62bedc425d949e0fc84941ea59"></a><!-- doxytag: member="viennacl::traits::tag_of< std::vector< T, A > >::type" ref="a0ecdaf62bedc425d949e0fc84941ea59" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> <a class="el" href="structviennacl_1_1tag__stl.html">type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html
deleted file mode 100644
index a1208f8..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a>      </li>
-      <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html#a0ecdaf62bedc425d949e0fc84941ea59">type</a></td></tr>
-</table>
-<h3>template<typename KEY, typename DATA, typename COMPARE, typename AMAP, typename AVEC><br/>
- struct viennacl::traits::tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a0ecdaf62bedc425d949e0fc84941ea59"></a><!-- doxytag: member="viennacl::traits::tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > >::type" ref="a0ecdaf62bedc425d949e0fc84941ea59" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> <a class="el" href="structviennacl_1_1tag__stl.html">type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html
deleted file mode 100644
index b78426c..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< std::vector< std::vector< T, A >, A > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a>      </li>
-      <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">tag_of< std::vector< std::vector< T, A >, A > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>tag_of< std::vector< std::vector< T, A >, A > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< std::vector< std::vector< T, A >, A > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">type</a></td></tr>
-</table>
-<h3>template<typename T, typename A><br/>
- struct viennacl::traits::tag_of< std::vector< std::vector< T, A >, A > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a0ecdaf62bedc425d949e0fc84941ea59"></a><!-- doxytag: member="viennacl::traits::tag_of< std::vector< std::vector< T, A >, A > >::type" ref="a0ecdaf62bedc425d949e0fc84941ea59" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> <a class="el" href="structviennacl_1_1tag__stl.html">type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html
deleted file mode 100644
index 496bb65..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< viennacl::compressed_matrix< T, I > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a>      </li>
-      <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::compressed_matrix< T, I > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>tag_of< viennacl::compressed_matrix< T, I > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< viennacl::compressed_matrix< T, I > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">type</a></td></tr>
-</table>
-<h3>template<typename T, unsigned int I><br/>
- struct viennacl::traits::tag_of< viennacl::compressed_matrix< T, I > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a60d0519769154ef68fd91ce836be8743"></a><!-- doxytag: member="viennacl::traits::tag_of< viennacl::compressed_matrix< T, I > >::type" ref="a60d0519769154ef68fd91ce836be8743" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="el" href="structviennacl_1_1tag__viennacl.html">type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html
deleted file mode 100644
index 83fa133..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< viennacl::coordinate_matrix< T, I > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a>      </li>
-      <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::coordinate_matrix< T, I > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>tag_of< viennacl::coordinate_matrix< T, I > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< viennacl::coordinate_matrix< T, I > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">type</a></td></tr>
-</table>
-<h3>template<typename T, unsigned int I><br/>
- struct viennacl::traits::tag_of< viennacl::coordinate_matrix< T, I > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a60d0519769154ef68fd91ce836be8743"></a><!-- doxytag: member="viennacl::traits::tag_of< viennacl::coordinate_matrix< T, I > >::type" ref="a60d0519769154ef68fd91ce836be8743" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="el" href="structviennacl_1_1tag__viennacl.html">type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html
deleted file mode 100644
index 182a967..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< viennacl::matrix< T, F, alignment > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a>      </li>
-      <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">tag_of< viennacl::matrix< T, F, alignment > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>tag_of< viennacl::matrix< T, F, alignment > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< viennacl::matrix< T, F, alignment > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">type</a></td></tr>
-</table>
-<h3>template<typename T, typename F, unsigned int alignment><br/>
- struct viennacl::traits::tag_of< viennacl::matrix< T, F, alignment > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a60d0519769154ef68fd91ce836be8743"></a><!-- doxytag: member="viennacl::traits::tag_of< viennacl::matrix< T, F, alignment > >::type" ref="a60d0519769154ef68fd91ce836be8743" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="el" href="structviennacl_1_1tag__viennacl.html">type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html
deleted file mode 100644
index 33388bb..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< viennacl::matrix_expression< T1, T2, OP > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a>      </li>
-      <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>tag_of< viennacl::matrix_expression< T1, T2, OP > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< viennacl::matrix_expression< T1, T2, OP > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">type</a></td></tr>
-</table>
-<h3>template<typename T1, typename T2, typename OP><br/>
- struct viennacl::traits::tag_of< viennacl::matrix_expression< T1, T2, OP > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a60d0519769154ef68fd91ce836be8743"></a><!-- doxytag: member="viennacl::traits::tag_of< viennacl::matrix_expression< T1, T2, OP > >::type" ref="a60d0519769154ef68fd91ce836be8743" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="el" href="structviennacl_1_1tag__viennacl.html">type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html
deleted file mode 100644
index 4170dd6..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< viennacl::vector< T, alignment > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Data Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="navpath">
-    <ul>
-      <li><a class="el" href="namespaceviennacl.html">viennacl</a>      </li>
-      <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a>      </li>
-      <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">tag_of< viennacl::vector< T, alignment > ></a>      </li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a>  </div>
-  <div class="headertitle">
-<h1>tag_of< viennacl::vector< T, alignment > > Struct Template Reference</h1>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< viennacl::vector< T, alignment > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">type</a></td></tr>
-</table>
-<h3>template<typename T, unsigned int alignment><br/>
- struct viennacl::traits::tag_of< viennacl::vector< T, alignment > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a60d0519769154ef68fd91ce836be8743"></a><!-- doxytag: member="viennacl::traits::tag_of< viennacl::vector< T, alignment > >::type" ref="a60d0519769154ef68fd91ce836be8743" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="el" href="structviennacl_1_1tag__viennacl.html">type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/tab_a.png b/doc/doxygen/html/tab_a.png
deleted file mode 100644
index 2d99ef2..0000000
Binary files a/doc/doxygen/html/tab_a.png and /dev/null differ
diff --git a/doc/doxygen/html/tab_b.png b/doc/doxygen/html/tab_b.png
deleted file mode 100644
index b2c3d2b..0000000
Binary files a/doc/doxygen/html/tab_b.png and /dev/null differ
diff --git a/doc/doxygen/html/tab_h.png b/doc/doxygen/html/tab_h.png
deleted file mode 100644
index c11f48f..0000000
Binary files a/doc/doxygen/html/tab_h.png and /dev/null differ
diff --git a/doc/doxygen/html/tab_s.png b/doc/doxygen/html/tab_s.png
deleted file mode 100644
index 978943a..0000000
Binary files a/doc/doxygen/html/tab_s.png and /dev/null differ
diff --git a/doc/doxygen/html/tabs.css b/doc/doxygen/html/tabs.css
deleted file mode 100644
index 2192056..0000000
--- a/doc/doxygen/html/tabs.css
+++ /dev/null
@@ -1,59 +0,0 @@
-.tabs, .tabs2, .tabs3 {
-    background-image: url('tab_b.png');
-    width: 100%;
-    z-index: 101;
-    font-size: 13px;
-}
-
-.tabs2 {
-    font-size: 10px;
-}
-.tabs3 {
-    font-size: 9px;
-}
-
-.tablist {
-    margin: 0;
-    padding: 0;
-    display: table;
-}
-
-.tablist li {
-    float: left;
-    display: table-cell;
-    background-image: url('tab_b.png');
-    line-height: 36px;
-    list-style: none;
-}
-
-.tablist a {
-    display: block;
-    padding: 0 20px;
-    font-weight: bold;
-    background-image:url('tab_s.png');
-    background-repeat:no-repeat;
-    background-position:right;
-    color: #283A5D;
-    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-    text-decoration: none;
-    outline: none;
-}
-
-.tabs3 .tablist a {
-    padding: 0 10px;
-}
-
-.tablist a:hover {
-    background-image: url('tab_h.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-    text-decoration: none;
-}
-
-.tablist li.current a {
-    background-image: url('tab_a.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-}
diff --git a/doc/doxygen/html/tag__of_8hpp.html b/doc/doxygen/html/tag__of_8hpp.html
deleted file mode 100644
index 552b12a..0000000
--- a/doc/doxygen/html/tag__of_8hpp.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/tag_of.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/tag_of.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Dispatch facility for distinguishing between ublas, STL and ViennaCL types.  
-<a href="#_details">More...</a></p>
-
-<p><a href="tag__of_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__none.html">tag_none</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__stl.html">tag_stl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of.html">tag_of< Sequence, Active ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">tag_of< std::vector< T, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">tag_of< std::vector< std::vector< T, A >, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">tag_of< viennacl::vector< T, alignment > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">tag_of< viennacl::matrix< T, F, alignment > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::compressed_matrix< T, I > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::coordinate_matrix< T, I > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__mtl4.html">is_mtl4< Tag ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a>.  <a href="structviennacl_1_1is__mtl4.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">is_mtl4< viennacl::tag_mtl4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__eigen.html">is_eigen< Tag ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a>.  <a href="structviennacl_1_1is__eigen.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">is_eigen< viennacl::tag_eigen ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__ublas.html">is_ublas< Tag ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>.  <a href="structviennacl_1_1is__ublas.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">is_ublas< viennacl::tag_ublas ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__stl.html">is_stl< Tag ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>.  <a href="structviennacl_1_1is__stl.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">is_stl< viennacl::tag_stl ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__viennacl.html">is_viennacl< Tag ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a>.  <a href="structviennacl_1_1is__viennacl.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">is_viennacl< viennacl::tag_viennacl ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Dispatch facility for distinguishing between ublas, STL and ViennaCL types. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/tag__of_8hpp_source.html b/doc/doxygen/html/tag__of_8hpp_source.html
deleted file mode 100644
index 1d2c695..0000000
--- a/doc/doxygen/html/tag__of_8hpp_source.html
+++ /dev/null
@@ -1,314 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/tag_of.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/tag_of.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="tag__of_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 
-<a name="l00016"></a>00016 <span class="preprocessor">#ifndef _VIENNACL_TAGOF_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TAGOF_HPP_</span>
-<a name="l00018"></a>00018 <span class="preprocessor"></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#ifdef VIENNACL_HAVE_UBLAS  </span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#include <boost/numeric/ublas/matrix_sparse.hpp></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <boost/numeric/ublas/matrix.hpp></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <boost/numeric/ublas/vector.hpp></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#endif</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#ifdef VIENNACL_HAVE_EIGEN  </span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include <Eigen/Core></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include <Eigen/Sparse></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
-<a name="l00033"></a>00033 <span class="preprocessor"></span>
-<a name="l00034"></a>00034 <span class="preprocessor">#ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include <boost/numeric/mtl/mtl.hpp></span>
-<a name="l00036"></a>00036 <span class="preprocessor">#endif</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span>
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>viennacl
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 
-<a name="l00041"></a>00041   <span class="comment">// ----------------------------------------------------</span>
-<a name="l00042"></a>00042   <span class="comment">// TAGS</span>
-<a name="l00043"></a>00043   <span class="comment">//</span>
-<a name="l00044"></a><a class="code" href="structviennacl_1_1tag__none.html">00044</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tag__none.html">tag_none</a>     {};
-<a name="l00045"></a><a class="code" href="structviennacl_1_1tag__mtl4.html">00045</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a>     {};
-<a name="l00046"></a><a class="code" href="structviennacl_1_1tag__eigen.html">00046</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tag__eigen.html">tag_eigen</a>    {};
-<a name="l00047"></a><a class="code" href="structviennacl_1_1tag__ublas.html">00047</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>    {};
-<a name="l00048"></a><a class="code" href="structviennacl_1_1tag__stl.html">00048</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tag__stl.html">tag_stl</a>      {};
-<a name="l00049"></a><a class="code" href="structviennacl_1_1tag__viennacl.html">00049</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a> {};
-<a name="l00050"></a>00050 
-<a name="l00051"></a><a class="code" href="namespaceviennacl_1_1traits.html">00051</a>   <span class="keyword">namespace </span>traits
-<a name="l00052"></a>00052   {
-<a name="l00053"></a>00053     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00054"></a>00054     <span class="comment">// GENERIC BASE</span>
-<a name="l00055"></a>00055     <span class="comment">//</span>
-<a name="l00065"></a>00065 <span class="comment"></span>    <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keyword">typename</span> Active = <span class="keywordtype">void</span> >
-<a name="l00066"></a>00066     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>;
-<a name="l00067"></a>00067    
-<a name="l00068"></a>00068     <span class="keyword">template</span> < <span class="keyword">typename</span> Sequence, <span class="keyword">typename</span> Active >
-<a name="l00069"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">00069</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>
-<a name="l00070"></a>00070     {
-<a name="l00071"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of.html#aa4b62e36b82735fe7680dffa115650a9">00071</a>       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::tag_none</a>  <a class="code" href="structviennacl_1_1tag__none.html">type</a>;
-<a name="l00072"></a>00072     };
-<a name="l00073"></a>00073     
-<a name="l00074"></a>00074 <span class="preprocessor">    #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00075"></a>00075 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00076"></a>00076     <span class="comment">// MTL4</span>
-<a name="l00077"></a>00077     <span class="comment">//</span>
-<a name="l00078"></a>00078     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00079"></a>00079     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< mtl::dense_vector<ScalarType> >
-<a name="l00080"></a>00080     {
-<a name="l00081"></a>00081       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__mtl4.html">viennacl::tag_mtl4</a>  type;
-<a name="l00082"></a>00082     };
-<a name="l00083"></a>00083 
-<a name="l00084"></a>00084     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00085"></a>00085     <span class="keyword">struct </span>tag_of< mtl::compressed2D<ScalarType> >
-<a name="l00086"></a>00086     {
-<a name="l00087"></a>00087       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__mtl4.html">viennacl::tag_mtl4</a>  type;
-<a name="l00088"></a>00088     };
-<a name="l00089"></a>00089 
-<a name="l00090"></a>00090     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> T>
-<a name="l00091"></a>00091     <span class="keyword">struct </span>tag_of< mtl::dense2D<ScalarType, T> >
-<a name="l00092"></a>00092     {
-<a name="l00093"></a>00093       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__mtl4.html">viennacl::tag_mtl4</a>  type;
-<a name="l00094"></a>00094     };
-<a name="l00095"></a>00095 <span class="preprocessor">    #endif</span>
-<a name="l00096"></a>00096 <span class="preprocessor"></span>    
-<a name="l00097"></a>00097     
-<a name="l00098"></a>00098 <span class="preprocessor">    #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00099"></a>00099 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00100"></a>00100     <span class="comment">// Eigen</span>
-<a name="l00101"></a>00101     <span class="comment">//</span>
-<a name="l00102"></a>00102     <span class="keyword">template</span> <>
-<a name="l00103"></a>00103     <span class="keyword">struct </span>tag_of< Eigen::VectorXf >
-<a name="l00104"></a>00104     {
-<a name="l00105"></a>00105       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__eigen.html">viennacl::tag_eigen</a>  type;
-<a name="l00106"></a>00106     };
-<a name="l00107"></a>00107 
-<a name="l00108"></a>00108     <span class="keyword">template</span> <>
-<a name="l00109"></a>00109     <span class="keyword">struct </span>tag_of< Eigen::VectorXd >
-<a name="l00110"></a>00110     {
-<a name="l00111"></a>00111       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__eigen.html">viennacl::tag_eigen</a>  type;
-<a name="l00112"></a>00112     };
-<a name="l00113"></a>00113 
-<a name="l00114"></a>00114     <span class="keyword">template</span> <>
-<a name="l00115"></a>00115     <span class="keyword">struct </span>tag_of< Eigen::MatrixXf >
-<a name="l00116"></a>00116     {
-<a name="l00117"></a>00117       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__eigen.html">viennacl::tag_eigen</a>  type;
-<a name="l00118"></a>00118     };
-<a name="l00119"></a>00119 
-<a name="l00120"></a>00120     <span class="keyword">template</span> <>
-<a name="l00121"></a>00121     <span class="keyword">struct </span>tag_of< Eigen::MatrixXd >
-<a name="l00122"></a>00122     {
-<a name="l00123"></a>00123       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__eigen.html">viennacl::tag_eigen</a>  type;
-<a name="l00124"></a>00124     };
-<a name="l00125"></a>00125 
-<a name="l00126"></a>00126     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">int</span> option>
-<a name="l00127"></a>00127     <span class="keyword">struct </span>tag_of< Eigen::SparseMatrix<ScalarType, option> >
-<a name="l00128"></a>00128     {
-<a name="l00129"></a>00129       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__eigen.html">viennacl::tag_eigen</a>  type;
-<a name="l00130"></a>00130     };
-<a name="l00131"></a>00131     
-<a name="l00132"></a>00132 <span class="preprocessor">    #endif</span>
-<a name="l00133"></a>00133 <span class="preprocessor"></span>    
-<a name="l00134"></a>00134 <span class="preprocessor">    #ifdef VIENNACL_HAVE_UBLAS</span>
-<a name="l00135"></a>00135 <span class="preprocessor"></span>    <span class="comment">// ----------------------------------------------------</span>
-<a name="l00136"></a>00136     <span class="comment">// UBLAS</span>
-<a name="l00137"></a>00137     <span class="comment">//</span>
-<a name="l00138"></a>00138     <span class="keyword">template</span>< <span class="keyword">typename</span> T >
-<a name="l00139"></a>00139     <span class="keyword">struct </span>tag_of< boost::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a>::ublas::vector<T> >
-<a name="l00140"></a>00140     {
-<a name="l00141"></a>00141       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__ublas.html">viennacl::tag_ublas</a>  type;
-<a name="l00142"></a>00142     };
-<a name="l00143"></a>00143 
-<a name="l00144"></a>00144     <span class="keyword">template</span>< <span class="keyword">typename</span> T >
-<a name="l00145"></a>00145     <span class="keyword">struct </span>tag_of< boost::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a>::ublas::<a class="code" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">matrix</a><T> >
-<a name="l00146"></a>00146     {
-<a name="l00147"></a>00147       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__ublas.html">viennacl::tag_ublas</a>  type;
-<a name="l00148"></a>00148     };
-<a name="l00149"></a>00149 
-<a name="l00150"></a>00150     <span class="keyword">template</span>< <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2 >
-<a name="l00151"></a>00151     <span class="keyword">struct </span>tag_of< boost::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a>::ublas::matrix_unary2<T1,T2> >
-<a name="l00152"></a>00152     {
-<a name="l00153"></a>00153       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__ublas.html">viennacl::tag_ublas</a>  type;
-<a name="l00154"></a>00154     };
-<a name="l00155"></a>00155 
-<a name="l00156"></a>00156     <span class="keyword">template</span>< <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2 >
-<a name="l00157"></a>00157     <span class="keyword">struct </span>tag_of< boost::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a>::ublas::compressed_matrix<T1,T2> >
-<a name="l00158"></a>00158     {
-<a name="l00159"></a>00159       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__ublas.html">viennacl::tag_ublas</a>  type;
-<a name="l00160"></a>00160     };
-<a name="l00161"></a>00161     
-<a name="l00162"></a>00162 <span class="preprocessor">    #endif</span>
-<a name="l00163"></a>00163 <span class="preprocessor"></span>
-<a name="l00164"></a>00164     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00165"></a>00165     <span class="comment">// STL types</span>
-<a name="l00166"></a>00166     <span class="comment">//</span>
-<a name="l00167"></a>00167     
-<a name="l00168"></a>00168     <span class="comment">//vector</span>
-<a name="l00169"></a>00169     <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keyword">typename</span> A >
-<a name="l00170"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">00170</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< std::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><T, A> >
-<a name="l00171"></a>00171     {
-<a name="l00172"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">00172</a>       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a>  <a class="code" href="structviennacl_1_1tag__stl.html">type</a>;
-<a name="l00173"></a>00173     };
-<a name="l00174"></a>00174 
-<a name="l00175"></a>00175     <span class="comment">//dense matrix</span>
-<a name="l00176"></a>00176     <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keyword">typename</span> A >
-<a name="l00177"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">00177</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< std::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><std::vector<T, A>, A> >
-<a name="l00178"></a>00178     {
-<a name="l00179"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">00179</a>       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a>  <a class="code" href="structviennacl_1_1tag__stl.html">type</a>;
-<a name="l00180"></a>00180     };
-<a name="l00181"></a>00181 
-<a name="l00182"></a>00182     <span class="comment">//sparse matrix (vector of maps)</span>
-<a name="l00183"></a>00183     <span class="keyword">template</span>< <span class="keyword">typename</span> KEY, <span class="keyword">typename</span> DATA, <span class="keyword">typename</span> COMPARE, <span class="keyword">typename</span> AMAP, <span class="keyword">typename</span> AVEC>
-<a name="l00184"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">00184</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< std::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><std::map<KEY, DATA, COMPARE, AMAP>, AVEC> >
-<a name="l00185"></a>00185     {
-<a name="l00186"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html#a0ecdaf62bedc425d949e0fc84941ea59">00186</a>       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a>  <a class="code" href="structviennacl_1_1tag__stl.html">type</a>;
-<a name="l00187"></a>00187     };
-<a name="l00188"></a>00188     
-<a name="l00189"></a>00189     
-<a name="l00190"></a>00190     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00191"></a>00191     <span class="comment">// VIENNACL</span>
-<a name="l00192"></a>00192     <span class="comment">//</span>
-<a name="l00193"></a>00193     <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment >
-<a name="l00194"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">00194</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><T, alignment> >
-<a name="l00195"></a>00195     {
-<a name="l00196"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">00196</a>       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a>  <a class="code" href="structviennacl_1_1tag__viennacl.html">type</a>;
-<a name="l00197"></a>00197     };
-<a name="l00198"></a>00198 
-<a name="l00199"></a>00199     <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment >
-<a name="l00200"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">00200</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><T, F, alignment> >
-<a name="l00201"></a>00201     {
-<a name="l00202"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">00202</a>       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a>  <a class="code" href="structviennacl_1_1tag__viennacl.html">type</a>;
-<a name="l00203"></a>00203     };
-<a name="l00204"></a>00204 
-<a name="l00205"></a>00205     <span class="keyword">template</span>< <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> OP >
-<a name="l00206"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">00206</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< viennacl::<a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a><T1,T2,OP> >
-<a name="l00207"></a>00207     {
-<a name="l00208"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">00208</a>       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a>  <a class="code" href="structviennacl_1_1tag__viennacl.html">type</a>;
-<a name="l00209"></a>00209     };
-<a name="l00210"></a>00210 
-<a name="l00211"></a>00211     <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> I>
-<a name="l00212"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">00212</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< viennacl::<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><T,I> >
-<a name="l00213"></a>00213     {
-<a name="l00214"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">00214</a>       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a>  <a class="code" href="structviennacl_1_1tag__viennacl.html">type</a>;
-<a name="l00215"></a>00215     };
-<a name="l00216"></a>00216 
-<a name="l00217"></a>00217     <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> I>
-<a name="l00218"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">00218</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< viennacl::<a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a><T,I> >
-<a name="l00219"></a>00219     {
-<a name="l00220"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">00220</a>       <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a>  <a class="code" href="structviennacl_1_1tag__viennacl.html">type</a>;
-<a name="l00221"></a>00221     };
-<a name="l00222"></a>00222     <span class="comment">// ----------------------------------------------------</span>
-<a name="l00223"></a>00223   } <span class="comment">// end namespace traits</span>
-<a name="l00224"></a>00224 
-<a name="l00225"></a>00225 
-<a name="l00230"></a>00230   <span class="keyword">template</span> <<span class="keyword">typename</span> Tag>
-<a name="l00231"></a><a class="code" href="structviennacl_1_1is__mtl4.html">00231</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__mtl4.html" title="Meta function which checks whether a tag is tag_mtl4.">is_mtl4</a>
-<a name="l00232"></a>00232   {
-<a name="l00233"></a><a class="code" href="structviennacl_1_1is__mtl4.html#a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9">00233</a>      <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__mtl4.html#a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">false</span> };  
-<a name="l00234"></a>00234   };
-<a name="l00235"></a>00235 
-<a name="l00236"></a>00236   <span class="keyword">template</span> <>
-<a name="l00237"></a><a class="code" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">00237</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__mtl4.html" title="Meta function which checks whether a tag is tag_mtl4.">is_mtl4</a>< viennacl::<a class="code" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a> >
-<a name="l00238"></a>00238   {
-<a name="l00239"></a><a class="code" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html#adf764cbdea00d65edcd07bb9953ad2b7a97de9ab6885342a574053b8f64a563a9">00239</a>      <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__mtl4.html#a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">true</span> };  
-<a name="l00240"></a>00240   };
-<a name="l00241"></a>00241 
-<a name="l00246"></a>00246   <span class="keyword">template</span> <<span class="keyword">typename</span> Tag>
-<a name="l00247"></a><a class="code" href="structviennacl_1_1is__eigen.html">00247</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__eigen.html" title="Meta function which checks whether a tag is tag_eigen.">is_eigen</a>
-<a name="l00248"></a>00248   {
-<a name="l00249"></a><a class="code" href="structviennacl_1_1is__eigen.html#a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9">00249</a>      <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__eigen.html#a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">false</span> };  
-<a name="l00250"></a>00250   };
-<a name="l00251"></a>00251 
-<a name="l00252"></a>00252   <span class="keyword">template</span> <>
-<a name="l00253"></a><a class="code" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">00253</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__eigen.html" title="Meta function which checks whether a tag is tag_eigen.">is_eigen</a>< viennacl::<a class="code" href="structviennacl_1_1tag__eigen.html">tag_eigen</a> >
-<a name="l00254"></a>00254   {
-<a name="l00255"></a><a class="code" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html#abc6126af1d45847bc59afa0aa3216b04a97de9ab6885342a574053b8f64a563a9">00255</a>      <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__eigen.html#a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">true</span> };  
-<a name="l00256"></a>00256   };
-<a name="l00257"></a>00257 
-<a name="l00258"></a>00258 
-<a name="l00263"></a>00263   <span class="keyword">template</span> <<span class="keyword">typename</span> Tag>
-<a name="l00264"></a><a class="code" href="structviennacl_1_1is__ublas.html">00264</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">is_ublas</a>
-<a name="l00265"></a>00265   {
-<a name="l00266"></a><a class="code" href="structviennacl_1_1is__ublas.html#adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9">00266</a>      <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__ublas.html#adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">false</span> };  
-<a name="l00267"></a>00267   };
-<a name="l00268"></a>00268 
-<a name="l00269"></a>00269   <span class="keyword">template</span> <>
-<a name="l00270"></a><a class="code" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">00270</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">is_ublas</a>< viennacl::<a class="code" href="structviennacl_1_1tag__ublas.html">tag_ublas</a> >
-<a name="l00271"></a>00271   {
-<a name="l00272"></a><a class="code" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html#a61dadd085c1777f559549e05962b2c9ea97de9ab6885342a574053b8f64a563a9">00272</a>      <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__ublas.html#adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">true</span> };  
-<a name="l00273"></a>00273   };
-<a name="l00274"></a>00274 
-<a name="l00279"></a>00279   <span class="keyword">template</span> <<span class="keyword">typename</span> Tag>
-<a name="l00280"></a><a class="code" href="structviennacl_1_1is__stl.html">00280</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">is_stl</a>
-<a name="l00281"></a>00281   {
-<a name="l00282"></a><a class="code" href="structviennacl_1_1is__stl.html#a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9">00282</a>      <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__stl.html#a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">false</span> };  
-<a name="l00283"></a>00283   };
-<a name="l00284"></a>00284 
-<a name="l00285"></a>00285   <span class="keyword">template</span> <>
-<a name="l00286"></a><a class="code" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">00286</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">is_stl</a>< viennacl::<a class="code" href="structviennacl_1_1tag__stl.html">tag_stl</a> >
-<a name="l00287"></a>00287   {
-<a name="l00288"></a><a class="code" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html#a0411cd49bb5b71852cecd93bcbf0ca2da97de9ab6885342a574053b8f64a563a9">00288</a>      <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__stl.html#a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">true</span> };  
-<a name="l00289"></a>00289   };
-<a name="l00290"></a>00290 
-<a name="l00291"></a>00291   
-<a name="l00296"></a>00296   <span class="keyword">template</span> <<span class="keyword">typename</span> Tag>
-<a name="l00297"></a><a class="code" href="structviennacl_1_1is__viennacl.html">00297</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">is_viennacl</a>
-<a name="l00298"></a>00298   {
-<a name="l00299"></a><a class="code" href="structviennacl_1_1is__viennacl.html#abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9">00299</a>      <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__viennacl.html#abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">false</span> };  
-<a name="l00300"></a>00300   };
-<a name="l00301"></a>00301 
-<a name="l00302"></a>00302   <span class="keyword">template</span> <>
-<a name="l00303"></a><a class="code" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">00303</a>   <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">is_viennacl</a>< viennacl::<a class="code" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a> >
-<a name="l00304"></a>00304   {
-<a name="l00305"></a><a class="code" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html#ab04a0655cd1e3bcac5e8f48c18df1a57a97de9ab6885342a574053b8f64a563a9">00305</a>      <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__viennacl.html#abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">true</span> };  
-<a name="l00306"></a>00306   };
-<a name="l00307"></a>00307 
-<a name="l00308"></a>00308 } <span class="comment">// end namespace viennacl</span>
-<a name="l00309"></a>00309 
-<a name="l00310"></a>00310 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/tools_8hpp.html b/doc/doxygen/html/tools_8hpp.html
deleted file mode 100644
index 988239e..0000000
--- a/doc/doxygen/html/tools_8hpp.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/tools.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/tools.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Various little tools used here and there in ViennaCL.  
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="adapter_8hpp_source.html">viennacl/tools/adapter.hpp</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="tools_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type< T ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Supply suitable increment functions for the iterators:  <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1enable__if.html">enable_if< b, T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Simple enable-if variant that uses the SFINAE pattern.  <a href="structviennacl_1_1tools_1_1enable__if.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">enable_if< false, T ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A guard that checks whether the floating point type of GPU types is either float or double.  <a href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes the const qualifier from a type.  <a href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">CONST_REMOVER< const T ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL< LHS, RHS ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Extracts the vector type from one of the two arguments. Used for the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> type.  <a href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR< LHS, RHS ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">VECTOR_SIZE_DEDUCER< LHS, RHS, OP ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands.  <a href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">CPU_SCALAR_TYPE_DEDUCER< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>  <a href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">CPU_SCALAR_TYPE_DEDUCER< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">CPU_SCALAR_TYPE_DEDUCER< double ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html">viennacl::tools::traits</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1result__of.html">viennacl::tools::result_of</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a> (MatrixType &matrix, size_t rows, size_t cols)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a331bbc1a30fe491fc4416993c336bc06">resize</a> (VectorType &vec, size_t new_size)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">clear</a> (VectorType &vec)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> (VectorType &vec)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#ae0476afc58ea44d5d67ffe7384f59389">readTextFromFile</a> (const std::string &filename)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a text from a file into a std::string.  <a href="#ae0476afc58ea44d5d67ffe7384f59389"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8">strReplace</a> (const std::string &text, std::string to_search, std::string to_replace)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Replaces all occurances of a substring by another stringstream.  <a href="#aabca73e564ff14ed639cfe0a94c88cf8"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class INT_TYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">INT_TYPE </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#a8422b8f21a3e19bc1dcd4cc3a8447227">roundUpToNextMultiple</a> (INT_TYPE to_reach, INT_TYPE base)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Rounds an integer to the next multiple of another integer.  <a href="#a8422b8f21a3e19bc1dcd4cc3a8447227"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0">make_double_kernel</a> (std::string const &source, std::string platform_info)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a double precision kernel out of a single precision kernel.  <a href="#acac5a5c4b9410d22c87a4286042a42b0"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Various little tools used here and there in ViennaCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/tools_8hpp_source.html b/doc/doxygen/html/tools_8hpp_source.html
deleted file mode 100644
index 366d769..0000000
--- a/doc/doxygen/html/tools_8hpp_source.html
+++ /dev/null
@@ -1,465 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/tools.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/tools.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="tools_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <fstream></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sstream></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="adapter_8hpp.html" title="Adapter classes for sparse matrices made of the STL type std::vector&lt;std::map&lt;unsigned int...">viennacl/tools/adapter.hpp</a>"</span>
-<a name="l00027"></a>00027 
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029 <span class="preprocessor">#ifdef VIENNACL_HAVE_UBLAS  </span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include <boost/numeric/ublas/matrix_sparse.hpp></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include <boost/numeric/ublas/matrix.hpp></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
-<a name="l00033"></a>00033 <span class="preprocessor"></span>
-<a name="l00034"></a>00034 <span class="preprocessor">#ifdef VIENNACL_HAVE_EIGEN  </span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include <Eigen/Core></span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include <Eigen/Sparse></span>
-<a name="l00037"></a>00037 <span class="preprocessor">#endif</span>
-<a name="l00038"></a>00038 <span class="preprocessor"></span>
-<a name="l00039"></a>00039 <span class="preprocessor">#ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#include <boost/numeric/mtl/mtl.hpp></span>
-<a name="l00041"></a>00041 <span class="preprocessor">#endif</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span>
-<a name="l00043"></a>00043 <span class="preprocessor">#include <vector></span>
-<a name="l00044"></a>00044 <span class="preprocessor">#include <map></span>
-<a name="l00045"></a>00045 
-<a name="l00046"></a>00046 <span class="keyword">namespace </span>viennacl
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048   <span class="keyword">namespace </span>tools
-<a name="l00049"></a>00049   {
-<a name="l00050"></a><a class="code" href="namespaceviennacl_1_1tools_1_1traits.html">00050</a>     <span class="keyword">namespace </span>traits
-<a name="l00051"></a>00051     {
-<a name="l00052"></a>00052       
-<a name="l00053"></a>00053       <span class="comment">//Resize:</span>
-<a name="l00054"></a>00054       <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00055"></a><a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">00055</a>       <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a>(MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, <span class="keywordtype">size_t</span> rows, <span class="keywordtype">size_t</span> cols)
-<a name="l00056"></a>00056       {
-<a name="l00057"></a>00057         matrix.resize(rows, cols); 
-<a name="l00058"></a>00058       }
-<a name="l00059"></a>00059       
-<a name="l00060"></a>00060       <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00061"></a><a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a331bbc1a30fe491fc4416993c336bc06">00061</a>       <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a>(VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, <span class="keywordtype">size_t</span> new_size)
-<a name="l00062"></a>00062       {
-<a name="l00063"></a>00063         vec.resize(new_size); 
-<a name="l00064"></a>00064       }
-<a name="l00065"></a>00065       
-<a name="l00066"></a>00066 <span class="preprocessor">      #ifdef VIENNACL_HAVE_UBLAS  </span>
-<a name="l00067"></a>00067 <span class="preprocessor"></span>      <span class="comment">//ublas needs separate treatment:</span>
-<a name="l00068"></a>00068       <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00069"></a>00069       <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a>(boost::numeric::ublas::compressed_matrix<ScalarType> & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>,
-<a name="l00070"></a>00070                   <span class="keywordtype">size_t</span> rows,
-<a name="l00071"></a>00071                   <span class="keywordtype">size_t</span> cols)
-<a name="l00072"></a>00072       {
-<a name="l00073"></a>00073         matrix.resize(rows, cols, <span class="keyword">false</span>); <span class="comment">//Note: omitting third parameter leads to compile time error (not implemented in ublas <= 1.42) </span>
-<a name="l00074"></a>00074       }
-<a name="l00075"></a>00075 <span class="preprocessor">      #endif  </span>
-<a name="l00076"></a>00076 <span class="preprocessor"></span>      
-<a name="l00077"></a>00077       
-<a name="l00078"></a>00078 <span class="preprocessor">      #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00079"></a>00079 <span class="preprocessor"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00080"></a>00080       <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a>(mtl::compressed2D<ScalarType> & matrix,
-<a name="l00081"></a>00081                   <span class="keywordtype">size_t</span> rows,
-<a name="l00082"></a>00082                   <span class="keywordtype">size_t</span> cols)
-<a name="l00083"></a>00083       {
-<a name="l00084"></a>00084         matrix.change_dim(rows, cols);
-<a name="l00085"></a>00085       }
-<a name="l00086"></a>00086       
-<a name="l00087"></a>00087       <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00088"></a>00088       <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a>(mtl::dense_vector<ScalarType> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00089"></a>00089                   <span class="keywordtype">size_t</span> new_size)
-<a name="l00090"></a>00090       {
-<a name="l00091"></a>00091         vec.change_dim(new_size);
-<a name="l00092"></a>00092       }
-<a name="l00093"></a>00093 <span class="preprocessor">      #endif      </span>
-<a name="l00094"></a>00094 <span class="preprocessor"></span>      
-<a name="l00095"></a>00095       <span class="comment">//clear:</span>
-<a name="l00096"></a>00096       <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00097"></a><a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">00097</a>       <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">clear</a>(VectorType & vec)
-<a name="l00098"></a>00098       {
-<a name="l00099"></a>00099         vec.clear(); 
-<a name="l00100"></a>00100       }
-<a name="l00101"></a>00101       
-<a name="l00102"></a>00102 <span class="preprocessor">      #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00103"></a>00103 <span class="preprocessor"></span>      <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">clear</a>(Eigen::VectorXf & vec) { <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i<vec.size(); ++i) vec[i] = 0; }
-<a name="l00104"></a>00104       <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">clear</a>(Eigen::VectorXd & vec) { <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i<vec.size(); ++i) vec[i] = 0; }
-<a name="l00105"></a>00105 <span class="preprocessor">      #endif</span>
-<a name="l00106"></a>00106 <span class="preprocessor"></span>      
-<a name="l00107"></a>00107 <span class="preprocessor">      #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00108"></a>00108 <span class="preprocessor"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00109"></a>00109       <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">clear</a>(mtl::dense_vector<ScalarType> & vec)
-<a name="l00110"></a>00110       {
-<a name="l00111"></a>00111         <span class="keywordflow">for</span> (<span class="keyword">typename</span> mtl::dense_vector<ScalarType>::size_type i=0;
-<a name="l00112"></a>00112              i<vec.used_memory();
-<a name="l00113"></a>00113              ++i)
-<a name="l00114"></a>00114           vec[i] = 0; 
-<a name="l00115"></a>00115       }
-<a name="l00116"></a>00116 <span class="preprocessor">      #endif</span>
-<a name="l00117"></a>00117 <span class="preprocessor"></span>      
-<a name="l00118"></a>00118       
-<a name="l00119"></a>00119       <span class="comment">//size:</span>
-<a name="l00120"></a>00120       <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00121"></a><a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">00121</a>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(VectorType & vec)
-<a name="l00122"></a>00122       {
-<a name="l00123"></a>00123         <span class="keywordflow">return</span> vec.size(); 
-<a name="l00124"></a>00124       }
-<a name="l00125"></a>00125 
-<a name="l00126"></a>00126 <span class="preprocessor">      #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00127"></a>00127 <span class="preprocessor"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00128"></a>00128       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(mtl::dense_vector<ScalarType> <span class="keyword">const</span> & vec) { <span class="keywordflow">return</span> vec.used_memory(); }
-<a name="l00129"></a>00129 <span class="preprocessor">      #endif</span>
-<a name="l00130"></a>00130 <span class="preprocessor"></span>
-<a name="l00131"></a>00131     }
-<a name="l00132"></a>00132 
-<a name="l00133"></a>00133     
-<a name="l00134"></a>00134     
-<a name="l00135"></a><a class="code" href="namespaceviennacl_1_1tools_1_1result__of.html">00135</a>     <span class="keyword">namespace </span>result_of
-<a name="l00136"></a>00136     {
-<a name="l00137"></a>00137       <span class="comment">//value type:</span>
-<a name="l00138"></a>00138       <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00139"></a><a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">00139</a>       <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type</a>
-<a name="l00140"></a>00140       {
-<a name="l00141"></a><a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">00141</a>         <span class="keyword">typedef</span> <span class="keyword">typename</span> T::value_type    type; 
-<a name="l00142"></a>00142       };
-<a name="l00143"></a>00143       
-<a name="l00144"></a>00144 <span class="preprocessor">    #ifdef VIENNACL_HAVE_EIGEN  </span>
-<a name="l00145"></a>00145 <span class="preprocessor"></span>      <span class="keyword">template</span> <>
-<a name="l00146"></a>00146       <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type</a><Eigen::MatrixXf>
-<a name="l00147"></a>00147       {
-<a name="l00148"></a>00148         <span class="keyword">typedef</span> Eigen::MatrixXf::RealScalar    type; 
-<a name="l00149"></a>00149       };
-<a name="l00150"></a>00150       
-<a name="l00151"></a>00151       <span class="keyword">template</span> <>
-<a name="l00152"></a>00152       <span class="keyword">struct </span>value_type<Eigen::MatrixXd>
-<a name="l00153"></a>00153       {
-<a name="l00154"></a>00154         <span class="keyword">typedef</span> Eigen::MatrixXd::RealScalar    type; 
-<a name="l00155"></a>00155       };
-<a name="l00156"></a>00156 
-<a name="l00157"></a>00157       <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">int</span> option>
-<a name="l00158"></a>00158       <span class="keyword">struct </span>value_type<Eigen::SparseMatrix<ScalarType, option> >
-<a name="l00159"></a>00159       {
-<a name="l00160"></a>00160         <span class="keyword">typedef</span> ScalarType    type; 
-<a name="l00161"></a>00161       };
-<a name="l00162"></a>00162 
-<a name="l00163"></a>00163       <span class="keyword">template</span> <>
-<a name="l00164"></a>00164       <span class="keyword">struct </span>value_type<Eigen::VectorXf>
-<a name="l00165"></a>00165       {
-<a name="l00166"></a>00166         <span class="keyword">typedef</span> Eigen::VectorXf::RealScalar    type; 
-<a name="l00167"></a>00167       };
-<a name="l00168"></a>00168 
-<a name="l00169"></a>00169       <span class="keyword">template</span> <>
-<a name="l00170"></a>00170       <span class="keyword">struct </span>value_type<Eigen::VectorXd>
-<a name="l00171"></a>00171       {
-<a name="l00172"></a>00172         <span class="keyword">typedef</span> Eigen::VectorXd::RealScalar    type; 
-<a name="l00173"></a>00173       };
-<a name="l00174"></a>00174       
-<a name="l00175"></a>00175 <span class="preprocessor">    #endif</span>
-<a name="l00176"></a>00176 <span class="preprocessor"></span>      
-<a name="l00177"></a>00177     }
-<a name="l00178"></a>00178     
-<a name="l00179"></a>00179     
-<a name="l00180"></a>00180     
-<a name="l00181"></a>00181     
-<a name="l00183"></a>00183     <span class="keyword">template</span> <<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00184"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">00184</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER</a><viennacl::<a class="code" href="structviennacl_1_1row__iteration.html" title="A tag indicating iteration along increasing row index of a matrix.">row_iteration</a>, viennacl::matrix<SCALARTYPE, F, ALIGNMENT> >
-<a name="l00185"></a>00185     {
-<a name="l00186"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#ae352c09bbded2dde5b8e14b174a52d9f">00186</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#ae352c09bbded2dde5b8e14b174a52d9f">apply</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & mat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & row, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & col) { ++row; }
-<a name="l00187"></a>00187     };
-<a name="l00188"></a>00188 
-<a name="l00189"></a>00189     <span class="keyword">template</span> <<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00190"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">00190</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER</a><viennacl::<a class="code" href="structviennacl_1_1col__iteration.html" title="A tag indicating iteration along increasing columns index of a matrix.">col_iteration</a>, viennacl::matrix<SCALARTYPE, F, ALIGNMENT> >
-<a name="l00191"></a>00191     {
-<a name="l00192"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html#ae352c09bbded2dde5b8e14b174a52d9f">00192</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html#ae352c09bbded2dde5b8e14b174a52d9f">apply</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & mat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & row, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & col) { ++col; }
-<a name="l00193"></a>00193     };
-<a name="l00194"></a>00194 
-<a name="l00195"></a>00195     
-<a name="l00197"></a>00197     <span class="keyword">template</span> <<span class="keywordtype">bool</span> b, <span class="keyword">class</span> T = <span class="keywordtype">void</span>> 
-<a name="l00198"></a><a class="code" href="structviennacl_1_1tools_1_1enable__if.html">00198</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">enable_if</a>
-<a name="l00199"></a>00199     {
-<a name="l00200"></a><a class="code" href="structviennacl_1_1tools_1_1enable__if.html#a565429e62c1d4fd084335146ba778e17">00200</a>       <span class="keyword">typedef</span> T   type;
-<a name="l00201"></a>00201     };
-<a name="l00202"></a>00202 
-<a name="l00203"></a>00203     <span class="keyword">template</span> <<span class="keyword">class</span> T> 
-<a name="l00204"></a><a class="code" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">00204</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">enable_if</a><false, T> {};
-<a name="l00205"></a>00205     
-<a name="l00206"></a>00206     
-<a name="l00208"></a>00208     <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00209"></a><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">00209</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html" title="A guard that checks whether the floating point type of GPU types is either float or double...">CHECK_SCALAR_TEMPLATE_ARGUMENT</a>
-<a name="l00210"></a>00210     {
-<a name="l00211"></a><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#a465b19472e9fa1cbd9bbd334947c6042">00211</a>         <span class="keyword">typedef</span> <span class="keyword">typename</span> T::ERROR_SCALAR_MUST_HAVE_TEMPLATE_ARGUMENT_FLOAT_OR_DOUBLE  ResultType;
-<a name="l00212"></a>00212     };
-<a name="l00213"></a>00213     
-<a name="l00214"></a>00214     <span class="keyword">template</span> <>
-<a name="l00215"></a><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">00215</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html" title="A guard that checks whether the floating point type of GPU types is either float or double...">CHECK_SCALAR_TEMPLATE_ARGUMENT</a><float>
-<a name="l00216"></a>00216     {
-<a name="l00217"></a><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">00217</a>         <span class="keyword">typedef</span> <span class="keywordtype">float</span>  ResultType;
-<a name="l00218"></a>00218     };
-<a name="l00219"></a>00219     
-<a name="l00220"></a>00220     <span class="keyword">template</span> <>
-<a name="l00221"></a><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">00221</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html" title="A guard that checks whether the floating point type of GPU types is either float or double...">CHECK_SCALAR_TEMPLATE_ARGUMENT</a><double>
-<a name="l00222"></a>00222     {
-<a name="l00223"></a><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">00223</a>         <span class="keyword">typedef</span> <span class="keywordtype">double</span>  ResultType;
-<a name="l00224"></a>00224     };
-<a name="l00225"></a>00225 
-<a name="l00226"></a>00226     
-<a name="l00227"></a>00227     
-<a name="l00233"></a><a class="code" href="namespaceviennacl_1_1tools.html#ae0476afc58ea44d5d67ffe7384f59389">00233</a>     <span class="keyword">inline</span> std::string <a class="code" href="namespaceviennacl_1_1tools.html#ae0476afc58ea44d5d67ffe7384f59389" title="Reads a text from a file into a std::string.">readTextFromFile</a>(<span class="keyword">const</span> std::string & filename)
-<a name="l00234"></a>00234     {
-<a name="l00235"></a>00235       std::ifstream f(filename.c_str());
-<a name="l00236"></a>00236       <span class="keywordflow">if</span> (!f) <span class="keywordflow">return</span> std::string();
-<a name="l00237"></a>00237 
-<a name="l00238"></a>00238       std::stringstream result;
-<a name="l00239"></a>00239       std::string tmp;
-<a name="l00240"></a>00240       <span class="keywordflow">while</span> (std::getline(f, tmp))
-<a name="l00241"></a>00241         result << tmp << std::endl;
-<a name="l00242"></a>00242 
-<a name="l00243"></a>00243       <span class="keywordflow">return</span> result.str();
-<a name="l00244"></a>00244     }
-<a name="l00245"></a>00245 
-<a name="l00253"></a><a class="code" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8">00253</a>     <span class="keyword">inline</span> std::string <a class="code" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8" title="Replaces all occurances of a substring by another stringstream.">strReplace</a>(<span class="keyword">const</span> std::string & text, std::string to_search, std::string to_replace)
-<a name="l00254"></a>00254     {
-<a name="l00255"></a>00255       std::string::size_type pos = 0;
-<a name="l00256"></a>00256       std::string result;
-<a name="l00257"></a>00257       std::string::size_type found;
-<a name="l00258"></a>00258       <span class="keywordflow">while</span>( (found = text.find(to_search, pos)) != std::string::npos )
-<a name="l00259"></a>00259       {
-<a name="l00260"></a>00260         result.append(text.substr(pos,found-pos));
-<a name="l00261"></a>00261         result.append(to_replace);
-<a name="l00262"></a>00262         pos = found + to_search.length();
-<a name="l00263"></a>00263       }
-<a name="l00264"></a>00264       <span class="keywordflow">if</span> (pos < text.length())
-<a name="l00265"></a>00265         result.append(text.substr(pos));
-<a name="l00266"></a>00266       <span class="keywordflow">return</span> result;
-<a name="l00267"></a>00267     }
-<a name="l00268"></a>00268 
-<a name="l00276"></a>00276     <span class="keyword">template</span> <<span class="keyword">class</span> INT_TYPE>
-<a name="l00277"></a><a class="code" href="namespaceviennacl_1_1tools.html#a8422b8f21a3e19bc1dcd4cc3a8447227">00277</a>     INT_TYPE <a class="code" href="namespaceviennacl_1_1tools.html#a8422b8f21a3e19bc1dcd4cc3a8447227" title="Rounds an integer to the next multiple of another integer.">roundUpToNextMultiple</a>(INT_TYPE to_reach, INT_TYPE base)
-<a name="l00278"></a>00278     {
-<a name="l00279"></a>00279       <span class="keywordflow">if</span> (to_reach % base == 0) <span class="keywordflow">return</span> to_reach;
-<a name="l00280"></a>00280       <span class="keywordflow">return</span> ((to_reach / base) + 1) * base;
-<a name="l00281"></a>00281     }
-<a name="l00282"></a>00282     
-<a name="l00283"></a>00283     
-<a name="l00290"></a><a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0">00290</a>     <span class="keyword">inline</span> std::string <a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">make_double_kernel</a>(std::string <span class="keyword">const</span> & source, std::string platform_info)
-<a name="l00291"></a>00291     <span class="comment">//inline std::string make_double_kernel(std::string const & source)</span>
-<a name="l00292"></a>00292     {
-<a name="l00293"></a>00293       std::stringstream ss;
-<a name="l00294"></a>00294       <span class="keywordflow">if</span> (platform_info.compare(0, 8, <span class="stringliteral">"Advanced"</span>) == 0)  <span class="comment">//double precision in Stream SDK is enabled by a non-standard pragma</span>
-<a name="l00295"></a>00295         ss << <span class="stringliteral">"#pragma OPENCL EXTENSION cl_amd_fp64 : enable\n\n"</span>;
-<a name="l00296"></a>00296       <span class="keywordflow">else</span>
-<a name="l00297"></a>00297         ss << <span class="stringliteral">"#pragma OPENCL EXTENSION cl_khr_fp64 : enable\n\n"</span>;
-<a name="l00298"></a>00298       
-<a name="l00299"></a>00299       std::string result = ss.str();
-<a name="l00300"></a>00300       result.append(<a class="code" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8" title="Replaces all occurances of a substring by another stringstream.">strReplace</a>(source, <span class="stringliteral">"float"</span>, <span class="stringliteral">"double"</span>));
-<a name="l00301"></a>00301       <span class="keywordflow">return</span> result;
-<a name="l00302"></a>00302     }
-<a name="l00303"></a>00303     
-<a name="l00304"></a>00304     
-<a name="l00306"></a>00306     <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00307"></a><a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">00307</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html" title="Removes the const qualifier from a type.">CONST_REMOVER</a>
-<a name="l00308"></a>00308     {
-<a name="l00309"></a><a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#a13d3ccc8836027e5b399582861553350">00309</a>       <span class="keyword">typedef</span> T   ResultType;
-<a name="l00310"></a>00310     };
-<a name="l00311"></a>00311 
-<a name="l00312"></a>00312     <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00313"></a><a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">00313</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html" title="Removes the const qualifier from a type.">CONST_REMOVER</a><const T>
-<a name="l00314"></a>00314     {
-<a name="l00315"></a><a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html#a13d3ccc8836027e5b399582861553350">00315</a>       <span class="keyword">typedef</span> T   ResultType;
-<a name="l00316"></a>00316     };
-<a name="l00317"></a>00317 
-<a name="l00318"></a>00318 
-<a name="l00324"></a>00324     <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS>
-<a name="l00325"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">00325</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html" title="Extracts the vector type from one of the two arguments. Used for the vector_expression type...">VECTOR_EXTRACTOR_IMPL</a>
-<a name="l00326"></a>00326     {
-<a name="l00327"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#a9939181a319c04ab48a0d60cbe6e7dd9">00327</a>       <span class="keyword">typedef</span> <span class="keyword">typename</span> LHS::ERROR_COULD_NOT_EXTRACT_VECTOR_INFORMATION_FROM_VECTOR_EXPRESSION  ResultType;
-<a name="l00328"></a>00328     };
-<a name="l00329"></a>00329     
-<a name="l00330"></a>00330     <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00331"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">00331</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html" title="Extracts the vector type from one of the two arguments. Used for the vector_expression type...">VECTOR_EXTRACTOR_IMPL</a><LHS, viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A> >
-<a name="l00332"></a>00332     {
-<a name="l00333"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html#ae695f3958fa24d64fdbaf3e978e0ea1c">00333</a>       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a>   <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">ResultType</a>;
-<a name="l00334"></a>00334     };
-<a name="l00335"></a>00335 
-<a name="l00336"></a>00336     <span class="keyword">template</span> <<span class="keyword">typename</span> RHS, <span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00337"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">00337</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html" title="Extracts the vector type from one of the two arguments. Used for the vector_expression type...">VECTOR_EXTRACTOR_IMPL</a><viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, RHS>
-<a name="l00338"></a>00338     {
-<a name="l00339"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html#ae695f3958fa24d64fdbaf3e978e0ea1c">00339</a>       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a>   <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">ResultType</a>;
-<a name="l00340"></a>00340     };
-<a name="l00341"></a>00341 
-<a name="l00342"></a>00342     <span class="comment">//resolve ambiguities for previous cases:</span>
-<a name="l00343"></a>00343     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00344"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">00344</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html" title="Extracts the vector type from one of the two arguments. Used for the vector_expression type...">VECTOR_EXTRACTOR_IMPL</a><viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A> >
-<a name="l00345"></a>00345     {
-<a name="l00346"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html#ae695f3958fa24d64fdbaf3e978e0ea1c">00346</a>       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a>   <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">ResultType</a>;
-<a name="l00347"></a>00347     };
-<a name="l00348"></a>00348 
-<a name="l00349"></a>00349     <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS>
-<a name="l00350"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">00350</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR</a>
-<a name="l00351"></a>00351     {
-<a name="l00352"></a>00352       <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html" title="Extracts the vector type from one of the two arguments. Used for the vector_expression type...">VECTOR_EXTRACTOR_IMPL<typename CONST_REMOVER<LHS>::ResultType</a>,
-<a name="l00353"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">00353</a>                                               <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#a13d3ccc8836027e5b399582861553350">CONST_REMOVER<RHS>::ResultType</a>><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">::ResultType</a>      ResultType;
-<a name="l00354"></a>00354     };
-<a name="l00355"></a>00355 
-<a name="l00362"></a>00362     <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00363"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">00363</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a>
-<a name="l00364"></a>00364     {
-<a name="l00365"></a>00365       <span class="comment">//take care: using a plain, naive .size() on the left hand side type can cause subtle side-effects!</span>
-<a name="l00366"></a>00366     };
-<a name="l00367"></a>00367 
-<a name="l00368"></a>00368     <span class="comment">//Standard case: LHS is the vector type and carries the correct size</span>
-<a name="l00369"></a>00369     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A, <span class="keyword">typename</span> RHS>
-<a name="l00370"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">00370</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, RHS, viennacl::op_prod>
-<a name="l00371"></a>00371     {
-<a name="l00372"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html#ada291f3a68989aac52d341b8d8e396b3">00372</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> & lhs,
-<a name="l00373"></a>00373                          <span class="keyword">const</span> RHS & rhs) { <span class="keywordflow">return</span> lhs.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>(); }
-<a name="l00374"></a>00374     };
-<a name="l00375"></a>00375 
-<a name="l00376"></a>00376     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A, <span class="keyword">typename</span> RHS>
-<a name="l00377"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">00377</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, RHS, viennacl::op_div>
-<a name="l00378"></a>00378     {
-<a name="l00379"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html#ada291f3a68989aac52d341b8d8e396b3">00379</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> & lhs,
-<a name="l00380"></a>00380                          <span class="keyword">const</span> RHS & rhs) { <span class="keywordflow">return</span> lhs.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>(); }
-<a name="l00381"></a>00381     };
-<a name="l00382"></a>00382     
-<a name="l00383"></a>00383     <span class="comment">//special case: matrix-vector product: Return the number of rows of the matrix</span>
-<a name="l00384"></a>00384     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Amat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00385"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">00385</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a><const viennacl::matrix<ScalarType, F, Amat>, const viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, viennacl::op_prod>
-<a name="l00386"></a>00386     {
-<a name="l00387"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html#ad135912731852cebdfa2c996d57dd4a5">00387</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F, Amat></a> & lhs,
-<a name="l00388"></a>00388                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> & rhs) { <span class="keywordflow">return</span> lhs.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); }
-<a name="l00389"></a>00389     };
-<a name="l00390"></a>00390 
-<a name="l00391"></a>00391     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Amat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00392"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">00392</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><ScalarType, Amat>, const viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, viennacl::op_prod>
-<a name="l00393"></a>00393     {
-<a name="l00394"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html#aba827ef7d82c4a95c0293eac77a9a495">00394</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">viennacl::compressed_matrix<ScalarType, Amat></a> & lhs,
-<a name="l00395"></a>00395                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> & rhs) { <span class="keywordflow">return</span> lhs.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); }
-<a name="l00396"></a>00396     };
-<a name="l00397"></a>00397 
-<a name="l00398"></a>00398     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Amat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00399"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">00399</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a><ScalarType, Amat>, const viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, viennacl::op_prod>
-<a name="l00400"></a>00400     {
-<a name="l00401"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html#aa843af9061cf09ded02f2c5c5edb93e0">00401</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">viennacl::coordinate_matrix<ScalarType, Amat></a> & lhs,
-<a name="l00402"></a>00402                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> & rhs) { <span class="keywordflow">return</span> lhs.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the number of rows.">size1</a>(); }
-<a name="l00403"></a>00403     };
-<a name="l00404"></a>00404     
-<a name="l00405"></a>00405     <span class="comment">//special case: transposed matrix-vector product: Return the number of cols(!) of the matrix</span>
-<a name="l00406"></a>00406     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Amat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00407"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">00407</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const viennacl::matrix<ScalarType, F, Amat>,
-<a name="l00408"></a>00408                                                                   const viennacl::matrix<ScalarType, F, Amat>,
-<a name="l00409"></a>00409                                                                   op_trans>,
-<a name="l00410"></a>00410                                const viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>,
-<a name="l00411"></a>00411                                viennacl::op_prod>
-<a name="l00412"></a>00412     {
-<a name="l00413"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html#afafa70095b248b947c523711ff4cd357">00413</a>       <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F, Amat></a>,
-<a name="l00414"></a>00414                                                             <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F, Amat></a>,
-<a name="l00415"></a>00415                                                             op_trans> & lhs,
-<a name="l00416"></a>00416                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> & rhs) { <span class="keywordflow">return</span> lhs.lhs().size2(); }
-<a name="l00417"></a>00417     };
-<a name="l00418"></a>00418 
-<a name="l00419"></a>00419     
-<a name="l00420"></a>00420     
-<a name="l00421"></a>00421     
-<a name="l00422"></a>00422     
-<a name="l00427"></a>00427     <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00428"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">00428</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">CPU_SCALAR_TYPE_DEDUCER</a>
-<a name="l00429"></a>00429     {
-<a name="l00430"></a>00430       <span class="comment">//force compiler error if type cannot be deduced</span>
-<a name="l00431"></a>00431       <span class="comment">//typedef T       ResultType;</span>
-<a name="l00432"></a>00432     };
-<a name="l00433"></a>00433 
-<a name="l00434"></a>00434     <span class="keyword">template</span> <>
-<a name="l00435"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">00435</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">CPU_SCALAR_TYPE_DEDUCER</a>< float >
-<a name="l00436"></a>00436     {
-<a name="l00437"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">00437</a>       <span class="keyword">typedef</span> <span class="keywordtype">float</span>       ResultType;
-<a name="l00438"></a>00438     };
-<a name="l00439"></a>00439 
-<a name="l00440"></a>00440     <span class="keyword">template</span> <>
-<a name="l00441"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">00441</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">CPU_SCALAR_TYPE_DEDUCER</a>< double >
-<a name="l00442"></a>00442     {
-<a name="l00443"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">00443</a>       <span class="keyword">typedef</span> <span class="keywordtype">double</span>       ResultType;
-<a name="l00444"></a>00444     };
-<a name="l00445"></a>00445     
-<a name="l00446"></a>00446     <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00447"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">00447</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">CPU_SCALAR_TYPE_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar</a><T> >
-<a name="l00448"></a>00448     {
-<a name="l00449"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">00449</a>       <span class="keyword">typedef</span> T       ResultType;
-<a name="l00450"></a>00450     };
-<a name="l00451"></a>00451 
-<a name="l00452"></a>00452     <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00453"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">00453</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">CPU_SCALAR_TYPE_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><T, A> >
-<a name="l00454"></a>00454     {
-<a name="l00455"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">00455</a>       <span class="keyword">typedef</span> T       ResultType;
-<a name="l00456"></a>00456     };
-<a name="l00457"></a>00457 
-<a name="l00458"></a>00458     <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00459"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">00459</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">CPU_SCALAR_TYPE_DEDUCER</a>< viennacl::matrix<T, F, A> >
-<a name="l00460"></a>00460     {
-<a name="l00461"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html#a13d3ccc8836027e5b399582861553350">00461</a>       <span class="keyword">typedef</span> T       ResultType;
-<a name="l00462"></a>00462     };
-<a name="l00463"></a>00463 
-<a name="l00464"></a>00464     
-<a name="l00465"></a>00465     <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00466"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">00466</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar&lt;T&gt;">CPU_SCALAR_TYPE_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a><const matrix<T, F, A>, const matrix<T, F, A>, op_trans> >
-<a name="l00467"></a>00467     {
-<a name="l00468"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html#a13d3ccc8836027e5b399582861553350">00468</a>       <span class="keyword">typedef</span> T       ResultType;
-<a name="l00469"></a>00469     };
-<a name="l00470"></a>00470 
-<a name="l00471"></a>00471         
-<a name="l00472"></a>00472   } <span class="comment">//namespace tools</span>
-<a name="l00473"></a>00473 } <span class="comment">//namespace viennacl</span>
-<a name="l00474"></a>00474     
-<a name="l00475"></a>00475 
-<a name="l00476"></a>00476 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/utils_8hpp.html b/doc/doxygen/html/utils_8hpp.html
deleted file mode 100644
index b633e6a..0000000
--- a/doc/doxygen/html/utils_8hpp.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/utils.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/utils.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include <vector></code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-
-<p><a href="utils_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">DOUBLE_PRECISION_CHECKER< ScalarType ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a <a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> is thrown.  <a href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">DOUBLE_PRECISION_CHECKER< double ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/utils_8hpp_source.html b/doc/doxygen/html/utils_8hpp_source.html
deleted file mode 100644
index fa02cca..0000000
--- a/doc/doxygen/html/utils_8hpp_source.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/utils.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/utils.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="utils_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_OCL_UTILS_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_OCL_UTILS_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028   <span class="keyword">namespace </span>ocl
-<a name="l00029"></a>00029   {
-<a name="l00030"></a>00030     
-<a name="l00033"></a>00033     <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00034"></a><a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">00034</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">DOUBLE_PRECISION_CHECKER</a>
-<a name="l00035"></a>00035     {
-<a name="l00036"></a><a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#acd62521bdbf7f991a885f126413e6f89">00036</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#acd62521bdbf7f991a885f126413e6f89">apply</a>() {} 
-<a name="l00037"></a>00037     };
-<a name="l00038"></a>00038     
-<a name="l00039"></a>00039     <span class="keyword">template</span> <>
-<a name="l00040"></a><a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">00040</a>     <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">DOUBLE_PRECISION_CHECKER</a><double>
-<a name="l00041"></a>00041     {
-<a name="l00042"></a><a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html#acd62521bdbf7f991a885f126413e6f89">00042</a>       <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#acd62521bdbf7f991a885f126413e6f89">apply</a>()
-<a name="l00043"></a>00043       {
-<a name="l00044"></a>00044         <span class="keywordflow">if</span> (!<a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().double_support())
-<a name="l00045"></a>00045           <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">viennacl::ocl::double_precision_not_provided_error</a>();
-<a name="l00046"></a>00046       }
-<a name="l00047"></a>00047     };
-<a name="l00048"></a>00048     
-<a name="l00049"></a>00049     
-<a name="l00050"></a>00050 
-<a name="l00051"></a>00051   } <span class="comment">//ocl</span>
-<a name="l00052"></a>00052 } <span class="comment">//viennacl</span>
-<a name="l00053"></a>00053 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector_8hpp.html b/doc/doxygen/html/vector_8hpp.html
deleted file mode 100644
index 7d69702..0000000
--- a/doc/doxygen/html/vector_8hpp.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/vector.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/vector.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations such as norms and inner products are located in <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">linalg/vector_operations.hpp</a>.  
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="entry__proxy_8hpp_source.html">viennacl/tools/entry_proxy.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector__operations_8hpp_source.html">viennacl/linalg/vector_operations.hpp</a>"</code><br/>
-
-<p><a href="vector_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression< LHS, RHS, OP ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An expression template class that represents a binary operation that yields a vector.  <a href="classviennacl_1_1vector__expression.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated. VERY SLOW!!  <a href="classviennacl_1_1const__vector__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator< SCALARTYPE, ALIGNMENT ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!  <a href="classviennacl_1_1vector__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html">vector< SCALARTYPE, ALIGNMENT ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::vector.  <a href="classviennacl_1_1vector.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a7953e64a62d2209621a3f4a505dc9f9e">copy</a> (const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_begin, const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory.  <a href="#a7953e64a62d2209621a3f4a505dc9f9e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a6713b60b19010992ea611ef7ecd4fdf2">copy</a> (const vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_begin, const vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory.  <a href="#a6713b60b19010992ea611ef7ecd4fdf2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#afb5884675d2f3a9ca1a57a3a722aa78a">copy</a> (vector< SCALARTYPE, ALIGNMENT > const &gpu_vec, CPUVECTOR &cpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a gpu vector to a cpu vector. Convenience wrapper for viennacl::linalg::copy(gpu_vec.begin(), gpu_vec.end(), cpu_vec.begin());.  <a href="#afb5884675d2f3a9ca1a57a3a722aa78a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9c694a91cf3e54637ed6a05ab7d9ce75">fast_copy</a> (const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_begin, const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer of a GPU vector to the CPU. The cpu type is assumed to reside in a linear piece of memory, such as e.g. for std::vector.  <a href="#a9c694a91cf3e54637ed6a05ab7d9ce75"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aad3621936e6071d2777aae22a5f891ec">fast_copy</a> (vector< SCALARTYPE, ALIGNMENT > const &gpu_vec, CPUVECTOR &cpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a gpu vector to a cpu vector. Convenience wrapper for viennacl::linalg::fast_copy(gpu_vec.begin(), gpu_vec.end(), cpu_vec.begin());.  <a href="#aad3621936e6071d2777aae22a5f891ec"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#afb1db189fa5cd8ee4a8222d8b87f3ab0">copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory.  <a href="#afb1db189fa5cd8ee4a8222d8b87f3ab0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a12da6187594db18ae7aa4874e1ad3f1d">copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, const_vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0d4fd919fa235b1c7dabd0049740e774">copy</a> (const CPUVECTOR &cpu_vec, vector< SCALARTYPE, ALIGNMENT > &gpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a cpu vector to a gpu vector. Convenience wrapper for viennacl::linalg::copy(cpu_vec.begin(), cpu_vec.end(), gpu_vec.begin());.  <a href="#a0d4fd919fa235b1c7dabd0049740e774"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9250bb8c996f6eab600899146e0cbf26">fast_copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer of a CPU vector to the GPU. The cpu type is assumed to reside in a linear piece of memory, such as e.g. for std::vector.  <a href="#a9250bb8c996f6eab600899146e0cbf26"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#af7146b5952b3532c74728adc05d4de55">fast_copy</a> (const CPUVECTOR &cpu_vec, vector< SCALARTYPE, ALIGNMENT > &gpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a cpu vector to a gpu vector. Convenience wrapper for viennacl::linalg::fast_copy(cpu_vec.begin(), cpu_vec.end(), gpu_vec.begin());.  <a href="#af7146b5952b3532c74728adc05d4de55"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#af638a30a9dd2001143b4c92072c76d48">copy</a> (const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, vector_iterator< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy (parts of a) GPU vector to another GPU vector.  <a href="#af638a30a9dd2001143b4c92072c76d48"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9164bd549b986f39b035c24a426869b9">copy</a> (const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, const_vector_iterator< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy (parts of a) GPU vector to another GPU vector.  <a href="#a9164bd549b986f39b035c24a426869b9"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ad823fb30fd180da375a1e09d56c0a1b8">copy</a> (vector< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_vec, vector< SCALARTYPE, ALIGNMENT_DEST > &gpu_dest_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a ViennaCL vector to another ViennaCL vector. Convenience wrapper for viennacl::linalg::copy(gpu_src_vec.begin(), gpu_src_vec.end(), gpu_dest_vec.begin());.  <a href="#ad823fb30fd180da375a1e09d56c0a1b8"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a5e572599ddbae8812154538849fa707c">operator<<</a> (std::ostream &s, vector< SCALARTYPE, ALIGNMENT > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Output stream. Output format is ublas compatible.  <a href="#a5e572599ddbae8812154538849fa707c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0c01dfab44c6d3849f7d0eac55539142">swap</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the contents of two vectors, data is copied.  <a href="#a0c01dfab44c6d3849f7d0eac55539142"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a976181b1f6aa698b64a4746f0949fce0">fast_swap</a> (vector< SCALARTYPE, ALIGNMENT > &v1, vector< SCALARTYPE, ALIGNMENT > &v2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the content of two vectors by swapping OpenCL handles only, NO data is copied.  <a href="#a976181b1f6aa698b64a4746f0949fce0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector_expression< const <br class="typebreak"/>
-vector< SCALARTYPE, A >, const <br class="typebreak"/>
-SCALARTYPE, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aa60d7cda126efd13c3413453606850b7">operator*</a> (SCALARTYPE const &value, vector< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the expression alpha * v1, where alpha is a host scalar (float or double) and v1 is a ViennaCL vector.  <a href="#aa60d7cda126efd13c3413453606850b7"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector_expression< const <br class="typebreak"/>
-vector< SCALARTYPE, A >, const <br class="typebreak"/>
-scalar< SCALARTYPE >, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a3b34a609403378a81c3a2589a5418077">operator*</a> (scalar< SCALARTYPE > const &value, vector< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the expression alpha * v1, where alpha is a ViennaCL scalar (float or double) and v1 is a ViennaCL vector.  <a href="#a3b34a609403378a81c3a2589a5418077"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS1 , typename RHS1 , typename OP1 , typename LHS2 , typename RHS2 , typename OP2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector_expression< LHS1, RHS1, <br class="typebreak"/>
-OP1 >::VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659">operator+</a> (vector_expression< LHS1, RHS1, OP1 > const &proxy1, vector_expression< LHS2, RHS2, OP2 > const &proxy2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the addition of two vector expressions.  <a href="#aae3143a0fbb9e586b489cea90acf6659"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS1 , typename RHS1 , typename OP1 , typename LHS2 , typename RHS2 , typename OP2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector_expression< LHS1, RHS1, <br class="typebreak"/>
-OP1 >::VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57">operator-</a> (vector_expression< LHS1, RHS1, OP1 > const &proxy1, vector_expression< LHS2, RHS2, OP2 > const &proxy2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the subtraction of two vector expressions.  <a href="#a77d42d098f9212ba53487deb6ddacf57"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A, typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, A > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0808ef51d9a2d2e1ecbed3d4b63e159f">operator+</a> (vector_expression< LHS, RHS, OP > const &proxy, vector< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the addition of a vector expression from the left, e.g. alpha * vec1 + vec2. Here, alpha * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then added to vec2.  <a href="#a0808ef51d9a2d2e1ecbed3d4b63e159f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A, typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, A > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ae00e47f8124b08cbeb8b7fc9ff537081">operator-</a> (vector_expression< LHS, RHS, OP > const &proxy, vector< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the subtraction of a vector expression from the left, e.g. alpha * vec1 + vec2. Here, alpha * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then added to vec2.  <a href="#ae00e47f8124b08cbeb8b7fc9ff537081"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a00f47d8ad32713f98c6979c245b88cdb">operator*</a> (vector_expression< LHS, RHS, OP > const &proxy, scalar< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the multiplication of a vector expression with a scalar from the right, e.g. (beta * vec1) * alpha. Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the right.  <a href="#a00f47d8ad32713f98c6979c245b88cdb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a3aeb5b431a9c6d0b3af24a1513e8e9ad">operator/</a> (vector_expression< LHS, RHS, OP > const &proxy, scalar< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the division of a vector expression by a scalar from the right, e.g. (beta * vec1) / alpha. Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then divided by alpha.  <a href="#a3aeb5b431a9c6d0b3af24a1513e8e9ad"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a66a24c58d27c6368ac879f4d7cc4cfc9">operator*</a> (scalar< SCALARTYPE > const &val, vector_expression< LHS, RHS, OP > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the multiplication of a vector expression with a ViennaCL scalar from the left, e.g. alpha * (beta * vec1). Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the left.  <a href="#a66a24c58d27c6368ac879f4d7cc4cfc9"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a4522333fedaf508711a5aa02c47e5c7a">operator*</a> (SCALARTYPE val, <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< LHS, RHS, OP > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the multiplication of a vector expression with a host scalar (float or double) from the left, e.g. alpha * (beta * vec1). Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the left.  <a href="#a4522333fedaf508711a5aa02c47e5c7a"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations such as norms and inner products are located in <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">linalg/vector_operations.hpp</a>. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector_8hpp_source.html b/doc/doxygen/html/vector_8hpp_source.html
deleted file mode 100644
index 26a398f..0000000
--- a/doc/doxygen/html/vector_8hpp_source.html
+++ /dev/null
@@ -1,1132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/vector.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/vector.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="vector_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00020"></a>00020 <span class="preprocessor">#ifndef _VIENNACL_VECTOR_HPP_</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_VECTOR_HPP_</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="entry__proxy_8hpp.html" title="A proxy class for entries in a vector.">viennacl/tools/entry_proxy.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a>"</span>
-<a name="l00029"></a>00029 
-<a name="l00030"></a>00030 <span class="keyword">namespace </span>viennacl
-<a name="l00031"></a>00031 {
-<a name="l00032"></a>00032     
-<a name="l00045"></a>00045     <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00046"></a><a class="code" href="classviennacl_1_1vector__expression.html">00046</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>
-<a name="l00047"></a>00047     {
-<a name="l00048"></a>00048       <span class="keyword">public</span>:
-<a name="l00051"></a><a class="code" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067">00051</a>         <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">viennacl::tools::VECTOR_EXTRACTOR<LHS, RHS>::ResultType</a>    VectorType;
-<a name="l00052"></a>00052       
-<a name="l00053"></a><a class="code" href="classviennacl_1_1vector__expression.html#a47b51aeee8120fa441f37d71f56b12c7">00053</a>         <a class="code" href="classviennacl_1_1vector__expression.html#a47b51aeee8120fa441f37d71f56b12c7">vector_expression</a>(LHS & <a class="code" href="classviennacl_1_1vector__expression.html#abb680866089de4e937ddc6ce6f1f1830" title="Get left hand side operand.">lhs</a>, RHS & <a class="code" href="classviennacl_1_1vector__expression.html#a563f5aecaa0755006225235e44a11a82" title="Get right hand side operand.">rhs</a>) : _lhs(lhs), _rhs(rhs) {}
-<a name="l00054"></a>00054         
-<a name="l00057"></a><a class="code" href="classviennacl_1_1vector__expression.html#abb680866089de4e937ddc6ce6f1f1830">00057</a>         LHS & <a class="code" href="classviennacl_1_1vector__expression.html#abb680866089de4e937ddc6ce6f1f1830" title="Get left hand side operand.">lhs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _lhs; }
-<a name="l00060"></a><a class="code" href="classviennacl_1_1vector__expression.html#a563f5aecaa0755006225235e44a11a82">00060</a>         RHS & <a class="code" href="classviennacl_1_1vector__expression.html#a563f5aecaa0755006225235e44a11a82" title="Get right hand side operand.">rhs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _rhs; }
-<a name="l00061"></a>00061         
-<a name="l00063"></a><a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812">00063</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">viennacl::tools::VECTOR_SIZE_DEDUCER<LHS, RHS, OP>::size</a>(_lhs, _rhs); }
-<a name="l00064"></a>00064         
-<a name="l00065"></a>00065       <span class="keyword">private</span>:
-<a name="l00067"></a>00067         LHS & _lhs;
-<a name="l00069"></a>00069         RHS & _rhs;
-<a name="l00070"></a>00070     };
-<a name="l00071"></a>00071     
-<a name="l00090"></a>00090     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00091"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html">00091</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator</a>
-<a name="l00092"></a>00092     {
-<a name="l00093"></a>00093         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a>    <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a>;
-<a name="l00094"></a>00094       <span class="keyword">public</span>:
-<a name="l00095"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#ae59e37ebbe3a193fa2dd307e94d99518">00095</a>         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>            <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a>;
-<a name="l00096"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">00096</a>         <span class="keyword">typedef</span> <span class="keywordtype">long</span>                          difference_type;
-<a name="l00097"></a>00097         
-<a name="l00098"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#ac6a7762dba62eaf3d6379fc12481b559">00098</a>         <a class="code" href="classviennacl_1_1const__vector__iterator.html#ac6a7762dba62eaf3d6379fc12481b559">const_vector_iterator</a>() {};
-<a name="l00103"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#aa8e2e53d1a9740dc9a7e5dc30b03734b">00103</a>         <a class="code" href="classviennacl_1_1const__vector__iterator.html#aa8e2e53d1a9740dc9a7e5dc30b03734b" title="Constructor.">const_vector_iterator</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,      cl_uint <a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>)  : <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">elements_</a>(vec.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">handle</a>()), <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>(index) {};
-<a name="l00104"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a9cf058c9dc4e611bc1a4c0690fe02492">00104</a>         <a class="code" href="classviennacl_1_1const__vector__iterator.html#a9cf058c9dc4e611bc1a4c0690fe02492">const_vector_iterator</a>(<a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <span class="keyword">const</span> & elements, cl_uint <a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>)  : <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">elements_</a>(elements), <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>(index) {};
-<a name="l00105"></a>00105 
-<a name="l00106"></a>00106         
-<a name="l00107"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a832e184e247b97ecb752bf291d814dff">00107</a>         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a832e184e247b97ecb752bf291d814dff">operator*</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>
-<a name="l00108"></a>00108 <span class="keyword">        </span>{ 
-<a name="l00109"></a>00109            <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a> result;
-<a name="l00110"></a>00110            result = <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>, <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">elements_</a>);
-<a name="l00111"></a>00111            <span class="keywordflow">return</span> result;
-<a name="l00112"></a>00112         }
-<a name="l00113"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a0b50df67a5cd6493e8839fd8990500a7">00113</a>         <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a0b50df67a5cd6493e8839fd8990500a7">operator++</a>(<span class="keywordtype">void</span>) { ++<a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00114"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a39f7c37604fd9845ff487b36b6f88602">00114</a>         <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a39f7c37604fd9845ff487b36b6f88602">operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> tmp = *<span class="keyword">this</span>; ++(*this); <span class="keywordflow">return</span> tmp; }
-<a name="l00115"></a>00115         
-<a name="l00116"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">00116</a>         <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">operator==</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a> == other.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>; }
-<a name="l00117"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">00117</a>         <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">operator!=</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a> != other.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>; }
-<a name="l00118"></a>00118         
-<a name="l00119"></a>00119 <span class="comment">//        self_type & operator=(self_type const & other)</span>
-<a name="l00120"></a>00120 <span class="comment">//        {</span>
-<a name="l00121"></a>00121 <span class="comment">//           _index = other._index;</span>
-<a name="l00122"></a>00122 <span class="comment">//           elements_ = other._elements;</span>
-<a name="l00123"></a>00123 <span class="comment">//           return *this;</span>
-<a name="l00124"></a>00124 <span class="comment">//        }   </span>
-<a name="l00125"></a>00125 
-<a name="l00126"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#aec7de6121b5440524976b3baf978fb5c">00126</a>         <a class="code" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#aec7de6121b5440524976b3baf978fb5c">operator-</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const </span>{ <a class="code" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> result = <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>; <span class="keywordflow">return</span> result - other.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>; }
-<a name="l00127"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a63fe5e79738641bc4c5fd1f07740e3c7">00127</a>         <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a63fe5e79738641bc4c5fd1f07740e3c7">operator+</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> diff)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">elements_</a>, <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a> + diff); }
-<a name="l00128"></a>00128         
-<a name="l00129"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">00129</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>; }
-<a name="l00130"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">00130</a>         <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">elements_</a>; }
-<a name="l00131"></a>00131 
-<a name="l00132"></a>00132       <span class="keyword">protected</span>:
-<a name="l00134"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc">00134</a>         <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">elements_</a>;
-<a name="l00135"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">00135</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>;
-<a name="l00136"></a>00136     };
-<a name="l00137"></a>00137     
-<a name="l00138"></a>00138 
-<a name="l00158"></a>00158     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00159"></a><a class="code" href="classviennacl_1_1vector__iterator.html">00159</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator</a> : <span class="keyword">public</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator</a><SCALARTYPE, ALIGNMENT>
-<a name="l00160"></a>00160     {
-<a name="l00161"></a>00161         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a>  <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a>;
-<a name="l00162"></a>00162         <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a>        <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a>;
-<a name="l00163"></a>00163       <span class="keyword">public</span>:
-<a name="l00164"></a><a class="code" href="classviennacl_1_1vector__iterator.html#a870d4c95600057004f7f4022a87bcf2a">00164</a>         <a class="code" href="classviennacl_1_1vector__iterator.html#a870d4c95600057004f7f4022a87bcf2a">vector_iterator</a>() : <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a>(){};
-<a name="l00165"></a><a class="code" href="classviennacl_1_1vector__iterator.html#a85d26854f63fc4da7b9f64f1dc1885b6">00165</a>         <a class="code" href="classviennacl_1_1vector__iterator.html#a85d26854f63fc4da7b9f64f1dc1885b6">vector_iterator</a>(<a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <span class="keyword">const</span> & elements, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>)  : <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a>(elements, index) {};
-<a name="l00170"></a><a class="code" href="classviennacl_1_1vector__iterator.html#ab2e550b8717745228f53d20fa8cd4a88">00170</a>         <a class="code" href="classviennacl_1_1vector__iterator.html#ab2e550b8717745228f53d20fa8cd4a88" title="Constructor.">vector_iterator</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, cl_uint <a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>) : <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a>(vec, index) {};
-<a name="l00171"></a><a class="code" href="classviennacl_1_1vector__iterator.html#ad856d30aabbab284be47dcf0a38c0693">00171</a>         <a class="code" href="classviennacl_1_1vector__iterator.html#ad856d30aabbab284be47dcf0a38c0693">vector_iterator</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a> <span class="keyword">const</span> & b) : <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a>(b) {};
-<a name="l00172"></a>00172 
-<a name="l00173"></a><a class="code" href="classviennacl_1_1vector__iterator.html#aca896a4673a17317ad7068e8b769a6c8">00173</a>         <span class="keyword">typename</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">base_type::value_type</a> <a class="code" href="classviennacl_1_1vector__iterator.html#aca896a4673a17317ad7068e8b769a6c8">operator*</a>(<span class="keywordtype">void</span>)  
-<a name="l00174"></a>00174         { 
-<a name="l00175"></a>00175            <span class="keyword">typename</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">base_type::value_type</a> result;
-<a name="l00176"></a>00176            result = <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">base_type::index_</a>, <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">base_type::elements_</a>); 
-<a name="l00177"></a>00177            <span class="keywordflow">return</span> result;
-<a name="l00178"></a>00178         }
-<a name="l00179"></a>00179         
-<a name="l00180"></a><a class="code" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">00180</a>         <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <a class="code" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">handle</a>() { <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">base_type::elements_</a>; }
-<a name="l00181"></a>00181         
-<a name="l00182"></a><a class="code" href="classviennacl_1_1vector__iterator.html#a327ab3f759dae4072bfabbef27d7a981">00182</a>         <a class="code" href="classviennacl_1_1vector__iterator.html#a327ab3f759dae4072bfabbef27d7a981">operator base_type</a>()<span class="keyword"> const</span>
-<a name="l00183"></a>00183 <span class="keyword">        </span>{
-<a name="l00184"></a>00184           <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">base_type::elements_</a>, <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">base_type::index_</a>);
-<a name="l00185"></a>00185         }
-<a name="l00186"></a>00186     };
-<a name="l00187"></a>00187 
-<a name="l00188"></a>00188     <span class="comment">// forward definition in VCLForwards.h!</span>
-<a name="l00197"></a>00197 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00198"></a><a class="code" href="classviennacl_1_1vector.html">00198</a>     <span class="keyword">class </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>
-<a name="l00199"></a>00199     {
-<a name="l00200"></a>00200       
-<a name="l00201"></a>00201     <span class="keyword">public</span>:
-<a name="l00202"></a><a class="code" href="classviennacl_1_1vector.html#aed985c700866b1bae61cb8bcd5d322fe">00202</a>       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<typename viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT<SCALARTYPE>::ResultType</a>>   <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a>;
-<a name="l00203"></a><a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">00203</a>       <span class="keyword">typedef</span> <a class="code" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">vcl_size_t</a>                                        size_type;
-<a name="l00204"></a><a class="code" href="classviennacl_1_1vector.html#a1d7ed47a15fea60d02986112826f40bc">00204</a>       <span class="keyword">typedef</span> <a class="code" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">vcl_ptrdiff_t</a>                                     difference_type;
-<a name="l00205"></a><a class="code" href="classviennacl_1_1vector.html#a5b0cecdbbf962357b5dc5f79dcae2d66">00205</a>       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a>      <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_iterator</a>;
-<a name="l00206"></a><a class="code" href="classviennacl_1_1vector.html#a589223a5e682b4a61d57bb8742b1cec9">00206</a>       <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a>            <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">iterator</a>;
-<a name="l00207"></a>00207 
-<a name="l00210"></a><a class="code" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383">00210</a>       <a class="code" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383" title="Default constructor in order to be compatible with various containers.">vector</a>() : size_(0) { viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::init();  }
-<a name="l00211"></a>00211 
-<a name="l00216"></a><a class="code" href="classviennacl_1_1vector.html#a37af05b711e0806bd57ae6e4adfeb46e">00216</a>       <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383" title="Default constructor in order to be compatible with various containers.">vector</a>(<a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> vec_size) : size_(vec_size)
-<a name="l00217"></a>00217       {
-<a name="l00218"></a>00218         viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::init(); 
-<a name="l00219"></a>00219         
-<a name="l00220"></a>00220         <span class="keywordflow">if</span> (size_ > 0)
-<a name="l00221"></a>00221           elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00222"></a>00222         
-<a name="l00223"></a>00223         <span class="comment">//force entries above size_ to zero:</span>
-<a name="l00224"></a>00224         <span class="keywordflow">if</span> (size_ < <a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())
-<a name="l00225"></a>00225         {
-<a name="l00226"></a>00226           std::vector<SCALARTYPE> temp(<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>() - size_);
-<a name="l00227"></a>00227           cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>(), elements_, CL_TRUE, <span class="keyword">sizeof</span>(SCALARTYPE)*size_, <span class="keyword">sizeof</span>(SCALARTYPE)*(<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>() - size_), &(temp[0]), 0, NULL, NULL);
-<a name="l00228"></a>00228           <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00229"></a>00229           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00230"></a>00230         }
-<a name="l00231"></a>00231       }
-<a name="l00232"></a>00232 
-<a name="l00241"></a><a class="code" href="classviennacl_1_1vector.html#ae8ca03c5bcafbb1520e7382e8ac0050d">00241</a>       <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383" title="Default constructor in order to be compatible with various containers.">vector</a>(cl_mem existing_mem, <a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> vec_size) : size_(vec_size),  elements_(existing_mem)
-<a name="l00242"></a>00242       {
-<a name="l00243"></a>00243         elements_.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>();  <span class="comment">//prevents that the user-provided memory is deleted once the vector object is destroyed.</span>
-<a name="l00244"></a>00244       }
-<a name="l00245"></a>00245       
-<a name="l00246"></a>00246       <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00247"></a><a class="code" href="classviennacl_1_1vector.html#a90f2d2832c55e1631a0cf00bc61c9a3d">00247</a>       <a class="code" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383" title="Default constructor in order to be compatible with various containers.">vector</a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression<LHS, RHS, OP></a> <span class="keyword">const</span> & other) : size_(other.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>())
-<a name="l00248"></a>00248       {
-<a name="l00249"></a>00249         elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE)*other.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l00250"></a>00250         *<span class="keyword">this</span> = other;
-<a name="l00251"></a>00251       }
-<a name="l00252"></a>00252       
-<a name="l00257"></a><a class="code" href="classviennacl_1_1vector.html#abcd7469cb88bdf2e0f146b73ef567887">00257</a>       <a class="code" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383" title="Default constructor in order to be compatible with various containers.">vector</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>) :
-<a name="l00258"></a>00258         size_(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>())
-<a name="l00259"></a>00259       {
-<a name="l00260"></a>00260         viennacl::linalg::kernels::vector<SCALARTYPE, 1>::init(); 
-<a name="l00261"></a>00261         
-<a name="l00262"></a>00262         <span class="keywordflow">if</span> (<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() != 0)
-<a name="l00263"></a>00263         {
-<a name="l00264"></a>00264           elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00265"></a>00265           cl_int err;
-<a name="l00266"></a>00266           err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>(), vec.<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>(), elements_, 0, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), 0, NULL, NULL);
-<a name="l00267"></a>00267           <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00268"></a>00268           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00269"></a>00269         }
-<a name="l00270"></a>00270       }
-<a name="l00271"></a>00271 
-<a name="l00274"></a><a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c">00274</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if &#39;vec&#39; is of a different size.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00275"></a>00275       {
-<a name="l00276"></a>00276         <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00277"></a>00277         <span class="keywordflow">if</span> (<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() != 0)
-<a name="l00278"></a>00278         {
-<a name="l00279"></a>00279           cl_int err;
-<a name="l00280"></a>00280           err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>(), vec.<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>(), elements_, 0, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), 0, NULL, NULL);
-<a name="l00281"></a>00281           <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00282"></a>00282         }
-<a name="l00283"></a>00283         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00284"></a>00284       }
-<a name="l00285"></a>00285 
-<a name="l00286"></a>00286 
-<a name="l00291"></a>00291       <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>   <span class="comment">//use template to cover const/non-const of VectorType:</span>
-<a name="l00292"></a><a class="code" href="classviennacl_1_1vector.html#ac4770655192f11ccca15bbd39219d725">00292</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if &#39;vec&#39; is of a different size.">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< VectorType,
-<a name="l00293"></a>00293                                                                            <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00294"></a>00294                                                                            op_prod> & proxy)
-<a name="l00295"></a>00295       {
-<a name="l00296"></a>00296         <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(proxy.lhs().size());
-<a name="l00297"></a>00297         <span class="comment">//std::cout << "vector::operator=(vec_times_scalar_proxy)" << std::endl; </span>
-<a name="l00298"></a>00298         <a class="code" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">viennacl::linalg::mult</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00299"></a>00299         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00300"></a>00300       }
-<a name="l00301"></a>00301 
-<a name="l00306"></a>00306       <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>   <span class="comment">//use template to cover const/non-const of VectorType:</span>
-<a name="l00307"></a><a class="code" href="classviennacl_1_1vector.html#ae91c07bfd48f22c8ea54d42583c3611f">00307</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if &#39;vec&#39; is of a different size.">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< VectorType,
-<a name="l00308"></a>00308                                                                            <span class="keyword">const</span> SCALARTYPE,
-<a name="l00309"></a>00309                                                                            op_prod> & proxy)
-<a name="l00310"></a>00310       {
-<a name="l00311"></a>00311         <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(proxy.lhs().size());
-<a name="l00312"></a>00312         <a class="code" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">viennacl::linalg::mult</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00313"></a>00313         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00314"></a>00314       }
-<a name="l00315"></a>00315 
-<a name="l00320"></a>00320       <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>   <span class="comment">//use template to cover const/non-const of VectorType:</span>
-<a name="l00321"></a><a class="code" href="classviennacl_1_1vector.html#a2cb54ea322ec4f89df8b798350c84f1b">00321</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if &#39;vec&#39; is of a different size.">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< VectorType,
-<a name="l00322"></a>00322                                                                            <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00323"></a>00323                                                                            op_div> & proxy)
-<a name="l00324"></a>00324       {
-<a name="l00325"></a>00325         <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(proxy.lhs().size());
-<a name="l00326"></a>00326         <span class="comment">//std::cout << "vector::operator=(vec_times_scalar_proxy)" << std::endl; </span>
-<a name="l00327"></a>00327         <a class="code" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">viennacl::linalg::divide</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00328"></a>00328         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00329"></a>00329       }
-<a name="l00330"></a>00330 
-<a name="l00335"></a>00335       <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>   <span class="comment">//use template to cover const/non-const of VectorType:</span>
-<a name="l00336"></a><a class="code" href="classviennacl_1_1vector.html#a4a926e47e610c69c69d0f37a858cc69b">00336</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if &#39;vec&#39; is of a different size.">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< VectorType,
-<a name="l00337"></a>00337                                                                            <span class="keyword">const</span> SCALARTYPE,
-<a name="l00338"></a>00338                                                                            op_div> & proxy)
-<a name="l00339"></a>00339       {
-<a name="l00340"></a>00340         <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(proxy.lhs().size());
-<a name="l00341"></a>00341         <span class="comment">//std::cout << "vector::operator=(vec_times_scalar_proxy)" << std::endl; </span>
-<a name="l00342"></a>00342         <a class="code" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">viennacl::linalg::mult</a>(proxy.lhs(), <span class="keyword">static_cast<</span>SCALARTYPE<span class="keyword">></span>(1.0) / proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00343"></a>00343         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00344"></a>00344       }
-<a name="l00345"></a>00345 
-<a name="l00346"></a>00346       <span class="comment">//v1 = v2 + v3; </span>
-<a name="l00351"></a><a class="code" href="classviennacl_1_1vector.html#a77b68e4bfde82a92f70728c40b652f03">00351</a> <span class="comment"></span>      <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if &#39;vec&#39; is of a different size.">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00352"></a>00352                                                                            <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00353"></a>00353                                                                            op_add> & proxy)
-<a name="l00354"></a>00354       {
-<a name="l00355"></a>00355         <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(proxy.lhs().size());
-<a name="l00356"></a>00356         <span class="comment">//std::cout << "vector::operator=(vec_times_scalar_proxy)" << std::endl; </span>
-<a name="l00357"></a>00357         <a class="code" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f" title="Adds two dense matrices and writes the result to a third matrix.">viennacl::linalg::add</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00358"></a>00358         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00359"></a>00359       }
-<a name="l00360"></a>00360       
-<a name="l00361"></a>00361       <span class="comment">//v1 = v2 - v3; </span>
-<a name="l00366"></a><a class="code" href="classviennacl_1_1vector.html#a5bcfcbcb1d03f00ee8942a39e881207f">00366</a> <span class="comment"></span>      <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if &#39;vec&#39; is of a different size.">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00367"></a>00367                                                                            <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00368"></a>00368                                                                            op_sub> & proxy)
-<a name="l00369"></a>00369       {
-<a name="l00370"></a>00370         <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(proxy.lhs().size());
-<a name="l00371"></a>00371         <span class="comment">//std::cout << "vector::operator=(vec_times_scalar_proxy)" << std::endl; </span>
-<a name="l00372"></a>00372         <a class="code" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e" title="Adds two dense matrices and writes the result to a third matrix.">viennacl::linalg::sub</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00373"></a>00373         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00374"></a>00374       }
-<a name="l00375"></a>00375       
-<a name="l00377"></a>00377 
-<a name="l00378"></a>00378       <span class="comment">//Note: The following operator overloads are defined in matrix_operations.hpp, compressed_matrix_operations.hpp and coordinate_matrix_operations.hpp</span>
-<a name="l00379"></a>00379       <span class="comment">//This is certainly not the nicest approach and will most likely by changed in the future, but it works :-)</span>
-<a name="l00380"></a>00380       
-<a name="l00381"></a>00381       <span class="comment">//matrix<></span>
-<a name="l00386"></a>00386 <span class="comment"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00387"></a>00387       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if &#39;vec&#39; is of a different size.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00388"></a>00388                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00389"></a>00389                                                 op_prod> & proxy);
-<a name="l00390"></a>00390 
-<a name="l00395"></a>00395       <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00396"></a>00396       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00397"></a>00397                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00398"></a>00398                                                                           op_prod> & proxy);
-<a name="l00399"></a>00399                                                 
-<a name="l00404"></a>00404       <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00405"></a>00405       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00406"></a>00406                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00407"></a>00407                                                                           op_prod> & proxy);
-<a name="l00408"></a>00408 
-<a name="l00413"></a>00413       <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00414"></a>00414       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00415"></a>00415                                                                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00416"></a>00416                                                                        op_prod> & proxy);
-<a name="l00417"></a>00417 
-<a name="l00422"></a>00422       <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00423"></a>00423       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00424"></a>00424                                                                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00425"></a>00425                                                                        op_prod> & proxy);
-<a name="l00426"></a>00426 
-<a name="l00427"></a>00427       <span class="comment">//transposed_matrix_proxy:</span>
-<a name="l00432"></a>00432 <span class="comment"></span>      <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00433"></a>00433       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if &#39;vec&#39; is of a different size.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00434"></a>00434                                                                                                   <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00435"></a>00435                                                                                                   op_trans >,
-<a name="l00436"></a>00436                                                                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00437"></a>00437                                                                          op_prod> & proxy);
-<a name="l00438"></a>00438 
-<a name="l00443"></a>00443       <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00444"></a>00444       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00445"></a>00445                                                                                                    <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00446"></a>00446                                                                                                    op_trans >,
-<a name="l00447"></a>00447                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00448"></a>00448                                                                           op_prod> & proxy);
-<a name="l00449"></a>00449                                                 
-<a name="l00454"></a>00454       <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00455"></a>00455       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00456"></a>00456                                                                                                    <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00457"></a>00457                                                                                                    op_trans >,
-<a name="l00458"></a>00458                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00459"></a>00459                                                                           op_prod> & proxy);
-<a name="l00460"></a>00460 
-<a name="l00465"></a>00465       <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00466"></a>00466       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00467"></a>00467                                                                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00468"></a>00468                                                                                                 op_trans >,
-<a name="l00469"></a>00469                                                                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00470"></a>00470                                                                        op_prod> & proxy);
-<a name="l00471"></a>00471 
-<a name="l00476"></a>00476       <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00477"></a>00477       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00478"></a>00478                                                                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00479"></a>00479                                                                                                 op_trans >,
-<a name="l00480"></a>00480                                                                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00481"></a>00481                                                                        op_prod> & proxy);
-<a name="l00482"></a>00482                                                                        
-<a name="l00483"></a>00483                                                                        
-<a name="l00484"></a>00484                                                                        
-<a name="l00486"></a>00486 
-<a name="l00490"></a>00490       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00491"></a>00491       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if &#39;vec&#39; is of a different size.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00492"></a>00492                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00493"></a>00493                                                 op_prod> & proxy);
-<a name="l00494"></a>00494 
-<a name="l00499"></a>00499       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00500"></a>00500       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00501"></a>00501                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00502"></a>00502                                                                           op_prod> & proxy);
-<a name="l00503"></a>00503                                                 
-<a name="l00508"></a>00508       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00509"></a>00509       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00510"></a>00510                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00511"></a>00511                                                                           op_prod> & proxy);
-<a name="l00512"></a>00512 
-<a name="l00517"></a>00517       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00518"></a>00518       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00519"></a>00519                                                                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00520"></a>00520                                                                        op_prod> & proxy);
-<a name="l00521"></a>00521 
-<a name="l00526"></a>00526       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00527"></a>00527       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00528"></a>00528                                                                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00529"></a>00529                                                                        op_prod> & proxy);
-<a name="l00530"></a>00530 
-<a name="l00531"></a>00531 
-<a name="l00532"></a>00532       <span class="comment">//coordinate_matrix<></span>
-<a name="l00537"></a>00537 <span class="comment"></span>      <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00538"></a>00538       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if &#39;vec&#39; is of a different size.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00539"></a>00539                                                 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00540"></a>00540                                                 op_prod> & proxy);
-<a name="l00541"></a>00541 
-<a name="l00546"></a>00546       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00547"></a>00547       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00548"></a>00548                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00549"></a>00549                                                                           op_prod> & proxy);
-<a name="l00550"></a>00550                                                 
-<a name="l00555"></a>00555       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00556"></a>00556       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00557"></a>00557                                                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00558"></a>00558                                                                           op_prod> & proxy);
-<a name="l00559"></a>00559 
-<a name="l00564"></a>00564       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00565"></a>00565       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00566"></a>00566                                                                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00567"></a>00567                                                                        op_prod> & proxy);
-<a name="l00568"></a>00568 
-<a name="l00573"></a>00573       <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00574"></a>00574       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00575"></a>00575                                                                        <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00576"></a>00576                                                                        op_prod> & proxy);
-<a name="l00577"></a>00577 
-<a name="l00579"></a>00579 
-<a name="l00580"></a>00580       <span class="comment">//enlarge or reduce allocated memory and set unused memory to zero</span>
-<a name="l00586"></a><a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c">00586</a> <span class="comment"></span>      <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(<a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> new_size, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>)
-<a name="l00587"></a>00587       {
-<a name="l00588"></a>00588         assert(new_size > 0);
-<a name="l00589"></a>00589         
-<a name="l00590"></a>00590         <span class="keywordflow">if</span> (new_size != size_)
-<a name="l00591"></a>00591         {
-<a name="l00592"></a>00592           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_internal_size = viennacl::tools::roundUpToNextMultiple<unsigned int>(new_size, ALIGNMENT);
-<a name="l00593"></a>00593         
-<a name="l00594"></a>00594           std::vector<SCALARTYPE> temp(size_);
-<a name="l00595"></a>00595           <span class="keywordflow">if</span> (preserve && size_ > 0)
-<a name="l00596"></a>00596             <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(*<span class="keyword">this</span>, temp);
-<a name="l00597"></a>00597           temp.resize(new_size);  <span class="comment">//drop all entries above new_size</span>
-<a name="l00598"></a>00598           temp.resize(new_internal_size); <span class="comment">//enlarge to fit new internal size</span>
-<a name="l00599"></a>00599           
-<a name="l00600"></a>00600           <span class="keywordflow">if</span> (new_internal_size != <a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())
-<a name="l00601"></a>00601           {
-<a name="l00602"></a>00602             elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE)*new_internal_size);
-<a name="l00603"></a>00603           }
-<a name="l00604"></a>00604           
-<a name="l00605"></a>00605           <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(temp, *<span class="keyword">this</span>);
-<a name="l00606"></a>00606           size_ = new_size;
-<a name="l00607"></a>00607         }
-<a name="l00608"></a>00608         
-<a name="l00609"></a>00609       }
-<a name="l00610"></a>00610       
-<a name="l00611"></a>00611 
-<a name="l00612"></a>00612       <span class="comment">//read-write access to an element of the vector</span>
-<a name="l00615"></a><a class="code" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03">00615</a> <span class="comment"></span>      <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a> <a class="code" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03" title="Read-write access to a single element of the vector.">operator()</a>(<a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index)
-<a name="l00616"></a>00616       {
-<a name="l00617"></a>00617         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a>(index, elements_);
-<a name="l00618"></a>00618       }
-<a name="l00619"></a>00619 
-<a name="l00622"></a><a class="code" href="classviennacl_1_1vector.html#af8f3f9c5c359c354201a0e4386b4cfcc">00622</a>       <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a> <a class="code" href="classviennacl_1_1vector.html#af8f3f9c5c359c354201a0e4386b4cfcc" title="Read-write access to a single element of the vector.">operator[]</a>(<a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index)
-<a name="l00623"></a>00623       {
-<a name="l00624"></a>00624         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a>(index, elements_);
-<a name="l00625"></a>00625       }
-<a name="l00626"></a>00626 
-<a name="l00627"></a>00627 
-<a name="l00630"></a><a class="code" href="classviennacl_1_1vector.html#a2de1bb775af4a87ce0b792154700c414">00630</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <a class="code" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03" title="Read-write access to a single element of the vector.">operator()</a>(<a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index)<span class="keyword"> const</span>
-<a name="l00631"></a>00631 <span class="keyword">      </span>{
-<a name="l00632"></a>00632         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> tmp;
-<a name="l00633"></a>00633         cl_int err;
-<a name="l00634"></a>00634         err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>(), elements_, tmp.<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <span class="keyword">sizeof</span>(SCALARTYPE)*index, 0, <span class="keyword">sizeof</span>(SCALARTYPE), 0, NULL, NULL);
-<a name="l00635"></a>00635         <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00636"></a>00636         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00637"></a>00637         <span class="keywordflow">return</span> tmp;
-<a name="l00638"></a>00638       }
-<a name="l00639"></a>00639       
-<a name="l00642"></a><a class="code" href="classviennacl_1_1vector.html#acd1666d8bd98191443b3b62f0944a822">00642</a>       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <a class="code" href="classviennacl_1_1vector.html#af8f3f9c5c359c354201a0e4386b4cfcc" title="Read-write access to a single element of the vector.">operator[]</a>(<a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index)<span class="keyword"> const</span>
-<a name="l00643"></a>00643 <span class="keyword">      </span>{
-<a name="l00644"></a>00644         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03" title="Read-write access to a single element of the vector.">operator()</a>(index);
-<a name="l00645"></a>00645       }
-<a name="l00646"></a>00646       
-<a name="l00649"></a><a class="code" href="classviennacl_1_1vector.html#a87bf465ad5a49ddd749505935d931db3">00649</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00650"></a>00650       {
-<a name="l00651"></a>00651         <a class="code" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950" title="Adds a dense matrix to another.">viennacl::linalg::inplace_add</a>(*<span class="keyword">this</span>, vec);
-<a name="l00652"></a>00652         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00653"></a>00653       }
-<a name="l00654"></a>00654 
-<a name="l00657"></a><a class="code" href="classviennacl_1_1vector.html#abe21f33c50e397aeefd7d075ce85d259">00657</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00658"></a>00658                                                                            <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00659"></a>00659                                                                            op_prod> & proxy)
-<a name="l00660"></a>00660       {
-<a name="l00661"></a>00661         <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00662"></a>00662         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00663"></a>00663       }
-<a name="l00664"></a>00664 
-<a name="l00667"></a><a class="code" href="classviennacl_1_1vector.html#a7aeced050a63cc0314a993d12330d2ab">00667</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00668"></a>00668                                                                            <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00669"></a>00669                                                                            op_prod> & proxy)
-<a name="l00670"></a>00670       {
-<a name="l00671"></a>00671         <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00672"></a>00672         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00673"></a>00673       }
-<a name="l00674"></a>00674 
-<a name="l00677"></a><a class="code" href="classviennacl_1_1vector.html#aeddc9d15b96937b89a6122abfbb4a4b0">00677</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00678"></a>00678                                                                            <span class="keyword">const</span> SCALARTYPE,
-<a name="l00679"></a>00679                                                                            op_prod> & proxy)
-<a name="l00680"></a>00680       {
-<a name="l00681"></a>00681         <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00682"></a>00682         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00683"></a>00683       }
-<a name="l00684"></a>00684 
-<a name="l00687"></a><a class="code" href="classviennacl_1_1vector.html#a2f8d78b1c904f274f2c50ec90f9a944e">00687</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00688"></a>00688                                                                            <span class="keyword">const</span> SCALARTYPE,
-<a name="l00689"></a>00689                                                                            op_prod> & proxy)
-<a name="l00690"></a>00690       {
-<a name="l00691"></a>00691         <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00692"></a>00692         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00693"></a>00693       }
-<a name="l00694"></a>00694 
-<a name="l00697"></a><a class="code" href="classviennacl_1_1vector.html#a478742d85955289d0fef99d591d92771">00697</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00698"></a>00698                                                                            <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00699"></a>00699                                                                            op_div> & proxy)
-<a name="l00700"></a>00700       {
-<a name="l00701"></a>00701         <a class="code" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83" title="Inplace divide-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_div_add</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00702"></a>00702         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00703"></a>00703       }
-<a name="l00704"></a>00704 
-<a name="l00705"></a>00705 
-<a name="l00706"></a>00706 
-<a name="l00709"></a><a class="code" href="classviennacl_1_1vector.html#aae3c76bbb1a3e6023b1af706ce981b49">00709</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00710"></a>00710       {
-<a name="l00711"></a>00711         <a class="code" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6" title="Adds a dense matrix to another.">viennacl::linalg::inplace_sub</a>(*<span class="keyword">this</span>, vec);
-<a name="l00712"></a>00712         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00713"></a>00713       }
-<a name="l00714"></a>00714 
-<a name="l00717"></a><a class="code" href="classviennacl_1_1vector.html#aea40ee2f758aa6fc99ce786efc8ef02c">00717</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00718"></a>00718                                                                            <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00719"></a>00719                                                                            op_prod> & proxy)
-<a name="l00720"></a>00720       {
-<a name="l00721"></a>00721         <a class="code" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e" title="Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead...">viennacl::linalg::inplace_mul_sub</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00722"></a>00722         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00723"></a>00723       }
-<a name="l00724"></a>00724 
-<a name="l00727"></a><a class="code" href="classviennacl_1_1vector.html#afb6860261a249d443031fcaa6940806a">00727</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00728"></a>00728                                                                            <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00729"></a>00729                                                                            op_prod> & proxy)
-<a name="l00730"></a>00730       {
-<a name="l00731"></a>00731         <a class="code" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e" title="Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead...">viennacl::linalg::inplace_mul_sub</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00732"></a>00732         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00733"></a>00733       }
-<a name="l00734"></a>00734 
-<a name="l00737"></a><a class="code" href="classviennacl_1_1vector.html#a067bc8f3532c3d398671ede297159c18">00737</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00738"></a>00738                                                                             <span class="keyword">const</span> SCALARTYPE,
-<a name="l00739"></a>00739                                                                             op_prod> & proxy)
-<a name="l00740"></a>00740       {
-<a name="l00741"></a>00741         <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(*<span class="keyword">this</span>, proxy.lhs(), -proxy.rhs());
-<a name="l00742"></a>00742         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00743"></a>00743       }
-<a name="l00744"></a>00744 
-<a name="l00747"></a><a class="code" href="classviennacl_1_1vector.html#a32ebaa055c897b1a6f3ea49e3b7022dd">00747</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00748"></a>00748                                                                             <span class="keyword">const</span> SCALARTYPE,
-<a name="l00749"></a>00749                                                                             op_prod> & proxy)
-<a name="l00750"></a>00750       {
-<a name="l00751"></a>00751         <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(*<span class="keyword">this</span>, proxy.lhs(), -proxy.rhs());
-<a name="l00752"></a>00752         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00753"></a>00753       }
-<a name="l00754"></a>00754       
-<a name="l00757"></a><a class="code" href="classviennacl_1_1vector.html#a983376d820f950a2bc06d987a604c9b3">00757</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00758"></a>00758                                                                             <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00759"></a>00759                                                                             op_div> & proxy)
-<a name="l00760"></a>00760       {
-<a name="l00761"></a>00761         <a class="code" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21" title="Inplace divide-subtract operation. Try to use the overloaded operators for vector instead...">viennacl::linalg::inplace_div_sub</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00762"></a>00762         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00763"></a>00763       }
-<a name="l00764"></a>00764       
-<a name="l00765"></a>00765       
-<a name="l00766"></a>00766       
-<a name="l00767"></a>00767 
-<a name="l00770"></a><a class="code" href="classviennacl_1_1vector.html#adad7d33d0bb340be923ded4b7050867b">00770</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#adad7d33d0bb340be923ded4b7050867b" title="Scales this vector by a CPU scalar value.">operator *= </a>(SCALARTYPE val)
-<a name="l00771"></a>00771       {
-<a name="l00772"></a>00772         <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_mult</a>(*<span class="keyword">this</span>, val);
-<a name="l00773"></a>00773         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00774"></a>00774       }
-<a name="l00775"></a>00775 
-<a name="l00778"></a><a class="code" href="classviennacl_1_1vector.html#a32d20bcbd10c909d2041c30cc942f080">00778</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#adad7d33d0bb340be923ded4b7050867b" title="Scales this vector by a CPU scalar value.">operator *= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & gpu_val)
-<a name="l00779"></a>00779       {
-<a name="l00780"></a>00780         <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_mult</a>(*<span class="keyword">this</span>, gpu_val);
-<a name="l00781"></a>00781         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00782"></a>00782       }
-<a name="l00783"></a>00783 
-<a name="l00786"></a><a class="code" href="classviennacl_1_1vector.html#af6ba5ebda72ab395ad1a1e5504088976">00786</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#af6ba5ebda72ab395ad1a1e5504088976" title="Scales this vector by a CPU scalar value.">operator /= </a>(SCALARTYPE val)
-<a name="l00787"></a>00787       {
-<a name="l00788"></a>00788         <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_mult</a>(*<span class="keyword">this</span>, static_cast<SCALARTYPE>(1) / val);
-<a name="l00789"></a>00789         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00790"></a>00790       }
-<a name="l00791"></a>00791       
-<a name="l00794"></a><a class="code" href="classviennacl_1_1vector.html#a3ffe49fc9f161ce2ea1fb130cd0195ca">00794</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#af6ba5ebda72ab395ad1a1e5504088976" title="Scales this vector by a CPU scalar value.">operator /= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & gpu_val)
-<a name="l00795"></a>00795       {
-<a name="l00796"></a>00796         <a class="code" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_divide</a>(*<span class="keyword">this</span>, gpu_val);
-<a name="l00797"></a>00797         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00798"></a>00798       }
-<a name="l00799"></a>00799       
-<a name="l00800"></a>00800       
-<a name="l00801"></a>00801       
-<a name="l00802"></a>00802       <span class="comment">// free addition</span>
-<a name="l00803"></a>00803       
-<a name="l00806"></a><a class="code" href="classviennacl_1_1vector.html#a87db4b1001dea6bfc9b47d1e07028552">00806</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator + </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00807"></a>00807 <span class="keyword">      </span>{
-<a name="l00808"></a>00808         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00809"></a>00809         <a class="code" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f" title="Adds two dense matrices and writes the result to a third matrix.">viennacl::linalg::add</a>(*<span class="keyword">this</span>, vec, result);
-<a name="l00810"></a>00810         <span class="keywordflow">return</span> result;
-<a name="l00811"></a>00811       }
-<a name="l00812"></a>00812       
-<a name="l00815"></a><a class="code" href="classviennacl_1_1vector.html#abf44eeb0d6aebf7fac80026eb2aaff11">00815</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator + </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00816"></a>00816                                                                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00817"></a>00817                                                                            op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00818"></a>00818 <span class="keyword">      </span>{
-<a name="l00819"></a>00819         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00820"></a>00820         <a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df" title="Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fi...">viennacl::linalg::mul_add</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>, result);
-<a name="l00821"></a>00821         <span class="keywordflow">return</span> result;
-<a name="l00822"></a>00822       }
-<a name="l00823"></a>00823 
-<a name="l00826"></a><a class="code" href="classviennacl_1_1vector.html#ae642a9b7a6e50936342bced1c2cc2aa9">00826</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator + </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00827"></a>00827                                                                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00828"></a>00828                                                                            op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00829"></a>00829 <span class="keyword">      </span>{
-<a name="l00830"></a>00830         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00831"></a>00831         <a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df" title="Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fi...">viennacl::linalg::mul_add</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>, result);
-<a name="l00832"></a>00832         <span class="keywordflow">return</span> result;
-<a name="l00833"></a>00833       }
-<a name="l00834"></a>00834 
-<a name="l00837"></a><a class="code" href="classviennacl_1_1vector.html#a8c0fb94a7256a1afe4c16c4d54db7316">00837</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator + </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00838"></a>00838                                                                          <span class="keyword">const</span> SCALARTYPE,
-<a name="l00839"></a>00839                                                                          op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00840"></a>00840 <span class="keyword">      </span>{
-<a name="l00841"></a>00841         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00842"></a>00842         <a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df" title="Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fi...">viennacl::linalg::mul_add</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>, result);
-<a name="l00843"></a>00843         <span class="keywordflow">return</span> result;
-<a name="l00844"></a>00844       }
-<a name="l00845"></a>00845 
-<a name="l00848"></a><a class="code" href="classviennacl_1_1vector.html#a735ecd24c5432dbf339e9bf6a4bfefb6">00848</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator + </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00849"></a>00849                                                                          <span class="keyword">const</span> SCALARTYPE,
-<a name="l00850"></a>00850                                                                          op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00851"></a>00851 <span class="keyword">      </span>{
-<a name="l00852"></a>00852         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00853"></a>00853         <a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df" title="Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fi...">viennacl::linalg::mul_add</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>, result);
-<a name="l00854"></a>00854         <span class="keywordflow">return</span> result;
-<a name="l00855"></a>00855       }
-<a name="l00856"></a>00856 
-<a name="l00857"></a>00857 
-<a name="l00858"></a>00858       <span class="comment">//free subtraction:</span>
-<a name="l00861"></a><a class="code" href="classviennacl_1_1vector.html#ab4b953de766b713cf2016e69b75233de">00861</a> <span class="comment"></span>      <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator - </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00862"></a>00862 <span class="keyword">      </span>{
-<a name="l00863"></a>00863         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00864"></a>00864         <a class="code" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e" title="Adds two dense matrices and writes the result to a third matrix.">viennacl::linalg::sub</a>(*<span class="keyword">this</span>, vec, result);
-<a name="l00865"></a>00865         <span class="keywordflow">return</span> result;
-<a name="l00866"></a>00866       }
-<a name="l00867"></a>00867 
-<a name="l00870"></a><a class="code" href="classviennacl_1_1vector.html#a1f057bb893f457b22ddd46aecc973469">00870</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator - </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00871"></a>00871                                                                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00872"></a>00872                                                                            op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00873"></a>00873 <span class="keyword">      </span>{
-<a name="l00874"></a>00874         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00875"></a>00875         result = *<span class="keyword">this</span>;
-<a name="l00876"></a>00876         <a class="code" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e" title="Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead...">viennacl::linalg::inplace_mul_sub</a>(result, proxy.lhs(), proxy.rhs());
-<a name="l00877"></a>00877         <span class="keywordflow">return</span> result;
-<a name="l00878"></a>00878       }
-<a name="l00879"></a>00879 
-<a name="l00882"></a><a class="code" href="classviennacl_1_1vector.html#ab6a6205580e81d2e2e477f55b75f8645">00882</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator - </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00883"></a>00883                                                                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00884"></a>00884                                                                            op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00885"></a>00885 <span class="keyword">      </span>{
-<a name="l00886"></a>00886         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00887"></a>00887         result = *<span class="keyword">this</span>;
-<a name="l00888"></a>00888         <a class="code" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e" title="Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead...">viennacl::linalg::inplace_mul_sub</a>(result, proxy.lhs(), proxy.rhs());
-<a name="l00889"></a>00889         <span class="keywordflow">return</span> result;
-<a name="l00890"></a>00890       }
-<a name="l00891"></a>00891 
-<a name="l00894"></a><a class="code" href="classviennacl_1_1vector.html#a7b6c480cbd1da3812d587a729983fc4f">00894</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator - </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00895"></a>00895                                                                          <span class="keyword">const</span> SCALARTYPE,
-<a name="l00896"></a>00896                                                                          op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00897"></a>00897 <span class="keyword">      </span>{
-<a name="l00898"></a>00898         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00899"></a>00899         result = *<span class="keyword">this</span>;
-<a name="l00900"></a>00900         <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(result, proxy.lhs(), -proxy.rhs());
-<a name="l00901"></a>00901         <span class="keywordflow">return</span> result;
-<a name="l00902"></a>00902       }
-<a name="l00903"></a>00903 
-<a name="l00906"></a><a class="code" href="classviennacl_1_1vector.html#a92159381dc559d8caac28099589b85cf">00906</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator - </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00907"></a>00907                                                                          <span class="keyword">const</span> SCALARTYPE,
-<a name="l00908"></a>00908                                                                          op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00909"></a>00909 <span class="keyword">      </span>{
-<a name="l00910"></a>00910         <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00911"></a>00911         result = *<span class="keyword">this</span>;
-<a name="l00912"></a>00912         <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(result, proxy.lhs(), -proxy.rhs());
-<a name="l00913"></a>00913         <span class="keywordflow">return</span> result;
-<a name="l00914"></a>00914       }
-<a name="l00915"></a>00915 
-<a name="l00916"></a>00916       
-<a name="l00917"></a>00917       <span class="comment">//free multiplication</span>
-<a name="l00920"></a>00920 <span class="comment"></span>      <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> SCALARTYPE, op_prod> 
-<a name="l00921"></a><a class="code" href="classviennacl_1_1vector.html#a0273e98b77b6a89e60116358fe27cc9d">00921</a>       <a class="code" href="classviennacl_1_1vector.html#a0273e98b77b6a89e60116358fe27cc9d" title="Scales the vector by a CPU scalar &#39;alpha&#39; and returns an expression template.">operator * </a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)<span class="keyword"> const</span>
-<a name="l00922"></a>00922 <span class="keyword">      </span>{
-<a name="l00923"></a>00923         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> SCALARTYPE, op_prod>(*<span class="keyword">this</span>, value);
-<a name="l00924"></a>00924       }
-<a name="l00925"></a>00925 
-<a name="l00928"></a>00928       <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>, op_prod> 
-<a name="l00929"></a><a class="code" href="classviennacl_1_1vector.html#a3ff0ebfa2e17bab4dbad38c0cd50d948">00929</a>       <a class="code" href="classviennacl_1_1vector.html#a0273e98b77b6a89e60116358fe27cc9d" title="Scales the vector by a CPU scalar &#39;alpha&#39; and returns an expression template.">operator * </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)<span class="keyword"> const</span>
-<a name="l00930"></a>00930 <span class="keyword">      </span>{
-<a name="l00931"></a>00931         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>, op_prod>(*<span class="keyword">this</span>, value);
-<a name="l00932"></a>00932       }
-<a name="l00933"></a>00933 
-<a name="l00934"></a>00934       <span class="comment">//free division</span>
-<a name="l00937"></a>00937 <span class="comment"></span>      <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> SCALARTYPE, op_div> 
-<a name="l00938"></a><a class="code" href="classviennacl_1_1vector.html#ad87b95d3c182effc15136d7c610200af">00938</a>       <a class="code" href="classviennacl_1_1vector.html#ad87b95d3c182effc15136d7c610200af" title="Scales the vector by a CPU scalar &#39;alpha&#39; and returns an expression template.">operator / </a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)<span class="keyword"> const</span>
-<a name="l00939"></a>00939 <span class="keyword">      </span>{
-<a name="l00940"></a>00940         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> SCALARTYPE, op_div>(*<span class="keyword">this</span>, value);
-<a name="l00941"></a>00941       }
-<a name="l00942"></a>00942 
-<a name="l00945"></a>00945       <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>, op_div> 
-<a name="l00946"></a><a class="code" href="classviennacl_1_1vector.html#ad309219e4080cb6a6427f3321d159b2c">00946</a>       <a class="code" href="classviennacl_1_1vector.html#ad87b95d3c182effc15136d7c610200af" title="Scales the vector by a CPU scalar &#39;alpha&#39; and returns an expression template.">operator / </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)<span class="keyword"> const</span>
-<a name="l00947"></a>00947 <span class="keyword">      </span>{
-<a name="l00948"></a>00948         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>, op_div>(*<span class="keyword">this</span>, value);
-<a name="l00949"></a>00949       }
-<a name="l00950"></a>00950       
-<a name="l00951"></a>00951       
-<a name="l00953"></a>00953 
-<a name="l00954"></a><a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8">00954</a>       <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">iterator</a> <a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>()
-<a name="l00955"></a>00955       {
-<a name="l00956"></a>00956         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector.html#a589223a5e682b4a61d57bb8742b1cec9">iterator</a>(*<span class="keyword">this</span>, 0);
-<a name="l00957"></a>00957       }
-<a name="l00958"></a>00958 
-<a name="l00960"></a><a class="code" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f">00960</a>       <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">iterator</a> <a class="code" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f" title="Returns an iterator pointing to the end of the vector (STL like).">end</a>()
-<a name="l00961"></a>00961       {
-<a name="l00962"></a>00962         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector.html#a589223a5e682b4a61d57bb8742b1cec9">iterator</a>(*<span class="keyword">this</span>, <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00963"></a>00963       }
-<a name="l00964"></a>00964 
-<a name="l00966"></a><a class="code" href="classviennacl_1_1vector.html#aa4b02d4f1a8500fb07a551069060709f">00966</a>       <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_iterator</a> <a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>()<span class="keyword"> const</span>
-<a name="l00967"></a>00967 <span class="keyword">      </span>{
-<a name="l00968"></a>00968         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector.html#a5b0cecdbbf962357b5dc5f79dcae2d66">const_iterator</a>(*<span class="keyword">this</span>, 0);
-<a name="l00969"></a>00969       }
-<a name="l00970"></a>00970 
-<a name="l00972"></a><a class="code" href="classviennacl_1_1vector.html#a350132543d80a1c1e5be844e6d2878ea">00972</a>       <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_iterator</a> <a class="code" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f" title="Returns an iterator pointing to the end of the vector (STL like).">end</a>()<span class="keyword"> const</span>
-<a name="l00973"></a>00973 <span class="keyword">      </span>{
-<a name="l00974"></a>00974         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector.html#a5b0cecdbbf962357b5dc5f79dcae2d66">const_iterator</a>(*<span class="keyword">this</span>, <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00975"></a>00975       }
-<a name="l00976"></a>00976 
-<a name="l00979"></a><a class="code" href="classviennacl_1_1vector.html#af5a080ddc0576cfba4c7494ff8eccb09">00979</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#af5a080ddc0576cfba4c7494ff8eccb09" title="Swaps the entries of the two vectors.">swap</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & other)
-<a name="l00980"></a>00980       {
-<a name="l00981"></a>00981         <a class="code" href="classviennacl_1_1vector.html#af5a080ddc0576cfba4c7494ff8eccb09" title="Swaps the entries of the two vectors.">swap</a>(*<span class="keyword">this</span>, other);
-<a name="l00982"></a>00982         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00983"></a>00983       };
-<a name="l00984"></a>00984       
-<a name="l00987"></a><a class="code" href="classviennacl_1_1vector.html#a3f3c31234d9a1c823383bd6e8c2c9222">00987</a>       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a3f3c31234d9a1c823383bd6e8c2c9222" title="Swaps the handles of two vectors by swapping the OpenCL handles only, no data copy.">fast_swap</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & other) 
-<a name="l00988"></a>00988       { 
-<a name="l00989"></a>00989         assert(this->size_ == other.size_); 
-<a name="l00990"></a>00990         this->elements_.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#aca2a2fe50e9519f31c07e34d56a2a5eb" title="Swaps the OpenCL handle of two handle objects.">swap</a>(other.elements_); 
-<a name="l00991"></a>00991         <span class="keywordflow">return</span> *<span class="keyword">this</span>; 
-<a name="l00992"></a>00992       };       
-<a name="l00993"></a>00993       
-<a name="l00996"></a><a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7">00996</a>       <a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> size_; }
-<a name="l00997"></a>00997       
-<a name="l01000"></a><a class="code" href="classviennacl_1_1vector.html#a0ab5ce862c0331d9e45a6e1774fca131">01000</a>       <a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> <a class="code" href="classviennacl_1_1vector.html#a0ab5ce862c0331d9e45a6e1774fca131" title="Returns the maximum possible size of the vector, which is given by 128 MByte due to limitations by Op...">max_size</a>()<span class="keyword"> const</span>
-<a name="l01001"></a>01001 <span class="keyword">      </span>{
-<a name="l01002"></a>01002         <span class="keywordflow">return</span> (128*1024*1024) / <span class="keyword">sizeof</span>(SCALARTYPE);  <span class="comment">//128 MB is maximum size of memory chunks in OpenCL!</span>
-<a name="l01003"></a>01003       }
-<a name="l01006"></a><a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c">01006</a>       <a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> <a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> viennacl::tools::roundUpToNextMultiple<size_type>(size_, ALIGNMENT); }
-<a name="l01007"></a>01007       
-<a name="l01009"></a><a class="code" href="classviennacl_1_1vector.html#a3f37b042a1e7cd4bd38fc564de81f0da">01009</a>       <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1vector.html#a3f37b042a1e7cd4bd38fc564de81f0da" title="Returns true is the size is zero.">empty</a>() { <span class="keywordflow">return</span> size_ == 0; }
-<a name="l01010"></a>01010       
-<a name="l01012"></a><a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c">01012</a>       <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> elements_; }
-<a name="l01013"></a>01013 
-<a name="l01016"></a><a class="code" href="classviennacl_1_1vector.html#ac8bb3912a3ce86b15842e79d0b421204">01016</a>       <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1vector.html#ac8bb3912a3ce86b15842e79d0b421204" title="Resets all entries to zero. Does not change the size of the vector.">clear</a>()
-<a name="l01017"></a>01017       {
-<a name="l01018"></a>01018         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"clear"</span>);
-<a name="l01019"></a>01019         
-<a name="l01020"></a>01020         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(elements_, static_cast<cl_uint>(<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));
-<a name="l01021"></a>01021       }
-<a name="l01022"></a>01022       <span class="comment">//void swap(vector & other){}</span>
-<a name="l01023"></a>01023       
-<a name="l01024"></a>01024 
-<a name="l01025"></a>01025       <span class="comment">//TODO: Think about implementing the following public member functions</span>
-<a name="l01026"></a>01026       <span class="comment">//void insert_element(unsigned int i, SCALARTYPE val){}</span>
-<a name="l01027"></a>01027       <span class="comment">//void erase_element(unsigned int i){}</span>
-<a name="l01028"></a>01028       
-<a name="l01029"></a>01029     <span class="keyword">private</span>:
-<a name="l01030"></a>01030       cl_uint size_;
-<a name="l01031"></a>01031       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> elements_;
-<a name="l01032"></a>01032     }; <span class="comment">//vector</span>
-<a name="l01033"></a>01033     
-<a name="l01034"></a>01034 
-<a name="l01035"></a>01035     <span class="comment">//</span>
-<a name="l01037"></a>01037 <span class="comment"></span>    <span class="comment">//</span>
-<a name="l01038"></a>01038     
-<a name="l01045"></a>01045     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l01046"></a><a class="code" href="namespaceviennacl.html#a7953e64a62d2209621a3f4a505dc9f9e">01046</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> & gpu_begin,
-<a name="l01047"></a>01047               <span class="keyword">const</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> & gpu_end,
-<a name="l01048"></a>01048               CPU_ITERATOR cpu_begin )
-<a name="l01049"></a>01049     {
-<a name="l01050"></a>01050       assert(gpu_end - gpu_begin >= 0);
-<a name="l01051"></a>01051       <span class="keywordflow">if</span> (gpu_end - gpu_begin != 0)
-<a name="l01052"></a>01052       {
-<a name="l01053"></a>01053         std::vector<SCALARTYPE> temp_buffer(gpu_end - gpu_begin);
-<a name="l01054"></a>01054         cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(),
-<a name="l01055"></a>01055                                          gpu_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">handle</a>(), CL_TRUE, 0, 
-<a name="l01056"></a>01056                                          <span class="keyword">sizeof</span>(SCALARTYPE)*(gpu_end - gpu_begin),
-<a name="l01057"></a>01057                                          &(temp_buffer[0]), 0, NULL, NULL);
-<a name="l01058"></a>01058         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l01059"></a>01059         <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l01060"></a>01060         
-<a name="l01061"></a>01061         <span class="comment">//now copy entries to cpu_vec:</span>
-<a name="l01062"></a>01062         <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">std::copy</a>(temp_buffer.begin(), temp_buffer.end(), cpu_begin);
-<a name="l01063"></a>01063       }
-<a name="l01064"></a>01064     }
-<a name="l01065"></a>01065 
-<a name="l01072"></a>01072     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l01073"></a><a class="code" href="namespaceviennacl.html#a6713b60b19010992ea611ef7ecd4fdf2">01073</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a> & gpu_begin,
-<a name="l01074"></a>01074               <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a> & gpu_end,
-<a name="l01075"></a>01075               CPU_ITERATOR cpu_begin )
-<a name="l01076"></a>01076 
-<a name="l01077"></a>01077     {
-<a name="l01078"></a>01078       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a>(gpu_begin),
-<a name="l01079"></a>01079            <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a>(gpu_end),
-<a name="l01080"></a>01080            cpu_begin);
-<a name="l01081"></a>01081     }
-<a name="l01082"></a>01082     
-<a name="l01088"></a>01088     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPUVECTOR>
-<a name="l01089"></a><a class="code" href="namespaceviennacl.html#afb5884675d2f3a9ca1a57a3a722aa78a">01089</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <span class="keyword">const</span> & gpu_vec,
-<a name="l01090"></a>01090               CPUVECTOR & cpu_vec )
-<a name="l01091"></a>01091     {
-<a name="l01092"></a>01092       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">viennacl::copy</a>(gpu_vec.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>(), gpu_vec.<a class="code" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f" title="Returns an iterator pointing to the end of the vector (STL like).">end</a>(), cpu_vec.begin());
-<a name="l01093"></a>01093     }
-<a name="l01094"></a>01094 
-<a name="l01095"></a>01095     <span class="comment">//from gpu to cpu. Type assumption: cpu_vec lies in a linear memory chunk</span>
-<a name="l01107"></a>01107 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l01108"></a><a class="code" href="namespaceviennacl.html#a9c694a91cf3e54637ed6a05ab7d9ce75">01108</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> & gpu_begin,
-<a name="l01109"></a>01109                    <span class="keyword">const</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> & gpu_end,
-<a name="l01110"></a>01110                    CPU_ITERATOR cpu_begin )
-<a name="l01111"></a>01111     {
-<a name="l01112"></a>01112       <span class="keywordflow">if</span> (gpu_begin != gpu_end)
-<a name="l01113"></a>01113       {
-<a name="l01114"></a>01114         cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(),
-<a name="l01115"></a>01115                                          gpu_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">handle</a>(), CL_TRUE, 0,
-<a name="l01116"></a>01116                                          <span class="keyword">sizeof</span>(SCALARTYPE)*(gpu_end - gpu_begin),
-<a name="l01117"></a>01117                                          &(*cpu_begin), 0, NULL, NULL);
-<a name="l01118"></a>01118         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l01119"></a>01119         <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l01120"></a>01120       }
-<a name="l01121"></a>01121     }
-<a name="l01122"></a>01122 
-<a name="l01128"></a>01128     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPUVECTOR>
-<a name="l01129"></a><a class="code" href="namespaceviennacl.html#aad3621936e6071d2777aae22a5f891ec">01129</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <span class="keyword">const</span> & gpu_vec,
-<a name="l01130"></a>01130                    CPUVECTOR & cpu_vec )
-<a name="l01131"></a>01131     {
-<a name="l01132"></a>01132       <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">viennacl::fast_copy</a>(gpu_vec.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>(), gpu_vec.<a class="code" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f" title="Returns an iterator pointing to the end of the vector (STL like).">end</a>(), cpu_vec.begin());
-<a name="l01133"></a>01133     }
-<a name="l01134"></a>01134 
-<a name="l01135"></a>01135 
-<a name="l01136"></a>01136 
-<a name="l01137"></a>01137 <span class="preprocessor">    #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l01138"></a>01138 <span class="preprocessor"></span>    <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01139"></a>01139     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(vector<float, ALIGNMENT> <span class="keyword">const</span> & gpu_vec,
-<a name="l01140"></a>01140               Eigen::VectorXf & eigen_vec)
-<a name="l01141"></a>01141     {
-<a name="l01142"></a>01142       <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">viennacl::fast_copy</a>(gpu_vec.begin(), gpu_vec.end(), &(eigen_vec[0]));
-<a name="l01143"></a>01143     }
-<a name="l01144"></a>01144     
-<a name="l01145"></a>01145     <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01146"></a>01146     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(vector<double, ALIGNMENT> & gpu_vec,
-<a name="l01147"></a>01147               Eigen::VectorXd & eigen_vec)
-<a name="l01148"></a>01148     {
-<a name="l01149"></a>01149       <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">viennacl::fast_copy</a>(gpu_vec.begin(), gpu_vec.end(), &(eigen_vec[0]));
-<a name="l01150"></a>01150     }
-<a name="l01151"></a>01151 <span class="preprocessor">    #endif</span>
-<a name="l01152"></a>01152 <span class="preprocessor"></span>
-<a name="l01153"></a>01153 
-<a name="l01154"></a>01154     <span class="comment">//</span>
-<a name="l01156"></a>01156 <span class="comment"></span>    <span class="comment">//</span>
-<a name="l01157"></a>01157 
-<a name="l01158"></a>01158     <span class="comment">//from cpu to gpu. Safe assumption: cpu_vector does not necessarily occupy a linear memory segment, but is not larger than the allocated memory on the GPU</span>
-<a name="l01165"></a>01165 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l01166"></a><a class="code" href="namespaceviennacl.html#afb1db189fa5cd8ee4a8222d8b87f3ab0">01166</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(CPU_ITERATOR <span class="keyword">const</span> & cpu_begin,
-<a name="l01167"></a>01167               CPU_ITERATOR <span class="keyword">const</span> & cpu_end,
-<a name="l01168"></a>01168               <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a> gpu_begin)
-<a name="l01169"></a>01169     {
-<a name="l01170"></a>01170       <span class="keywordflow">if</span> (cpu_begin != cpu_end)
-<a name="l01171"></a>01171       {
-<a name="l01172"></a>01172         <span class="comment">//we require that the size of the gpu_vector is larger or equal to the cpu-size</span>
-<a name="l01173"></a>01173         std::vector<SCALARTYPE> temp_buffer(cpu_end - cpu_begin);
-<a name="l01174"></a>01174         <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">std::copy</a>(cpu_begin, cpu_end, temp_buffer.begin());
-<a name="l01175"></a>01175         cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(),
-<a name="l01176"></a>01176                                           gpu_begin.<a class="code" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">handle</a>(), CL_TRUE, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>(),
-<a name="l01177"></a>01177                                           <span class="keyword">sizeof</span>(SCALARTYPE)*(cpu_end - cpu_begin),
-<a name="l01178"></a>01178                                           &(temp_buffer[0]), 0, NULL, NULL);
-<a name="l01179"></a>01179         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l01180"></a>01180       }
-<a name="l01181"></a>01181     }
-<a name="l01182"></a>01182 
-<a name="l01183"></a>01183     <span class="comment">// for things like copy(std_vec.begin(), std_vec.end(), vcl_vec.begin() + 1);</span>
-<a name="l01184"></a>01184     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l01185"></a><a class="code" href="namespaceviennacl.html#a12da6187594db18ae7aa4874e1ad3f1d">01185</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(CPU_ITERATOR <span class="keyword">const</span> & cpu_begin,
-<a name="l01186"></a>01186               CPU_ITERATOR <span class="keyword">const</span> & cpu_end,
-<a name="l01187"></a>01187               <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> gpu_begin)
-<a name="l01188"></a>01188     {
-<a name="l01189"></a>01189       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(cpu_begin, cpu_end, <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a>(gpu_begin));
-<a name="l01190"></a>01190     }
-<a name="l01191"></a>01191 
-<a name="l01197"></a>01197     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPUVECTOR>
-<a name="l01198"></a><a class="code" href="namespaceviennacl.html#a0d4fd919fa235b1c7dabd0049740e774">01198</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> CPUVECTOR & cpu_vec, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & gpu_vec)
-<a name="l01199"></a>01199     {
-<a name="l01200"></a>01200       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">viennacl::copy</a>(cpu_vec.begin(), cpu_vec.end(), gpu_vec.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>());
-<a name="l01201"></a>01201     }
-<a name="l01202"></a>01202 
-<a name="l01214"></a>01214     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l01215"></a><a class="code" href="namespaceviennacl.html#a9250bb8c996f6eab600899146e0cbf26">01215</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(CPU_ITERATOR <span class="keyword">const</span> & cpu_begin,
-<a name="l01216"></a>01216                    CPU_ITERATOR <span class="keyword">const</span> & cpu_end,
-<a name="l01217"></a>01217                    <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a> gpu_begin)
-<a name="l01218"></a>01218     {
-<a name="l01219"></a>01219       <span class="keywordflow">if</span> (cpu_begin != cpu_end)
-<a name="l01220"></a>01220       {
-<a name="l01221"></a>01221         <span class="comment">//we require that the size of the gpu_vector is larger or equal to the cpu-size</span>
-<a name="l01222"></a>01222         cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), 
-<a name="l01223"></a>01223                                           gpu_begin.<a class="code" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">handle</a>(), CL_TRUE, 0, 
-<a name="l01224"></a>01224                                           <span class="keyword">sizeof</span>(SCALARTYPE)*(cpu_end - cpu_begin), &(*cpu_begin), 0, NULL, NULL);
-<a name="l01225"></a>01225         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l01226"></a>01226       }
-<a name="l01227"></a>01227     }
-<a name="l01228"></a>01228 
-<a name="l01229"></a>01229 
-<a name="l01235"></a>01235     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPUVECTOR>
-<a name="l01236"></a><a class="code" href="namespaceviennacl.html#af7146b5952b3532c74728adc05d4de55">01236</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(<span class="keyword">const</span> CPUVECTOR & cpu_vec, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & gpu_vec)
-<a name="l01237"></a>01237     {
-<a name="l01238"></a>01238       <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">viennacl::fast_copy</a>(cpu_vec.begin(), cpu_vec.end(), gpu_vec.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>());
-<a name="l01239"></a>01239     }
-<a name="l01240"></a>01240 
-<a name="l01241"></a>01241 <span class="preprocessor">    #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l01242"></a>01242 <span class="preprocessor"></span>    <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01243"></a>01243     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(Eigen::VectorXf <span class="keyword">const</span> & eigen_vec,
-<a name="l01244"></a>01244               vector<float, ALIGNMENT> & gpu_vec)
-<a name="l01245"></a>01245     {
-<a name="l01246"></a>01246       std::vector<float> entries(eigen_vec.size());
-<a name="l01247"></a>01247       <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i<entries.size(); ++i)
-<a name="l01248"></a>01248         entries[i] = eigen_vec(i);
-<a name="l01249"></a>01249       <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">viennacl::fast_copy</a>(entries.begin(), entries.end(), gpu_vec.begin());
-<a name="l01250"></a>01250     }
-<a name="l01251"></a>01251     
-<a name="l01252"></a>01252     <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01253"></a>01253     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(Eigen::VectorXd <span class="keyword">const</span> & eigen_vec,
-<a name="l01254"></a>01254               vector<double, ALIGNMENT> & gpu_vec)
-<a name="l01255"></a>01255     {
-<a name="l01256"></a>01256       std::vector<double> entries(eigen_vec.size());
-<a name="l01257"></a>01257       <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i<entries.size(); ++i)
-<a name="l01258"></a>01258         entries[i] = eigen_vec(i);
-<a name="l01259"></a>01259       <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">viennacl::fast_copy</a>(entries.begin(), entries.end(), gpu_vec.begin());
-<a name="l01260"></a>01260     }
-<a name="l01261"></a>01261 <span class="preprocessor">    #endif</span>
-<a name="l01262"></a>01262 <span class="preprocessor"></span>    
-<a name="l01263"></a>01263 
-<a name="l01264"></a>01264 
-<a name="l01265"></a>01265     <span class="comment">//</span>
-<a name="l01267"></a>01267 <span class="comment"></span>    <span class="comment">//</span>
-<a name="l01274"></a>01274 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_SRC, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_DEST>
-<a name="l01275"></a><a class="code" href="namespaceviennacl.html#af638a30a9dd2001143b4c92072c76d48">01275</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_begin,
-<a name="l01276"></a>01276               <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_end,
-<a name="l01277"></a>01277               <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT_DEST></a> gpu_dest_begin)
-<a name="l01278"></a>01278     {
-<a name="l01279"></a>01279       assert(gpu_src_end - gpu_src_begin >= 0);
-<a name="l01280"></a>01280       <span class="keywordflow">if</span> (gpu_src_begin != gpu_src_end)
-<a name="l01281"></a>01281       {
-<a name="l01282"></a>01282         cl_int err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(),
-<a name="l01283"></a>01283                                           gpu_src_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">handle</a>(),  <span class="comment">//src handle</span>
-<a name="l01284"></a>01284                                           gpu_dest_begin.<a class="code" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">handle</a>(), <span class="comment">//dest handle</span>
-<a name="l01285"></a>01285                                           <span class="keyword">sizeof</span>(SCALARTYPE) * gpu_src_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>(), <span class="comment">//src offset</span>
-<a name="l01286"></a>01286                                           <span class="keyword">sizeof</span>(SCALARTYPE) * gpu_dest_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>(), <span class="comment">//dest offset</span>
-<a name="l01287"></a>01287                                           <span class="keyword">sizeof</span>(SCALARTYPE) * (gpu_src_end.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>() - gpu_src_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>()), <span class="comment">//data length</span>
-<a name="l01288"></a>01288                                           0, <span class="comment">//don't know -> check!! (something related to increment?)</span>
-<a name="l01289"></a>01289                                           NULL, NULL);
-<a name="l01290"></a>01290         <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l01291"></a>01291       }
-<a name="l01292"></a>01292     }
-<a name="l01293"></a>01293 
-<a name="l01300"></a>01300     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_SRC, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_DEST>
-<a name="l01301"></a><a class="code" href="namespaceviennacl.html#a9164bd549b986f39b035c24a426869b9">01301</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_begin,
-<a name="l01302"></a>01302               <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_end,
-<a name="l01303"></a>01303               <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_DEST></a> gpu_dest_begin)
-<a name="l01304"></a>01304     {
-<a name="l01305"></a>01305       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(gpu_src_begin, gpu_src_end, <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT_DEST></a>(gpu_dest_begin));
-<a name="l01306"></a>01306     }
-<a name="l01307"></a>01307 
-<a name="l01313"></a>01313     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_SRC, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_DEST>
-<a name="l01314"></a><a class="code" href="namespaceviennacl.html#ad823fb30fd180da375a1e09d56c0a1b8">01314</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_vec,
-<a name="l01315"></a>01315               <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT_DEST></a> & gpu_dest_vec )
-<a name="l01316"></a>01316     {
-<a name="l01317"></a>01317       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">viennacl::copy</a>(gpu_src_vec.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>(), gpu_src_vec.<a class="code" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f" title="Returns an iterator pointing to the end of the vector (STL like).">end</a>(), gpu_dest_vec.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>());
-<a name="l01318"></a>01318     } 
-<a name="l01319"></a>01319 
-<a name="l01320"></a>01320 
-<a name="l01321"></a>01321     
-<a name="l01322"></a>01322     
-<a name="l01323"></a>01323     
-<a name="l01324"></a>01324 
-<a name="l01325"></a>01325     <span class="comment">//global functions for handling vectors:</span>
-<a name="l01330"></a>01330 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01331"></a><a class="code" href="namespaceviennacl.html#a5e572599ddbae8812154538849fa707c">01331</a>     std::ostream & operator<<(std::ostream & s, vector<SCALARTYPE,ALIGNMENT> <span class="keyword">const</span> & val)
-<a name="l01332"></a>01332     {
-<a name="l01333"></a>01333       <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l01334"></a>01334       std::vector<SCALARTYPE> tmp(val.size());
-<a name="l01335"></a>01335       <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(val.begin(), val.end(), tmp.begin());
-<a name="l01336"></a>01336       std::cout << <span class="stringliteral">"["</span> << val.size() << <span class="stringliteral">"]("</span>;
-<a name="l01337"></a>01337       <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<SCALARTYPE>::size_type i=0; i<val.size(); ++i)
-<a name="l01338"></a>01338       {
-<a name="l01339"></a>01339         <span class="keywordflow">if</span> (i > 0)
-<a name="l01340"></a>01340           s << <span class="stringliteral">","</span>;
-<a name="l01341"></a>01341         s << tmp[i];
-<a name="l01342"></a>01342       }
-<a name="l01343"></a>01343       std::cout << <span class="stringliteral">")"</span>;
-<a name="l01344"></a>01344       <span class="keywordflow">return</span> s;
-<a name="l01345"></a>01345     }
-<a name="l01346"></a>01346 
-<a name="l01353"></a>01353     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01354"></a><a class="code" href="namespaceviennacl.html#a0c01dfab44c6d3849f7d0eac55539142">01354</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a0c01dfab44c6d3849f7d0eac55539142" title="Swaps the contents of two vectors, data is copied.">swap</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l01355"></a>01355               <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2)
-<a name="l01356"></a>01356     {
-<a name="l01357"></a>01357       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l01358"></a>01358 
-<a name="l01359"></a>01359       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"swap"</span>);
-<a name="l01360"></a>01360 
-<a name="l01361"></a>01361       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, static_cast<cl_uint>(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>())));
-<a name="l01362"></a>01362     }
-<a name="l01363"></a>01363     
-<a name="l01369"></a>01369     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01370"></a><a class="code" href="namespaceviennacl.html#a976181b1f6aa698b64a4746f0949fce0">01370</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl.html#a976181b1f6aa698b64a4746f0949fce0" title="Swaps the content of two vectors by swapping OpenCL handles only, NO data is copied.">fast_swap</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & v1,
-<a name="l01371"></a>01371                                               <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & v2) 
-<a name="l01372"></a>01372     { 
-<a name="l01373"></a>01373       <span class="keywordflow">return</span> v1.<a class="code" href="classviennacl_1_1vector.html#a3f3c31234d9a1c823383bd6e8c2c9222" title="Swaps the handles of two vectors by swapping the OpenCL handles only, no data copy.">fast_swap</a>(v2);
-<a name="l01374"></a>01374     }       
-<a name="l01375"></a>01375     
-<a name="l01376"></a>01376     
-<a name="l01377"></a>01377     
-<a name="l01379"></a>01379 
-<a name="l01384"></a>01384     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l01385"></a><a class="code" href="namespaceviennacl.html#aa60d7cda126efd13c3413453606850b7">01385</a>     <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, A></a>, <span class="keyword">const</span> SCALARTYPE, op_prod> <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator * </a>(SCALARTYPE <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l01386"></a>01386     {
-<a name="l01387"></a>01387       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, A></a>, <span class="keyword">const</span> SCALARTYPE, op_prod>(vec, value);
-<a name="l01388"></a>01388     }
-<a name="l01389"></a>01389 
-<a name="l01395"></a>01395     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l01396"></a><a class="code" href="namespaceviennacl.html#a3b34a609403378a81c3a2589a5418077">01396</a>     <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, A></a>, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>, op_prod> <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator * </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l01397"></a>01397     {
-<a name="l01398"></a>01398         <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, A></a>, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>, op_prod>(vec, value);
-<a name="l01399"></a>01399     }
-<a name="l01400"></a>01400 
-<a name="l01401"></a>01401 
-<a name="l01402"></a>01402     <span class="comment">//addition and subtraction of two vector_expressions:</span>
-<a name="l01408"></a>01408 <span class="comment"></span>    <span class="keyword">template</span> <<span class="keyword">typename</span> LHS1, <span class="keyword">typename</span> RHS1, <span class="keyword">typename</span> OP1,
-<a name="l01409"></a>01409               <span class="keyword">typename</span> LHS2, <span class="keyword">typename</span> RHS2, <span class="keyword">typename</span> OP2>
-<a name="l01410"></a>01410     <span class="keyword">typename</span> vector_expression< LHS1, RHS1, OP1>::VectorType
-<a name="l01411"></a><a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659">01411</a>     <a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659" title="Operator overload for the addition of two vector expressions.">operator + </a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS1, RHS1, OP1></a> <span class="keyword">const</span> & proxy1,
-<a name="l01412"></a>01412                 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS2, RHS2, OP2></a> <span class="keyword">const</span> & proxy2)
-<a name="l01413"></a>01413     {
-<a name="l01414"></a>01414       assert(proxy1.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>() == proxy2.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01415"></a>01415       <span class="keyword">typename</span> <a class="code" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067" title="Extracts the vector type from the two operands.">vector_expression< LHS1, RHS1, OP1>::VectorType</a> result(proxy1.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01416"></a>01416       result = proxy1;
-<a name="l01417"></a>01417       result += proxy2;
-<a name="l01418"></a>01418       <span class="keywordflow">return</span> result;
-<a name="l01419"></a>01419     }
-<a name="l01420"></a>01420 
-<a name="l01426"></a>01426     <span class="keyword">template</span> <<span class="keyword">typename</span> LHS1, <span class="keyword">typename</span> RHS1, <span class="keyword">typename</span> OP1,
-<a name="l01427"></a>01427               <span class="keyword">typename</span> LHS2, <span class="keyword">typename</span> RHS2, <span class="keyword">typename</span> OP2>
-<a name="l01428"></a>01428     <span class="keyword">typename</span> vector_expression< LHS1, RHS1, OP1>::VectorType
-<a name="l01429"></a><a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57">01429</a>     <a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57" title="Operator overload for the subtraction of two vector expressions.">operator - </a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS1, RHS1, OP1></a> <span class="keyword">const</span> & proxy1,
-<a name="l01430"></a>01430                 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS2, RHS2, OP2></a> <span class="keyword">const</span> & proxy2)
-<a name="l01431"></a>01431     {
-<a name="l01432"></a>01432       assert(proxy1.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>() == proxy2.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01433"></a>01433       <span class="keyword">typename</span> <a class="code" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067" title="Extracts the vector type from the two operands.">vector_expression< LHS1, RHS1, OP1>::VectorType</a> result(proxy1.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01434"></a>01434       result = proxy1;
-<a name="l01435"></a>01435       result -= proxy2;
-<a name="l01436"></a>01436       <span class="keywordflow">return</span> result;
-<a name="l01437"></a>01437     }
-<a name="l01438"></a>01438     
-<a name="l01440"></a>01440     
-<a name="l01446"></a>01446     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A, <span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l01447"></a><a class="code" href="namespaceviennacl.html#a0808ef51d9a2d2e1ecbed3d4b63e159f">01447</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> <a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659" title="Operator overload for the addition of two vector expressions.">operator + </a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy,
-<a name="l01448"></a>01448                                       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l01449"></a>01449     {
-<a name="l01450"></a>01450       assert(proxy.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l01451"></a>01451       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> result(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l01452"></a>01452       result = proxy;
-<a name="l01453"></a>01453       result += vec;
-<a name="l01454"></a>01454       <span class="keywordflow">return</span> result;
-<a name="l01455"></a>01455     }
-<a name="l01456"></a>01456 
-<a name="l01462"></a>01462     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A, <span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l01463"></a><a class="code" href="namespaceviennacl.html#ae00e47f8124b08cbeb8b7fc9ff537081">01463</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> <a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57" title="Operator overload for the subtraction of two vector expressions.">operator - </a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy,
-<a name="l01464"></a>01464                                       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l01465"></a>01465     {
-<a name="l01466"></a>01466       assert(proxy.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l01467"></a>01467       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> result(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l01468"></a>01468       result = proxy;
-<a name="l01469"></a>01469       result -= vec;
-<a name="l01470"></a>01470       <span class="keywordflow">return</span> result;
-<a name="l01471"></a>01471     }
-<a name="l01472"></a>01472 
-<a name="l01473"></a>01473 
-<a name="l01479"></a>01479     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l01480"></a><a class="code" href="namespaceviennacl.html#a00f47d8ad32713f98c6979c245b88cdb">01480</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE></a> <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator * </a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy,
-<a name="l01481"></a>01481                                    <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & val)
-<a name="l01482"></a>01482     {
-<a name="l01483"></a>01483       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE></a> result(proxy.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01484"></a>01484       result = proxy;
-<a name="l01485"></a>01485       result *= val;
-<a name="l01486"></a>01486       <span class="keywordflow">return</span> result;
-<a name="l01487"></a>01487     }
-<a name="l01488"></a>01488 
-<a name="l01494"></a>01494     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l01495"></a><a class="code" href="namespaceviennacl.html#a3aeb5b431a9c6d0b3af24a1513e8e9ad">01495</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE></a> <a class="code" href="namespaceviennacl.html#a3aeb5b431a9c6d0b3af24a1513e8e9ad" title="Operator overload for the division of a vector expression by a scalar from the right, e.g. (beta * vec1) / alpha. Here, beta * vec1 is wrapped into a vector_expression and then divided by alpha.">operator / </a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy,
-<a name="l01496"></a>01496                                       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & val)
-<a name="l01497"></a>01497     {
-<a name="l01498"></a>01498       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE></a> result(proxy.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01499"></a>01499       result = proxy;
-<a name="l01500"></a>01500       result /= val;
-<a name="l01501"></a>01501       <span class="keywordflow">return</span> result;
-<a name="l01502"></a>01502     }
-<a name="l01503"></a>01503 
-<a name="l01504"></a>01504 
-<a name="l01506"></a>01506     
-<a name="l01512"></a>01512     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l01513"></a><a class="code" href="namespaceviennacl.html#a66a24c58d27c6368ac879f4d7cc4cfc9">01513</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE></a> <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator * </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & val,
-<a name="l01514"></a>01514                                    <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy)
-<a name="l01515"></a>01515     {
-<a name="l01516"></a>01516       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE></a> result(proxy.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01517"></a>01517       result = proxy;
-<a name="l01518"></a>01518       result *= val;
-<a name="l01519"></a>01519       <span class="keywordflow">return</span> result;
-<a name="l01520"></a>01520     }
-<a name="l01521"></a>01521     
-<a name="l01527"></a>01527     <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l01528"></a><a class="code" href="namespaceviennacl.html#a4522333fedaf508711a5aa02c47e5c7a">01528</a>     <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE></a> <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator * </a>(SCALARTYPE val,
-<a name="l01529"></a>01529                                    <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy)
-<a name="l01530"></a>01530     {
-<a name="l01531"></a>01531       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE></a> result(proxy.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01532"></a>01532       result = proxy;
-<a name="l01533"></a>01533       result *= val;
-<a name="l01534"></a>01534       <span class="keywordflow">return</span> result;
-<a name="l01535"></a>01535     }
-<a name="l01536"></a>01536 
-<a name="l01537"></a>01537 }
-<a name="l01538"></a>01538 
-<a name="l01539"></a>01539 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector__kernels_8h.html b/doc/doxygen/html/vector__kernels_8h.html
deleted file mode 100644
index 553ec57..0000000
--- a/doc/doxygen/html/vector__kernels_8h.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_kernels.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector__source_8h_source.html">viennacl/linalg/kernels/vector_source.h</a>"</code><br/>
-
-<p><a href="vector__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">vector< float, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">vector< float, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">vector< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">vector< double, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">vector< double, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">vector< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector__kernels_8h_source.html b/doc/doxygen/html/vector__kernels_8h_source.html
deleted file mode 100644
index f549a54..0000000
--- a/doc/doxygen/html/vector__kernels_8h_source.html
+++ /dev/null
@@ -1,582 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_kernels.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="vector__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_VECTOR_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_VECTOR_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="vector__source_8h.html">viennacl/linalg/kernels/vector_source.h</a>"</span>
-<a name="l00008"></a>00008 
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012  <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013  {
-<a name="l00014"></a>00014   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015   {
-<a name="l00016"></a>00016    <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017    <span class="keyword">struct </span>vector;
-<a name="l00018"></a>00018 
-<a name="l00019"></a>00019 
-<a name="l00021"></a>00021    <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">00022</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><float, 16>
-<a name="l00023"></a>00023    {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025     {
-<a name="l00026"></a>00026       <span class="keywordflow">return</span> <span class="stringliteral">"f_vector_16"</span>;
-<a name="l00027"></a>00027     }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029     {
-<a name="l00030"></a>00030       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034       {
-<a name="l00035"></a>00035         std::string source;
-<a name="l00036"></a>00036         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">vector_align16_inplace_sub</a>);
-<a name="l00037"></a>00037         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a>);
-<a name="l00038"></a>00038         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a>);
-<a name="l00039"></a>00039         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">vector_align16_mult</a>);
-<a name="l00040"></a>00040         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a>);
-<a name="l00041"></a>00041         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a>);
-<a name="l00042"></a>00042         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a>);
-<a name="l00043"></a>00043         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">vector_align16_sub</a>);
-<a name="l00044"></a>00044         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a>);
-<a name="l00045"></a>00045         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a>);
-<a name="l00046"></a>00046         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a>);
-<a name="l00047"></a>00047         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">vector_align16_add</a>);
-<a name="l00048"></a>00048         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a>);
-<a name="l00049"></a>00049         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a>);
-<a name="l00050"></a>00050         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a>);
-<a name="l00051"></a>00051         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a>);
-<a name="l00052"></a>00052         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">vector_align16_cpu_mult</a>);
-<a name="l00053"></a>00053         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">vector_align16_inplace_divide</a>);
-<a name="l00054"></a>00054         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a>);
-<a name="l00055"></a>00055         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a>);
-<a name="l00056"></a>00056         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">vector_align16_inplace_add</a>);
-<a name="l00057"></a>00057         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">vector_align16_divide</a>);
-<a name="l00058"></a>00058         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a>);
-<a name="l00059"></a>00059         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a>);
-<a name="l00060"></a>00060         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a>);
-<a name="l00061"></a>00061         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">vector_align16_inplace_mult</a>);
-<a name="l00062"></a>00062         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a>);
-<a name="l00063"></a>00063         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a>);
-<a name="l00064"></a>00064         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a>);
-<a name="l00065"></a>00065         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a>);
-<a name="l00066"></a>00066         std::string prog_name = program_name();
-<a name="l00067"></a>00067 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00068"></a>00068 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00069"></a>00069 <span class="preprocessor">        #endif</span>
-<a name="l00070"></a>00070 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00071"></a>00071         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00072"></a>00072         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00073"></a>00073         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_inf"</span>);
-<a name="l00074"></a>00074         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00075"></a>00075         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mult"</span>);
-<a name="l00076"></a>00076         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"swap"</span>);
-<a name="l00077"></a>00077         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00078"></a>00078         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_2"</span>);
-<a name="l00079"></a>00079         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00080"></a>00080         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00081"></a>00081         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vmax"</span>);
-<a name="l00082"></a>00082         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inner_prod"</span>);
-<a name="l00083"></a>00083         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00084"></a>00084         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"plane_rotation"</span>);
-<a name="l00085"></a>00085         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00086"></a>00086         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00087"></a>00087         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_add"</span>);
-<a name="l00088"></a>00088         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mult"</span>);
-<a name="l00089"></a>00089         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00090"></a>00090         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00091"></a>00091         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00092"></a>00092         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00093"></a>00093         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00094"></a>00094         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_1"</span>);
-<a name="l00095"></a>00095         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00096"></a>00096         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00097"></a>00097         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00098"></a>00098         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sum"</span>);
-<a name="l00099"></a>00099         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00100"></a>00100         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"diag_precond"</span>);
-<a name="l00101"></a>00101         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_sub"</span>);
-<a name="l00102"></a>00102         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00103"></a>00103        } <span class="comment">//if</span>
-<a name="l00104"></a>00104      } <span class="comment">//init</span>
-<a name="l00105"></a>00105     }; <span class="comment">// struct</span>
-<a name="l00106"></a>00106 
-<a name="l00107"></a>00107    <span class="keyword">template</span> <>
-<a name="l00108"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">00108</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><float, 4>
-<a name="l00109"></a>00109    {
-<a name="l00110"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">00110</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00111"></a>00111     {
-<a name="l00112"></a>00112       <span class="keywordflow">return</span> <span class="stringliteral">"f_vector_4"</span>;
-<a name="l00113"></a>00113     }
-<a name="l00114"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">00114</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00115"></a>00115     {
-<a name="l00116"></a>00116       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00117"></a>00117       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00118"></a>00118       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00119"></a>00119       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00120"></a>00120       {
-<a name="l00121"></a>00121         std::string source;
-<a name="l00122"></a>00122         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a>);
-<a name="l00123"></a>00123         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a>);
-<a name="l00124"></a>00124         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a>);
-<a name="l00125"></a>00125         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a>);
-<a name="l00126"></a>00126         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a>);
-<a name="l00127"></a>00127         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a>);
-<a name="l00128"></a>00128         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a>);
-<a name="l00129"></a>00129         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a>);
-<a name="l00130"></a>00130         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a>);
-<a name="l00131"></a>00131         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a>);
-<a name="l00132"></a>00132         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a>);
-<a name="l00133"></a>00133         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a>);
-<a name="l00134"></a>00134         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a>);
-<a name="l00135"></a>00135         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a>);
-<a name="l00136"></a>00136         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a>);
-<a name="l00137"></a>00137         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a>);
-<a name="l00138"></a>00138         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a>);
-<a name="l00139"></a>00139         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a>);
-<a name="l00140"></a>00140         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a>);
-<a name="l00141"></a>00141         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a>);
-<a name="l00142"></a>00142         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a>);
-<a name="l00143"></a>00143         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a>);
-<a name="l00144"></a>00144         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a>);
-<a name="l00145"></a>00145         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a>);
-<a name="l00146"></a>00146         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a>);
-<a name="l00147"></a>00147         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a>);
-<a name="l00148"></a>00148         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a>);
-<a name="l00149"></a>00149         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a>);
-<a name="l00150"></a>00150         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a>);
-<a name="l00151"></a>00151         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a>);
-<a name="l00152"></a>00152         std::string prog_name = program_name();
-<a name="l00153"></a>00153 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00154"></a>00154 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00155"></a>00155 <span class="preprocessor">        #endif</span>
-<a name="l00156"></a>00156 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00157"></a>00157         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00158"></a>00158         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00159"></a>00159         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_inf"</span>);
-<a name="l00160"></a>00160         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00161"></a>00161         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mult"</span>);
-<a name="l00162"></a>00162         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"swap"</span>);
-<a name="l00163"></a>00163         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00164"></a>00164         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_2"</span>);
-<a name="l00165"></a>00165         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00166"></a>00166         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00167"></a>00167         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vmax"</span>);
-<a name="l00168"></a>00168         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inner_prod"</span>);
-<a name="l00169"></a>00169         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00170"></a>00170         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"plane_rotation"</span>);
-<a name="l00171"></a>00171         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00172"></a>00172         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00173"></a>00173         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_add"</span>);
-<a name="l00174"></a>00174         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mult"</span>);
-<a name="l00175"></a>00175         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00176"></a>00176         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00177"></a>00177         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00178"></a>00178         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00179"></a>00179         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00180"></a>00180         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_1"</span>);
-<a name="l00181"></a>00181         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00182"></a>00182         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00183"></a>00183         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00184"></a>00184         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sum"</span>);
-<a name="l00185"></a>00185         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00186"></a>00186         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"diag_precond"</span>);
-<a name="l00187"></a>00187         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_sub"</span>);
-<a name="l00188"></a>00188         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00189"></a>00189        } <span class="comment">//if</span>
-<a name="l00190"></a>00190      } <span class="comment">//init</span>
-<a name="l00191"></a>00191     }; <span class="comment">// struct</span>
-<a name="l00192"></a>00192 
-<a name="l00193"></a>00193    <span class="keyword">template</span> <>
-<a name="l00194"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">00194</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><float, 1>
-<a name="l00195"></a>00195    {
-<a name="l00196"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00196</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00197"></a>00197     {
-<a name="l00198"></a>00198       <span class="keywordflow">return</span> <span class="stringliteral">"f_vector_1"</span>;
-<a name="l00199"></a>00199     }
-<a name="l00200"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00200</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00201"></a>00201     {
-<a name="l00202"></a>00202       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00203"></a>00203       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00204"></a>00204       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00205"></a>00205       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00206"></a>00206       {
-<a name="l00207"></a>00207         std::string source;
-<a name="l00208"></a>00208         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a>);
-<a name="l00209"></a>00209         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a>);
-<a name="l00210"></a>00210         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a>);
-<a name="l00211"></a>00211         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a>);
-<a name="l00212"></a>00212         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a>);
-<a name="l00213"></a>00213         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">vector_align1_inplace_div_add</a>);
-<a name="l00214"></a>00214         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a>);
-<a name="l00215"></a>00215         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a>);
-<a name="l00216"></a>00216         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">vector_align1_cpu_mul_add</a>);
-<a name="l00217"></a>00217         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a>);
-<a name="l00218"></a>00218         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a>);
-<a name="l00219"></a>00219         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a>);
-<a name="l00220"></a>00220         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a>);
-<a name="l00221"></a>00221         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">vector_align1_inplace_mul_sub</a>);
-<a name="l00222"></a>00222         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">vector_align1_inplace_mul_add</a>);
-<a name="l00223"></a>00223         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">vector_align1_mul_add</a>);
-<a name="l00224"></a>00224         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a>);
-<a name="l00225"></a>00225         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a>);
-<a name="l00226"></a>00226         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a>);
-<a name="l00227"></a>00227         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">vector_align1_cpu_inplace_mul_add</a>);
-<a name="l00228"></a>00228         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a>);
-<a name="l00229"></a>00229         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a>);
-<a name="l00230"></a>00230         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a>);
-<a name="l00231"></a>00231         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a>);
-<a name="l00232"></a>00232         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a>);
-<a name="l00233"></a>00233         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a>);
-<a name="l00234"></a>00234         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a>);
-<a name="l00235"></a>00235         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">vector_align1_inplace_div_sub</a>);
-<a name="l00236"></a>00236         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a>);
-<a name="l00237"></a>00237         source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a>);
-<a name="l00238"></a>00238         std::string prog_name = program_name();
-<a name="l00239"></a>00239 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00240"></a>00240 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00241"></a>00241 <span class="preprocessor">        #endif</span>
-<a name="l00242"></a>00242 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00243"></a>00243         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00244"></a>00244         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00245"></a>00245         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_inf"</span>);
-<a name="l00246"></a>00246         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00247"></a>00247         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mult"</span>);
-<a name="l00248"></a>00248         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"swap"</span>);
-<a name="l00249"></a>00249         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00250"></a>00250         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_2"</span>);
-<a name="l00251"></a>00251         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00252"></a>00252         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00253"></a>00253         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vmax"</span>);
-<a name="l00254"></a>00254         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inner_prod"</span>);
-<a name="l00255"></a>00255         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00256"></a>00256         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"plane_rotation"</span>);
-<a name="l00257"></a>00257         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00258"></a>00258         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00259"></a>00259         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_add"</span>);
-<a name="l00260"></a>00260         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mult"</span>);
-<a name="l00261"></a>00261         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00262"></a>00262         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00263"></a>00263         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00264"></a>00264         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00265"></a>00265         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00266"></a>00266         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_1"</span>);
-<a name="l00267"></a>00267         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00268"></a>00268         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00269"></a>00269         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00270"></a>00270         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sum"</span>);
-<a name="l00271"></a>00271         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00272"></a>00272         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"diag_precond"</span>);
-<a name="l00273"></a>00273         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_sub"</span>);
-<a name="l00274"></a>00274         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00275"></a>00275        } <span class="comment">//if</span>
-<a name="l00276"></a>00276      } <span class="comment">//init</span>
-<a name="l00277"></a>00277     }; <span class="comment">// struct</span>
-<a name="l00278"></a>00278 
-<a name="l00279"></a>00279 
-<a name="l00280"></a>00280 
-<a name="l00282"></a>00282    <span class="keyword">template</span> <>
-<a name="l00283"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">00283</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><double, 16>
-<a name="l00284"></a>00284    {
-<a name="l00285"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">00285</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00286"></a>00286     {
-<a name="l00287"></a>00287       <span class="keywordflow">return</span> <span class="stringliteral">"d_vector_16"</span>;
-<a name="l00288"></a>00288     }
-<a name="l00289"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">00289</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00290"></a>00290     {
-<a name="l00291"></a>00291       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00292"></a>00292       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00293"></a>00293       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00294"></a>00294       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00295"></a>00295       {
-<a name="l00296"></a>00296         std::string source;
-<a name="l00297"></a>00297         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00298"></a>00298         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">vector_align16_inplace_sub</a>, fp64_ext));
-<a name="l00299"></a>00299         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a>, fp64_ext));
-<a name="l00300"></a>00300         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a>, fp64_ext));
-<a name="l00301"></a>00301         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">vector_align16_mult</a>, fp64_ext));
-<a name="l00302"></a>00302         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a>, fp64_ext));
-<a name="l00303"></a>00303         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a>, fp64_ext));
-<a name="l00304"></a>00304         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a>, fp64_ext));
-<a name="l00305"></a>00305         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">vector_align16_sub</a>, fp64_ext));
-<a name="l00306"></a>00306         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a>, fp64_ext));
-<a name="l00307"></a>00307         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a>, fp64_ext));
-<a name="l00308"></a>00308         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a>, fp64_ext));
-<a name="l00309"></a>00309         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">vector_align16_add</a>, fp64_ext));
-<a name="l00310"></a>00310         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a>, fp64_ext));
-<a name="l00311"></a>00311         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a>, fp64_ext));
-<a name="l00312"></a>00312         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a>, fp64_ext));
-<a name="l00313"></a>00313         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a>, fp64_ext));
-<a name="l00314"></a>00314         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">vector_align16_cpu_mult</a>, fp64_ext));
-<a name="l00315"></a>00315         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">vector_align16_inplace_divide</a>, fp64_ext));
-<a name="l00316"></a>00316         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a>, fp64_ext));
-<a name="l00317"></a>00317         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a>, fp64_ext));
-<a name="l00318"></a>00318         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">vector_align16_inplace_add</a>, fp64_ext));
-<a name="l00319"></a>00319         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">vector_align16_divide</a>, fp64_ext));
-<a name="l00320"></a>00320         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a>, fp64_ext));
-<a name="l00321"></a>00321         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a>, fp64_ext));
-<a name="l00322"></a>00322         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00323"></a>00323         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">vector_align16_inplace_mult</a>, fp64_ext));
-<a name="l00324"></a>00324         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a>, fp64_ext));
-<a name="l00325"></a>00325         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a>, fp64_ext));
-<a name="l00326"></a>00326         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a>, fp64_ext));
-<a name="l00327"></a>00327         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a>, fp64_ext));
-<a name="l00328"></a>00328         std::string prog_name = program_name();
-<a name="l00329"></a>00329 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00330"></a>00330 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00331"></a>00331 <span class="preprocessor">        #endif</span>
-<a name="l00332"></a>00332 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00333"></a>00333         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00334"></a>00334         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00335"></a>00335         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_inf"</span>);
-<a name="l00336"></a>00336         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00337"></a>00337         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mult"</span>);
-<a name="l00338"></a>00338         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"swap"</span>);
-<a name="l00339"></a>00339         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00340"></a>00340         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_2"</span>);
-<a name="l00341"></a>00341         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00342"></a>00342         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00343"></a>00343         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vmax"</span>);
-<a name="l00344"></a>00344         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inner_prod"</span>);
-<a name="l00345"></a>00345         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00346"></a>00346         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"plane_rotation"</span>);
-<a name="l00347"></a>00347         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00348"></a>00348         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00349"></a>00349         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_add"</span>);
-<a name="l00350"></a>00350         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mult"</span>);
-<a name="l00351"></a>00351         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00352"></a>00352         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00353"></a>00353         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00354"></a>00354         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00355"></a>00355         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00356"></a>00356         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_1"</span>);
-<a name="l00357"></a>00357         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00358"></a>00358         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00359"></a>00359         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00360"></a>00360         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sum"</span>);
-<a name="l00361"></a>00361         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00362"></a>00362         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"diag_precond"</span>);
-<a name="l00363"></a>00363         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_sub"</span>);
-<a name="l00364"></a>00364         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00365"></a>00365        } <span class="comment">//if</span>
-<a name="l00366"></a>00366      } <span class="comment">//init</span>
-<a name="l00367"></a>00367     }; <span class="comment">// struct</span>
-<a name="l00368"></a>00368 
-<a name="l00369"></a>00369    <span class="keyword">template</span> <>
-<a name="l00370"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">00370</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><double, 4>
-<a name="l00371"></a>00371    {
-<a name="l00372"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">00372</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00373"></a>00373     {
-<a name="l00374"></a>00374       <span class="keywordflow">return</span> <span class="stringliteral">"d_vector_4"</span>;
-<a name="l00375"></a>00375     }
-<a name="l00376"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">00376</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00377"></a>00377     {
-<a name="l00378"></a>00378       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00379"></a>00379       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00380"></a>00380       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00381"></a>00381       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00382"></a>00382       {
-<a name="l00383"></a>00383         std::string source;
-<a name="l00384"></a>00384         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00385"></a>00385         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a>, fp64_ext));
-<a name="l00386"></a>00386         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a>, fp64_ext));
-<a name="l00387"></a>00387         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a>, fp64_ext));
-<a name="l00388"></a>00388         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a>, fp64_ext));
-<a name="l00389"></a>00389         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a>, fp64_ext));
-<a name="l00390"></a>00390         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a>, fp64_ext));
-<a name="l00391"></a>00391         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a>, fp64_ext));
-<a name="l00392"></a>00392         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a>, fp64_ext));
-<a name="l00393"></a>00393         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a>, fp64_ext));
-<a name="l00394"></a>00394         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a>, fp64_ext));
-<a name="l00395"></a>00395         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a>, fp64_ext));
-<a name="l00396"></a>00396         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a>, fp64_ext));
-<a name="l00397"></a>00397         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a>, fp64_ext));
-<a name="l00398"></a>00398         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a>, fp64_ext));
-<a name="l00399"></a>00399         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a>, fp64_ext));
-<a name="l00400"></a>00400         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a>, fp64_ext));
-<a name="l00401"></a>00401         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a>, fp64_ext));
-<a name="l00402"></a>00402         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a>, fp64_ext));
-<a name="l00403"></a>00403         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a>, fp64_ext));
-<a name="l00404"></a>00404         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a>, fp64_ext));
-<a name="l00405"></a>00405         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a>, fp64_ext));
-<a name="l00406"></a>00406         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a>, fp64_ext));
-<a name="l00407"></a>00407         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a>, fp64_ext));
-<a name="l00408"></a>00408         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a>, fp64_ext));
-<a name="l00409"></a>00409         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00410"></a>00410         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a>, fp64_ext));
-<a name="l00411"></a>00411         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a>, fp64_ext));
-<a name="l00412"></a>00412         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a>, fp64_ext));
-<a name="l00413"></a>00413         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a>, fp64_ext));
-<a name="l00414"></a>00414         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a>, fp64_ext));
-<a name="l00415"></a>00415         std::string prog_name = program_name();
-<a name="l00416"></a>00416 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00417"></a>00417 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00418"></a>00418 <span class="preprocessor">        #endif</span>
-<a name="l00419"></a>00419 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00420"></a>00420         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00421"></a>00421         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00422"></a>00422         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_inf"</span>);
-<a name="l00423"></a>00423         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00424"></a>00424         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mult"</span>);
-<a name="l00425"></a>00425         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"swap"</span>);
-<a name="l00426"></a>00426         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00427"></a>00427         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_2"</span>);
-<a name="l00428"></a>00428         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00429"></a>00429         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00430"></a>00430         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vmax"</span>);
-<a name="l00431"></a>00431         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inner_prod"</span>);
-<a name="l00432"></a>00432         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00433"></a>00433         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"plane_rotation"</span>);
-<a name="l00434"></a>00434         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00435"></a>00435         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00436"></a>00436         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_add"</span>);
-<a name="l00437"></a>00437         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mult"</span>);
-<a name="l00438"></a>00438         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00439"></a>00439         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00440"></a>00440         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00441"></a>00441         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00442"></a>00442         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00443"></a>00443         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_1"</span>);
-<a name="l00444"></a>00444         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00445"></a>00445         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00446"></a>00446         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00447"></a>00447         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sum"</span>);
-<a name="l00448"></a>00448         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00449"></a>00449         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"diag_precond"</span>);
-<a name="l00450"></a>00450         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_sub"</span>);
-<a name="l00451"></a>00451         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00452"></a>00452        } <span class="comment">//if</span>
-<a name="l00453"></a>00453      } <span class="comment">//init</span>
-<a name="l00454"></a>00454     }; <span class="comment">// struct</span>
-<a name="l00455"></a>00455 
-<a name="l00456"></a>00456    <span class="keyword">template</span> <>
-<a name="l00457"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">00457</a>    <span class="keyword">struct </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><double, 1>
-<a name="l00458"></a>00458    {
-<a name="l00459"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00459</a>     <span class="keyword">static</span> std::string program_name()
-<a name="l00460"></a>00460     {
-<a name="l00461"></a>00461       <span class="keywordflow">return</span> <span class="stringliteral">"d_vector_1"</span>;
-<a name="l00462"></a>00462     }
-<a name="l00463"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00463</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00464"></a>00464     {
-<a name="l00465"></a>00465       <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00466"></a>00466       <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00467"></a>00467       <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00468"></a>00468       <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00469"></a>00469       {
-<a name="l00470"></a>00470         std::string source;
-<a name="l00471"></a>00471         std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00472"></a>00472         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a>, fp64_ext));
-<a name="l00473"></a>00473         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a>, fp64_ext));
-<a name="l00474"></a>00474         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a>, fp64_ext));
-<a name="l00475"></a>00475         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a>, fp64_ext));
-<a name="l00476"></a>00476         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a>, fp64_ext));
-<a name="l00477"></a>00477         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">vector_align1_inplace_div_add</a>, fp64_ext));
-<a name="l00478"></a>00478         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a>, fp64_ext));
-<a name="l00479"></a>00479         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a>, fp64_ext));
-<a name="l00480"></a>00480         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">vector_align1_cpu_mul_add</a>, fp64_ext));
-<a name="l00481"></a>00481         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a>, fp64_ext));
-<a name="l00482"></a>00482         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a>, fp64_ext));
-<a name="l00483"></a>00483         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a>, fp64_ext));
-<a name="l00484"></a>00484         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a>, fp64_ext));
-<a name="l00485"></a>00485         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">vector_align1_inplace_mul_sub</a>, fp64_ext));
-<a name="l00486"></a>00486         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">vector_align1_inplace_mul_add</a>, fp64_ext));
-<a name="l00487"></a>00487         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">vector_align1_mul_add</a>, fp64_ext));
-<a name="l00488"></a>00488         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a>, fp64_ext));
-<a name="l00489"></a>00489         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a>, fp64_ext));
-<a name="l00490"></a>00490         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a>, fp64_ext));
-<a name="l00491"></a>00491         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">vector_align1_cpu_inplace_mul_add</a>, fp64_ext));
-<a name="l00492"></a>00492         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a>, fp64_ext));
-<a name="l00493"></a>00493         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a>, fp64_ext));
-<a name="l00494"></a>00494         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a>, fp64_ext));
-<a name="l00495"></a>00495         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a>, fp64_ext));
-<a name="l00496"></a>00496         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00497"></a>00497         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a>, fp64_ext));
-<a name="l00498"></a>00498         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a>, fp64_ext));
-<a name="l00499"></a>00499         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">vector_align1_inplace_div_sub</a>, fp64_ext));
-<a name="l00500"></a>00500         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a>, fp64_ext));
-<a name="l00501"></a>00501         source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a>, fp64_ext));
-<a name="l00502"></a>00502         std::string prog_name = program_name();
-<a name="l00503"></a>00503 <span class="preprocessor">        #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00504"></a>00504 <span class="preprocessor"></span>        std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00505"></a>00505 <span class="preprocessor">        #endif</span>
-<a name="l00506"></a>00506 <span class="preprocessor"></span>        context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00507"></a>00507         <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00508"></a>00508         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00509"></a>00509         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_inf"</span>);
-<a name="l00510"></a>00510         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00511"></a>00511         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mult"</span>);
-<a name="l00512"></a>00512         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"swap"</span>);
-<a name="l00513"></a>00513         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00514"></a>00514         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_2"</span>);
-<a name="l00515"></a>00515         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00516"></a>00516         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00517"></a>00517         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vmax"</span>);
-<a name="l00518"></a>00518         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inner_prod"</span>);
-<a name="l00519"></a>00519         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00520"></a>00520         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"plane_rotation"</span>);
-<a name="l00521"></a>00521         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00522"></a>00522         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00523"></a>00523         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_add"</span>);
-<a name="l00524"></a>00524         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mult"</span>);
-<a name="l00525"></a>00525         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00526"></a>00526         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00527"></a>00527         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00528"></a>00528         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00529"></a>00529         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00530"></a>00530         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_1"</span>);
-<a name="l00531"></a>00531         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00532"></a>00532         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00533"></a>00533         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00534"></a>00534         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sum"</span>);
-<a name="l00535"></a>00535         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00536"></a>00536         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"diag_precond"</span>);
-<a name="l00537"></a>00537         prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_sub"</span>);
-<a name="l00538"></a>00538         init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00539"></a>00539        } <span class="comment">//if</span>
-<a name="l00540"></a>00540      } <span class="comment">//init</span>
-<a name="l00541"></a>00541     }; <span class="comment">// struct</span>
-<a name="l00542"></a>00542 
-<a name="l00543"></a>00543 
-<a name="l00544"></a>00544   }  <span class="comment">//namespace kernels</span>
-<a name="l00545"></a>00545  }  <span class="comment">//namespace linalg</span>
-<a name="l00546"></a>00546 }  <span class="comment">//namespace viennacl</span>
-<a name="l00547"></a>00547 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector__operations_8hpp.html b/doc/doxygen/html/vector__operations_8hpp.html
deleted file mode 100644
index 2739f6b..0000000
--- a/doc/doxygen/html/vector__operations_8hpp.html
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/vector_operations.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/vector_operations.hpp File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Implementations of vector operations.  
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector__kernels_8h_source.html">viennacl/linalg/kernels/vector_kernels.h</a>"</code><br/>
-
-<p><a href="vector__operations_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9ea1aff45c0fb10d62801c9c25c8831e">add</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a9ea1aff45c0fb10d62801c9c25c8831e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aca5f0d1977c4cd4e70cc6af6c91fce86">inplace_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#aca5f0d1977c4cd4e70cc6af6c91fce86"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aad5f201a0e90a230b4376deb311c019a">sub</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#aad5f201a0e90a230b4376deb311c019a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a04b2c67e5839525ba813da61fde893ab">inplace_sub</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a04b2c67e5839525ba813da61fde893ab"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0">mult</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#acae4aaa06516b42063bd44c12e5d56d0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7cefe6d56ec8672118ff744eac103cae">mult</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, SCALARTYPE alpha, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a7cefe6d56ec8672118ff744eac103cae"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#affe330e509b142a9db9004f6a67c4183">inplace_mult</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#affe330e509b142a9db9004f6a67c4183"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2aa5a5587eeadc46ce37159c0429f13e">inplace_mult</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, SCALARTYPE alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a2aa5a5587eeadc46ce37159c0429f13e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61">divide</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a0acf4875161f1193bcda16d33a66ce61"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9dfce56da8c2b9d901800b205fb6b2e2">inplace_divide</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a9dfce56da8c2b9d901800b205fb6b2e2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df">mul_add</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, scalar< SCALARTYPE > const &alpha, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a6047863f8fb097162ffad8b1b847d1df"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a136d1799060f2adc907c8b67371a4134">mul_add</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, SCALARTYPE alpha, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a136d1799060f2adc907c8b67371a4134"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7">inplace_mul_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a7fadfccd4d7dd18f74cbe448302236e7"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aaa53a9e3743e89dd87f5e77d28621a52">inplace_mul_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, SCALARTYPE alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#aaa53a9e3743e89dd87f5e77d28621a52"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0bf813502bb4d25ab2613f1575a4fca3">mul_sub</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, scalar< SCALARTYPE > const &alpha, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#a0bf813502bb4d25ab2613f1575a4fca3"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e">inplace_mul_sub</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#ab2cf15c4dcf00b57cf6342492ab8ea8e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83">inplace_div_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace divide-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#abbe5a4f98fb91f55c405aa857af71d83"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21">inplace_div_sub</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace divide-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.  <a href="#aad1b78ccd178079d1c3c503b6810dd21"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afc191e1a26f0c0037e320a3b7dc831cc">inner_prod_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2).  <a href="#afc191e1a26f0c0037e320a3b7dc831cc"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT1, unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT1 ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT2 ><br class="typebreak"/>
-, viennacl::op_inner_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b">inner_prod_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT1 > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT2 > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product of two vectors.  <a href="#a23fbff833bbc632131b761e732bce72b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30">norm_1_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the l^1-norm of a vector.  <a href="#a2479f0743a32118e916cca8edb895c30"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a">norm_2_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the l^2-norm of a vector - implementation.  <a href="#a96a2ee028641ffd7b80e6a1bfad34c6a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca">norm_inf_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the supremum-norm of a vector.  <a href="#a43009c5365c78c81463f54c2848378ca"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">cl_uint </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad87b9ecda483a69e5d5eed36928840da">index_norm_inf</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the index of the first entry that is equal to the supremum-norm in modulus.  <a href="#ad87b9ecda483a69e5d5eed36928840da"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a38eb0d2bea8cb4a78253c9fe329000a9">plane_rotation</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, SCALARTYPE alpha, SCALARTYPE beta)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes a plane rotation of two vectors.  <a href="#a38eb0d2bea8cb4a78253c9fe329000a9"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of vector operations. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector__operations_8hpp_source.html b/doc/doxygen/html/vector__operations_8hpp_source.html
deleted file mode 100644
index 52db276..0000000
--- a/doc/doxygen/html/vector__operations_8hpp_source.html
+++ /dev/null
@@ -1,508 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/vector_operations.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/vector_operations.hpp</h1>  </div>
-</div>
-<div class="contents">
-<a href="vector__operations_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment">   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment">   http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment">                             -----------------</span>
-<a name="l00005"></a>00005 <span class="comment">                     ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment">                             -----------------</span>
-<a name="l00007"></a>00007 <span class="comment">                            </span>
-<a name="l00008"></a>00008 <span class="comment">   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment">               Florian Rudolf                     flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment">               Josef Weinbub                      weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment">   license:    MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_VECTOR_OPERATIONS_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_VECTOR_OPERATIONS_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="vector__kernels_8h.html">viennacl/linalg/kernels/vector_kernels.h</a>"</span>
-<a name="l00029"></a>00029 
-<a name="l00030"></a>00030 <span class="keyword">namespace </span>viennacl
-<a name="l00031"></a>00031 {
-<a name="l00032"></a>00032   <span class="keyword">namespace </span>linalg
-<a name="l00033"></a>00033   {
-<a name="l00040"></a>00040     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a9ea1aff45c0fb10d62801c9c25c8831e">00041</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f" title="Adds two dense matrices and writes the result to a third matrix.">add</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1, 
-<a name="l00042"></a>00042              <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2, 
-<a name="l00043"></a>00043              <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00044"></a>00044     {
-<a name="l00045"></a>00045       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() && vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00046"></a>00046 
-<a name="l00047"></a>00047       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00048"></a>00048       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"add"</span>);
-<a name="l00049"></a>00049       
-<a name="l00050"></a>00050       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, result, size));        
-<a name="l00051"></a>00051     }
-<a name="l00052"></a>00052 
-<a name="l00060"></a>00060     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00061"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aca5f0d1977c4cd4e70cc6af6c91fce86">00061</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950" title="Adds a dense matrix to another.">inplace_add</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00062"></a>00062                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2)
-<a name="l00063"></a>00063     {
-<a name="l00064"></a>00064       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00065"></a>00065       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00066"></a>00066       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_add"</span>);
-<a name="l00067"></a>00067 
-<a name="l00068"></a>00068       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, size));        
-<a name="l00069"></a>00069     }
-<a name="l00070"></a>00070 
-<a name="l00079"></a>00079     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00080"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aad5f201a0e90a230b4376deb311c019a">00080</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e" title="Adds two dense matrices and writes the result to a third matrix.">sub</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00081"></a>00081              <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00082"></a>00082              <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00083"></a>00083     {
-<a name="l00084"></a>00084       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00085"></a>00085       result.<a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00086"></a>00086       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00087"></a>00087       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"sub"</span>);
-<a name="l00088"></a>00088 
-<a name="l00089"></a>00089       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, result, size));        
-<a name="l00090"></a>00090     }
-<a name="l00091"></a>00091 
-<a name="l00099"></a>00099     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00100"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a04b2c67e5839525ba813da61fde893ab">00100</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6" title="Adds a dense matrix to another.">inplace_sub</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1, 
-<a name="l00101"></a>00101                      <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2)
-<a name="l00102"></a>00102     {
-<a name="l00103"></a>00103       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00104"></a>00104       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00105"></a>00105       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_sub"</span>);
-<a name="l00106"></a>00106 
-<a name="l00107"></a>00107       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, size));        
-<a name="l00108"></a>00108     }
-<a name="l00109"></a>00109 
-<a name="l00110"></a>00110 
-<a name="l00111"></a>00111     <span class="comment">//result = vec * scalar</span>
-<a name="l00120"></a>00120 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00121"></a><a class="code" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0">00121</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">mult</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00122"></a>00122               <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha,
-<a name="l00123"></a>00123               <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00124"></a>00124     {
-<a name="l00125"></a>00125       result.<a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00126"></a>00126       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"mult"</span>);
-<a name="l00127"></a>00127 
-<a name="l00128"></a>00128       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec, alpha, result, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));        
-<a name="l00129"></a>00129     }
-<a name="l00130"></a>00130 
-<a name="l00139"></a>00139     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00140"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a7cefe6d56ec8672118ff744eac103cae">00140</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">mult</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00141"></a>00141               SCALARTYPE alpha,
-<a name="l00142"></a>00142               <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00143"></a>00143     {
-<a name="l00144"></a>00144       result.<a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00145"></a>00145       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"cpu_mult"</span>);
-<a name="l00146"></a>00146 
-<a name="l00147"></a>00147       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec, alpha, result, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));        
-<a name="l00148"></a>00148     }
-<a name="l00149"></a>00149 
-<a name="l00157"></a>00157     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00158"></a><a class="code" href="namespaceviennacl_1_1linalg.html#affe330e509b142a9db9004f6a67c4183">00158</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">inplace_mult</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00159"></a>00159                       <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha)
-<a name="l00160"></a>00160     {
-<a name="l00161"></a>00161       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_mult"</span>);
-<a name="l00162"></a>00162 
-<a name="l00163"></a>00163       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec, alpha, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));        
-<a name="l00164"></a>00164     }
-<a name="l00165"></a>00165 
-<a name="l00173"></a>00173     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00174"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a2aa5a5587eeadc46ce37159c0429f13e">00174</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">inplace_mult</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00175"></a>00175                       SCALARTYPE alpha)
-<a name="l00176"></a>00176     {
-<a name="l00177"></a>00177       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00178"></a>00178 
-<a name="l00179"></a>00179       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec, alpha, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));        
-<a name="l00180"></a>00180     }
-<a name="l00181"></a>00181 
-<a name="l00182"></a>00182     <span class="comment">//result = vec / scalar</span>
-<a name="l00191"></a>00191 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00192"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61">00192</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">divide</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00193"></a>00193                 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha,
-<a name="l00194"></a>00194                 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00195"></a>00195     {
-<a name="l00196"></a>00196       assert(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00197"></a>00197       result.<a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of &#39;ALIGNMENT&#39;...">resize</a>(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00198"></a>00198       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"divide"</span>);
-<a name="l00199"></a>00199 
-<a name="l00200"></a>00200       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec, alpha, result, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));        
-<a name="l00201"></a>00201     }
-<a name="l00202"></a>00202 
-<a name="l00210"></a>00210     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00211"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a9dfce56da8c2b9d901800b205fb6b2e2">00211</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33" title="Multiplies a dense matrix by a scalar.">inplace_divide</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00212"></a>00212                         <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha)
-<a name="l00213"></a>00213     {
-<a name="l00214"></a>00214       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_divide"</span>);
-<a name="l00215"></a>00215 
-<a name="l00216"></a>00216       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec, alpha, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));        
-<a name="l00217"></a>00217     }
-<a name="l00218"></a>00218 
-<a name="l00219"></a>00219     <span class="comment">//result = factor * vec1 + vec2</span>
-<a name="l00229"></a>00229 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00230"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df">00230</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df" title="Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fi...">mul_add</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00231"></a>00231                  <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha,
-<a name="l00232"></a>00232                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00233"></a>00233                  <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00234"></a>00234     {
-<a name="l00235"></a>00235       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() && result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00236"></a>00236       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"mul_add"</span>);
-<a name="l00237"></a>00237       cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00238"></a>00238 
-<a name="l00239"></a>00239       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, alpha, vec2, result, size));        
-<a name="l00240"></a>00240     }
-<a name="l00241"></a>00241 
-<a name="l00251"></a>00251     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00252"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a136d1799060f2adc907c8b67371a4134">00252</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df" title="Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fi...">mul_add</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00253"></a>00253                  SCALARTYPE alpha,
-<a name="l00254"></a>00254                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00255"></a>00255                  <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00256"></a>00256     {
-<a name="l00257"></a>00257       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() && result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00258"></a>00258       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00259"></a>00259       cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00260"></a>00260 
-<a name="l00261"></a>00261       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, alpha, vec2, result, size));        
-<a name="l00262"></a>00262     }
-<a name="l00263"></a>00263 
-<a name="l00264"></a>00264     <span class="comment">//vec1 += factor * vec2</span>
-<a name="l00273"></a>00273 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00274"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7">00274</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">inplace_mul_add</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00275"></a>00275                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00276"></a>00276                          <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha)
-<a name="l00277"></a>00277     {
-<a name="l00278"></a>00278       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00279"></a>00279       cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00280"></a>00280       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00281"></a>00281 
-<a name="l00282"></a>00282       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, alpha, size));        
-<a name="l00283"></a>00283     }
-<a name="l00284"></a>00284 
-<a name="l00293"></a>00293     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00294"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aaa53a9e3743e89dd87f5e77d28621a52">00294</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">inplace_mul_add</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00295"></a>00295                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00296"></a>00296                          SCALARTYPE alpha)
-<a name="l00297"></a>00297     {
-<a name="l00298"></a>00298       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00299"></a>00299       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00300"></a>00300       cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00301"></a>00301 
-<a name="l00302"></a>00302       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, alpha, size));        
-<a name="l00303"></a>00303     }
-<a name="l00304"></a>00304 
-<a name="l00314"></a>00314     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00315"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a0bf813502bb4d25ab2613f1575a4fca3">00315</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0bf813502bb4d25ab2613f1575a4fca3" title="Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">mul_sub</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00316"></a>00316                  <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha,
-<a name="l00317"></a>00317                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00318"></a>00318                  <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00319"></a>00319     {
-<a name="l00320"></a>00320       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() && result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00321"></a>00321       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"mul_sub"</span>);
-<a name="l00322"></a>00322       cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00323"></a>00323 
-<a name="l00324"></a>00324       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, alpha, vec2, result, size));        
-<a name="l00325"></a>00325     }
-<a name="l00326"></a>00326 
-<a name="l00327"></a>00327 
-<a name="l00336"></a>00336     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00337"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e">00337</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e" title="Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead...">inplace_mul_sub</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00338"></a>00338                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00339"></a>00339                          <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha)
-<a name="l00340"></a>00340     {
-<a name="l00341"></a>00341       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00342"></a>00342       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00343"></a>00343       cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00344"></a>00344 
-<a name="l00345"></a>00345       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, alpha, size));        
-<a name="l00346"></a>00346     }
-<a name="l00347"></a>00347 
-<a name="l00356"></a>00356     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00357"></a><a class="code" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83">00357</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83" title="Inplace divide-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">inplace_div_add</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00358"></a>00358                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00359"></a>00359                          <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha)
-<a name="l00360"></a>00360     {
-<a name="l00361"></a>00361       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00362"></a>00362       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00363"></a>00363       cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00364"></a>00364 
-<a name="l00365"></a>00365       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, alpha, size));        
-<a name="l00366"></a>00366     }
-<a name="l00367"></a>00367 
-<a name="l00376"></a>00376     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00377"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21">00377</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21" title="Inplace divide-subtract operation. Try to use the overloaded operators for vector instead...">inplace_div_sub</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00378"></a>00378                          <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00379"></a>00379                          <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha)
-<a name="l00380"></a>00380     {
-<a name="l00381"></a>00381       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00382"></a>00382       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00383"></a>00383       cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00384"></a>00384 
-<a name="l00385"></a>00385       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, alpha, size));        
-<a name="l00386"></a>00386     }
-<a name="l00387"></a>00387 
-<a name="l00388"></a>00388 
-<a name="l00390"></a>00390 
-<a name="l00391"></a>00391 
-<a name="l00392"></a>00392     <span class="comment">//implementation of inner product:</span>
-<a name="l00393"></a>00393     <span class="comment">//namespace {</span>
-<a name="l00400"></a>00400 <span class="comment"></span>      <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00401"></a><a class="code" href="namespaceviennacl_1_1linalg.html#afc191e1a26f0c0037e320a3b7dc831cc">00401</a>       <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b" title="Computes the inner product of two vectors.">inner_prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00402"></a>00402                            <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00403"></a>00403                            <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result)
-<a name="l00404"></a>00404       {
-<a name="l00405"></a>00405         assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00406"></a>00406         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inner_prod"</span>);
-<a name="l00407"></a>00407         cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00408"></a>00408         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> work_groups = k.global_work_size() / k.local_work_size();
-<a name="l00409"></a>00409         <span class="keyword">static</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE></a> temp(work_groups);
-<a name="l00410"></a>00410         
-<a name="l00411"></a>00411         <span class="comment">/*unsigned int pos = 0;</span>
-<a name="l00412"></a>00412 <span class="comment">        k.argument(pos++, vec1.handle());</span>
-<a name="l00413"></a>00413 <span class="comment">        k.argument(pos++, vec2.handle());</span>
-<a name="l00414"></a>00414 <span class="comment">        k.argument(pos++, size);</span>
-<a name="l00415"></a>00415 <span class="comment">        k.local_buffer(pos++, static_cast<unsigned int>(sizeof(SCALARTYPE) * k.local_work_size()));</span>
-<a name="l00416"></a>00416 <span class="comment">        k.argument(pos++, temp.handle());*/</span>
-<a name="l00417"></a>00417         
-<a name="l00418"></a>00418         <span class="comment">//Note: Number of work groups MUST be a power of two!</span>
-<a name="l00419"></a>00419         <span class="comment">//std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;</span>
-<a name="l00420"></a>00420         assert( work_groups * k.local_work_size() == k.global_work_size() );
-<a name="l00421"></a>00421         assert( (k.global_work_size() / k.local_work_size()) == 1 
-<a name="l00422"></a>00422                || (k.global_work_size() / k.local_work_size()) == 2 
-<a name="l00423"></a>00423                || (k.global_work_size() / k.local_work_size()) == 4
-<a name="l00424"></a>00424                || (k.global_work_size() / k.local_work_size()) == 8
-<a name="l00425"></a>00425                || (k.global_work_size() / k.local_work_size()) == 16
-<a name="l00426"></a>00426                || (k.global_work_size() / k.local_work_size()) == 32
-<a name="l00427"></a>00427                || (k.global_work_size() / k.local_work_size()) == 64
-<a name="l00428"></a>00428                || (k.global_work_size() / k.local_work_size()) == 128
-<a name="l00429"></a>00429                || (k.global_work_size() / k.local_work_size()) == 256
-<a name="l00430"></a>00430                || (k.global_work_size() / k.local_work_size()) == 512 );
-<a name="l00431"></a>00431                
-<a name="l00432"></a>00432         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, size, <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * k.local_work_size()), temp));        
-<a name="l00433"></a>00433 
-<a name="l00434"></a>00434         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & ksum = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"sum"</span>);
-<a name="l00435"></a>00435         
-<a name="l00436"></a>00436         ksum.local_work_size(0, work_groups);
-<a name="l00437"></a>00437         ksum.global_work_size(0, work_groups);
-<a name="l00438"></a>00438         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(ksum(temp, result));
-<a name="l00439"></a>00439       }
-<a name="l00440"></a>00440     <span class="comment">//}</span>
-<a name="l00441"></a>00441 
-<a name="l00442"></a>00442     <span class="comment">//public interface of inner product</span>
-<a name="l00449"></a>00449 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00450"></a>00450     <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<SCALARTYPE, ALIGNMENT1></a>, 
-<a name="l00451"></a>00451                                  <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT2></a>,
-<a name="l00452"></a>00452                                  viennacl::op_inner_prod >
-<a name="l00453"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b">00453</a>     <a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b" title="Computes the inner product of two vectors.">inner_prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT1></a> & vec1,
-<a name="l00454"></a>00454                     <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT2></a> & vec2)
-<a name="l00455"></a>00455     {
-<a name="l00456"></a>00456       <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<SCALARTYPE, ALIGNMENT1></a>, 
-<a name="l00457"></a>00457                                           <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT2></a>,
-<a name="l00458"></a>00458                                           viennacl::op_inner_prod >(vec1, vec2);
-<a name="l00459"></a>00459     }
-<a name="l00460"></a>00460 
-<a name="l00461"></a>00461 
-<a name="l00462"></a>00462     
-<a name="l00468"></a>00468     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00469"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30">00469</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30" title="Computes the l^1-norm of a vector.">norm_1_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec,
-<a name="l00470"></a>00470                      <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result)
-<a name="l00471"></a>00471     {
-<a name="l00472"></a>00472       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"norm_1"</span>);
-<a name="l00473"></a>00473       cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(vcl_vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00474"></a>00474       
-<a name="l00475"></a>00475       <span class="keywordflow">if</span> (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>() != k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>())
-<a name="l00476"></a>00476       {
-<a name="l00477"></a>00477         <span class="comment">//NOTE: For some reasons the kernel could not be started with several work groups on NVIDIA hardware. This forces us to use as many parallel threads within a single work group as possible</span>
-<a name="l00478"></a>00478         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().max_work_group_size());
-<a name="l00479"></a>00479         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().max_work_group_size());
-<a name="l00480"></a>00480       }
-<a name="l00481"></a>00481       
-<a name="l00482"></a>00482       
-<a name="l00483"></a>00483       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> work_groups = k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>();
-<a name="l00484"></a>00484       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE></a> temp(work_groups);
-<a name="l00485"></a>00485         
-<a name="l00486"></a>00486       <span class="comment">//Note: Number of work groups MUST be a power of two!</span>
-<a name="l00487"></a>00487       <span class="comment">//std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;</span>
-<a name="l00488"></a>00488       assert( work_groups * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>() == k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() );
-<a name="l00489"></a>00489       assert( (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 1 
-<a name="l00490"></a>00490              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 2 
-<a name="l00491"></a>00491              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 4
-<a name="l00492"></a>00492              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 8
-<a name="l00493"></a>00493              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 16
-<a name="l00494"></a>00494              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 32
-<a name="l00495"></a>00495              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 64
-<a name="l00496"></a>00496              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 128
-<a name="l00497"></a>00497              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 256
-<a name="l00498"></a>00498              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 512 );
-<a name="l00499"></a>00499                
-<a name="l00500"></a>00500         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vcl_vec, size, <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()), temp));        
-<a name="l00501"></a>00501         
-<a name="l00502"></a>00502         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & ksum = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"sum"</span>);
-<a name="l00503"></a>00503         
-<a name="l00504"></a>00504         ksum.local_work_size(0, work_groups);
-<a name="l00505"></a>00505         ksum.global_work_size(0, work_groups);
-<a name="l00506"></a>00506         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(ksum(temp, result));
-<a name="l00507"></a>00507     }
-<a name="l00508"></a>00508 
-<a name="l00514"></a>00514     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00515"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a">00515</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a" title="Computes the l^2-norm of a vector - implementation.">norm_2_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec,
-<a name="l00516"></a>00516                      <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result)
-<a name="l00517"></a>00517     {
-<a name="l00518"></a>00518       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"norm_2"</span>);
-<a name="l00519"></a>00519       cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(vcl_vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00520"></a>00520       
-<a name="l00521"></a>00521       <span class="keywordflow">if</span> (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>() != k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>())
-<a name="l00522"></a>00522       {
-<a name="l00523"></a>00523         <span class="comment">//NOTE: For some reasons the kernel could not be started with several work groups on NVIDIA hardware. This forces us to use as many parallel threads within a single work group as possible</span>
-<a name="l00524"></a>00524         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().max_work_group_size());
-<a name="l00525"></a>00525         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().max_work_group_size());
-<a name="l00526"></a>00526       }
-<a name="l00527"></a>00527 
-<a name="l00528"></a>00528       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> work_groups = k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>();
-<a name="l00529"></a>00529       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE></a> temp(work_groups);
-<a name="l00530"></a>00530         
-<a name="l00531"></a>00531       <span class="comment">//Note: Number of work groups MUST be a power of two!</span>
-<a name="l00532"></a>00532       <span class="comment">//std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;</span>
-<a name="l00533"></a>00533       assert( work_groups * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>() == k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() );
-<a name="l00534"></a>00534       assert( (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 1 
-<a name="l00535"></a>00535              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 2 
-<a name="l00536"></a>00536              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 4
-<a name="l00537"></a>00537              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 8
-<a name="l00538"></a>00538              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 16
-<a name="l00539"></a>00539              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 32
-<a name="l00540"></a>00540              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 64
-<a name="l00541"></a>00541              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 128
-<a name="l00542"></a>00542              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 256
-<a name="l00543"></a>00543              || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 512 );
-<a name="l00544"></a>00544                
-<a name="l00545"></a>00545         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vcl_vec, size, <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()), temp));        
-<a name="l00546"></a>00546 
-<a name="l00547"></a>00547         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & sqrt_sum = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00548"></a>00548         
-<a name="l00549"></a>00549         sqrt_sum.local_work_size(0, work_groups);
-<a name="l00550"></a>00550         sqrt_sum.global_work_size(0, work_groups);
-<a name="l00551"></a>00551         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(sqrt_sum(temp, result, work_groups));
-<a name="l00552"></a>00552     }
-<a name="l00553"></a>00553 
-<a name="l00559"></a>00559     <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00560"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca">00560</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca" title="Computes the supremum-norm of a vector.">norm_inf_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec,
-<a name="l00561"></a>00561                   <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result)
-<a name="l00562"></a>00562     {
-<a name="l00563"></a>00563       cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(vcl_vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00564"></a>00564       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"norm_inf"</span>);
-<a name="l00565"></a>00565 
-<a name="l00566"></a>00566       <span class="keywordflow">if</span> (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>() != k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>())
-<a name="l00567"></a>00567       {
-<a name="l00568"></a>00568         <span class="comment">//NOTE: For some reasons the kernel could not be started with several work groups on NVIDIA hardware. This forces us to use as many parallel threads within a single work group as possible</span>
-<a name="l00569"></a>00569         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().max_work_group_size());
-<a name="l00570"></a>00570         k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().max_work_group_size());
-<a name="l00571"></a>00571       }
-<a name="l00572"></a>00572       
-<a name="l00573"></a>00573       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> work_groups = k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>();
-<a name="l00574"></a>00574       <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE></a> temp(work_groups);
-<a name="l00575"></a>00575         
-<a name="l00576"></a>00576       <span class="comment">//Note: Number of work groups MUST be a power of two!</span>
-<a name="l00577"></a>00577       <span class="comment">//std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;</span>
-<a name="l00578"></a>00578       assert( work_groups * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>() == k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() );
-<a name="l00579"></a>00579       assert( work_groups == 1 
-<a name="l00580"></a>00580              || work_groups == 2 
-<a name="l00581"></a>00581              || work_groups == 4
-<a name="l00582"></a>00582              || work_groups == 8
-<a name="l00583"></a>00583              || work_groups == 16
-<a name="l00584"></a>00584              || work_groups == 32
-<a name="l00585"></a>00585              || work_groups == 64
-<a name="l00586"></a>00586              || work_groups == 128
-<a name="l00587"></a>00587              || work_groups == 256
-<a name="l00588"></a>00588              || work_groups == 512 );
-<a name="l00589"></a>00589                
-<a name="l00590"></a>00590         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vcl_vec, size, <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()), temp));
-<a name="l00591"></a>00591         <span class="comment">//viennacl::ocl::get_queue().finish();</span>
-<a name="l00592"></a>00592         
-<a name="l00593"></a>00593         <span class="comment">//part 2: parallel reduction of reduced kernel:</span>
-<a name="l00594"></a>00594         <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & max_kernel = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"vmax"</span>);
-<a name="l00595"></a>00595         max_kernel.local_work_size(0, work_groups);
-<a name="l00596"></a>00596         max_kernel.global_work_size(0, work_groups);
-<a name="l00597"></a>00597         
-<a name="l00598"></a>00598         <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(max_kernel(temp, result, work_groups));
-<a name="l00599"></a>00599     }
-<a name="l00600"></a>00600 
-<a name="l00601"></a>00601     <span class="comment">//This function should return a CPU scalar, otherwise statements like </span>
-<a name="l00602"></a>00602     <span class="comment">// vcl_rhs[index_norm_inf(vcl_rhs)] </span>
-<a name="l00603"></a>00603     <span class="comment">// are ambiguous</span>
-<a name="l00609"></a>00609 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00610"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ad87b9ecda483a69e5d5eed36928840da">00610</a>     cl_uint <a class="code" href="namespaceviennacl_1_1linalg.html#ad87b9ecda483a69e5d5eed36928840da" title="Computes the index of the first entry that is equal to the supremum-norm in modulus.">index_norm_inf</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec)
-<a name="l00611"></a>00611     {
-<a name="l00612"></a>00612       <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> h = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(cl_uint));
-<a name="l00613"></a>00613       
-<a name="l00614"></a>00614       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00615"></a>00615       cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(vcl_vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00616"></a>00616 
-<a name="l00617"></a>00617       k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00618"></a>00618       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vcl_vec,
-<a name="l00619"></a>00619                                size,
-<a name="l00620"></a>00620                                <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()),
-<a name="l00621"></a>00621                                <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(cl_uint) * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()), h));
-<a name="l00622"></a>00622       
-<a name="l00623"></a>00623       <span class="comment">//read value:</span>
-<a name="l00624"></a>00624       cl_uint result;
-<a name="l00625"></a>00625       cl_int err;
-<a name="l00626"></a>00626       err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), h, CL_TRUE, 0, <span class="keyword">sizeof</span>(cl_uint), &result, 0, NULL, NULL);
-<a name="l00627"></a>00627       <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00628"></a>00628       <span class="keywordflow">return</span> result;
-<a name="l00629"></a>00629     }
-<a name="l00630"></a>00630     
-<a name="l00631"></a>00631     <span class="comment">//TODO: Special case vec1 == vec2 allows improvement!!</span>
-<a name="l00641"></a>00641 <span class="comment"></span>    <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00642"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a38eb0d2bea8cb4a78253c9fe329000a9">00642</a>     <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a38eb0d2bea8cb4a78253c9fe329000a9" title="Computes a plane rotation of two vectors.">plane_rotation</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00643"></a>00643                         <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00644"></a>00644                         SCALARTYPE alpha,
-<a name="l00645"></a>00645                         SCALARTYPE beta)
-<a name="l00646"></a>00646     {
-<a name="l00647"></a>00647       assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00648"></a>00648       <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"plane_rotation"</span>);
-<a name="l00649"></a>00649 
-<a name="l00650"></a>00650       <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, alpha, beta, static_cast<cl_uint>(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>())));
-<a name="l00651"></a>00651     }
-<a name="l00652"></a>00652     
-<a name="l00653"></a>00653   } <span class="comment">//namespace linalg</span>
-<a name="l00654"></a>00654 } <span class="comment">//namespace viennacl</span>
-<a name="l00655"></a>00655 
-<a name="l00656"></a>00656 
-<a name="l00657"></a>00657 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector__source_8h.html b/doc/doxygen/html/vector__source_8h.html
deleted file mode 100644
index 89bdb71..0000000
--- a/doc/doxygen/html/vector__source_8h.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_source.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p><a href="vector__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">vector_align16_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">vector_align16_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">vector_align16_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">vector_align16_cpu_inplace_mul</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">vector_align16_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">vector_align16_cpu_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">vector_align16_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">vector_align16_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">vector_align16_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">vector_align16_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">vector_align1_inplace_div_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">vector_align1_cpu_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">vector_align1_inplace_mul_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">vector_align1_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">vector_align1_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">vector_align1_cpu_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">vector_align1_inplace_div_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector__source_8h_source.html b/doc/doxygen/html/vector__source_8h_source.html
deleted file mode 100644
index 5cf1515..0000000
--- a/doc/doxygen/html/vector__source_8h_source.html
+++ /dev/null
@@ -1,870 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_source.h</h1>  </div>
-</div>
-<div class="contents">
-<a href="vector__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_VECTOR_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_VECTOR_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006  <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007  {
-<a name="l00008"></a>00008   <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009   {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">vector_align16_inplace_sub</a> = 
-<a name="l00011"></a>00011 <span class="stringliteral">"__kernel void inplace_sub(\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"          __global float16 * vec1,\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"          __global const float16 * vec2,\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"{ \n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">"    vec1[i] -= vec2[i];\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"}\n"</span>
-<a name="l00019"></a>00019 ; <span class="comment">//vector_align16_inplace_sub</span>
-<a name="l00020"></a>00020 
-<a name="l00021"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">00021</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">vector_align16_mult</a> = 
-<a name="l00022"></a>00022 <span class="stringliteral">"__kernel void mult(\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"          __global const float16 * vec,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"          __global const float * fac, \n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"          __global float16 * result,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"{ \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"    result[i] = vec[i] * factor;\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"}\n"</span>
-<a name="l00032"></a>00032 ; <span class="comment">//vector_align16_mult</span>
-<a name="l00033"></a>00033 
-<a name="l00034"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">00034</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">vector_align16_sub</a> = 
-<a name="l00035"></a>00035 <span class="stringliteral">"__kernel void sub(\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"          __global const float16 * vec1,\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"          __global const float16 * vec2, \n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"          __global float16 * result,\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">"          unsigned int size)\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"{ \n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">"    result[i] = vec1[i] - vec2[i];\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"}\n"</span>
-<a name="l00044"></a>00044 ; <span class="comment">//vector_align16_sub</span>
-<a name="l00045"></a>00045 
-<a name="l00046"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">00046</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">vector_align16_cpu_inplace_mul</a> = 
-<a name="l00047"></a>00047 <span class="stringliteral">"\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"__kernel void cpu_inplace_mult(\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"          __global float16 * vec,\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">"          float factor, \n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"{ \n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">"    vec[i] *= factor;\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"}\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"\n"</span>
-<a name="l00057"></a>00057 ; <span class="comment">//vector_align16_cpu_inplace_mul</span>
-<a name="l00058"></a>00058 
-<a name="l00059"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">00059</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">vector_align16_add</a> = 
-<a name="l00060"></a>00060 <span class="stringliteral">"__kernel void add(\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"          __global const float16 * vec1,\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"          __global const float16 * vec2, \n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"          __global float16 * result,\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"          unsigned int size)\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"{ \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">"    result[i] = vec1[i] + vec2[i];\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"}\n"</span>
-<a name="l00069"></a>00069 ; <span class="comment">//vector_align16_add</span>
-<a name="l00070"></a>00070 
-<a name="l00071"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">00071</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">vector_align16_cpu_mult</a> = 
-<a name="l00072"></a>00072 <span class="stringliteral">"__kernel void cpu_mult(\n"</span>
-<a name="l00073"></a>00073 <span class="stringliteral">"          __global const float16 * vec,\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"          float factor, \n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"          __global float16 * result,\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"{ \n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"    result[i] = vec[i] * factor;\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"}\n"</span>
-<a name="l00081"></a>00081 ; <span class="comment">//vector_align16_cpu_mult</span>
-<a name="l00082"></a>00082 
-<a name="l00083"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">00083</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">vector_align16_inplace_divide</a> = 
-<a name="l00084"></a>00084 <span class="stringliteral">"__kernel void inplace_divide(\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">"          __global float16 * vec,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"          __global const float * fac,  //note: CPU variant is mapped to prod_scalar\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"{ \n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"    vec[i] /= factor;\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"}\n"</span>
-<a name="l00093"></a>00093 ; <span class="comment">//vector_align16_inplace_divide</span>
-<a name="l00094"></a>00094 
-<a name="l00095"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">00095</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">vector_align16_inplace_add</a> = 
-<a name="l00096"></a>00096 <span class="stringliteral">"__kernel void inplace_add(\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"          __global float16 * vec1,\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">"          __global const float16 * vec2,\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"{ \n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"    vec1[i] += vec2[i];\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"}\n"</span>
-<a name="l00104"></a>00104 ; <span class="comment">//vector_align16_inplace_add</span>
-<a name="l00105"></a>00105 
-<a name="l00106"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">00106</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">vector_align16_divide</a> = 
-<a name="l00107"></a>00107 <span class="stringliteral">"//Note: 'div' cannot be used because of complaints by the jit-compiler\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"__kernel void divide(\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"          __global const float16 * vec,\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"          __global const float * fac,  //note: CPU variant is mapped to prod_scalar\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"          __global float16 * result,\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"          unsigned int size)  \n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"{ \n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"    result[i] = vec[i] / factor;\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"}\n"</span>
-<a name="l00118"></a>00118 ; <span class="comment">//vector_align16_divide</span>
-<a name="l00119"></a>00119 
-<a name="l00120"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">00120</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">vector_align16_inplace_mult</a> = 
-<a name="l00121"></a>00121 <span class="stringliteral">"__kernel void inplace_mult(\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"          __global float16 * vec,\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">"          __global const float * fac, \n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"{ \n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"    vec[i] *= factor;\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"}\n"</span>
-<a name="l00130"></a>00130 ; <span class="comment">//vector_align16_inplace_mult</span>
-<a name="l00131"></a>00131 
-<a name="l00132"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">00132</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a> = 
-<a name="l00133"></a>00133 <span class="stringliteral">"__kernel void inplace_div_add(\n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">"          __global float4 * vec1,\n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">"          __global const float4 * vec2,\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"          __global const float * fac,   //CPU variant is mapped to mult_add\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"          ) \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"{ \n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"    vec1[i] -= vec2[i] / factor;\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"}\n"</span>
-<a name="l00144"></a>00144 ; <span class="comment">//vector_align4_inplace_div_add</span>
-<a name="l00145"></a>00145 
-<a name="l00146"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">00146</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a> = 
-<a name="l00147"></a>00147 <span class="stringliteral">"__kernel void cpu_mul_add(\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">"          __global const float4 * vec1,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"          float factor,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"          __global const float4 * vec2,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"          __global float4 * result,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">"          ) \n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"{ \n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"    result[i] = vec1[i] * factor + vec2[i];\n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"}\n"</span>
-<a name="l00158"></a>00158 ; <span class="comment">//vector_align4_cpu_mul_add</span>
-<a name="l00159"></a>00159 
-<a name="l00160"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">00160</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a> = 
-<a name="l00161"></a>00161 <span class="stringliteral">"__kernel void inplace_mul_sub(\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"          __global float4 * vec1,\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"          __global const float4 * vec2,\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">"          __global const float * fac,   //CPU variant is mapped to mult_add\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"          ) \n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"{ \n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"    vec1[i] -= vec2[i] * factor;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"}\n"</span>
-<a name="l00172"></a>00172 ; <span class="comment">//vector_align4_inplace_mul_sub</span>
-<a name="l00173"></a>00173 
-<a name="l00174"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">00174</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a> = 
-<a name="l00175"></a>00175 <span class="stringliteral">"__kernel void inplace_mul_add(\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"          __global float4 * vec1,\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"          __global const float4 * vec2,\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">"          __global const float * fac,\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"          ) \n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"{ \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">"  unsigned int size_div_4 = size >> 2;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size_div_4; i += get_global_size(0))\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">"    vec1[i] += vec2[i] * factor;\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">"}\n"</span>
-<a name="l00187"></a>00187 ; <span class="comment">//vector_align4_inplace_mul_add</span>
-<a name="l00188"></a>00188 
-<a name="l00189"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">00189</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a> = 
-<a name="l00190"></a>00190 <span class="stringliteral">"__kernel void mul_add(\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"          __global const float4 * vec1,\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">"          __global const float * fac,\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"          __global const float4 * vec2,\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">"          __global float4 * result,\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">"          ) \n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"{ \n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"    result[i] = vec1[i] * factor + vec2[i];\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"}\n"</span>
-<a name="l00202"></a>00202 ; <span class="comment">//vector_align4_mul_add</span>
-<a name="l00203"></a>00203 
-<a name="l00204"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">00204</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a> = 
-<a name="l00205"></a>00205 <span class="stringliteral">"__kernel void cpu_inplace_mul_add(\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"          __global float4 * vec1,\n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"          __global const float4 * vec2,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"          float factor,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"          ) \n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"{ \n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">"    vec1[i] += vec2[i] * factor;\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"}\n"</span>
-<a name="l00215"></a>00215 ; <span class="comment">//vector_align4_cpu_inplace_mul_add</span>
-<a name="l00216"></a>00216 
-<a name="l00217"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">00217</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a> = 
-<a name="l00218"></a>00218 <span class="stringliteral">"__kernel void inplace_div_sub(\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"          __global float4 * vec1,\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"          __global const float4 * vec2,\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">"          __global const float * fac,   //CPU variant is mapped to mult_add\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">"          ) \n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"{ \n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"    vec1[i] -= vec2[i] / factor;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"}\n"</span>
-<a name="l00229"></a>00229 ; <span class="comment">//vector_align4_inplace_div_sub</span>
-<a name="l00230"></a>00230 
-<a name="l00231"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">00231</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a> = 
-<a name="l00232"></a>00232 <span class="stringliteral">"__kernel void inplace_sub(\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"{ \n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"    vec1[i] -= vec2[i];\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"}\n"</span>
-<a name="l00240"></a>00240 ; <span class="comment">//vector_align1_inplace_sub</span>
-<a name="l00241"></a>00241 
-<a name="l00242"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">00242</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a> = 
-<a name="l00243"></a>00243 <span class="stringliteral">"\n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"////// norm_inf\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"float impl_norm_inf(\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"          __global const float * vec,\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"          unsigned int start_index,\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">"          unsigned int end_index,\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">"          __local float * tmp_buffer)\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"{\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">"  float tmp = 0;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">"  for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">"    tmp = fmax(fabs(vec[i]), tmp);\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"  tmp_buffer[get_local_id(0)] = tmp;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"  \n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">"  //step 2: parallel reduction:\n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">"  {\n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">"    if (get_global_id(0) < stride)\n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">"      tmp_buffer[get_global_id(0)] = fmax(tmp_buffer[get_global_id(0)], tmp_buffer[get_global_id(0)+stride]);\n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">"  }\n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">"  \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">"  return tmp_buffer[0];\n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">"}\n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">"\n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">"__kernel void norm_inf(\n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">"          __global const float * vec,\n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">"          unsigned int size,\n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">"          __local float * tmp_buffer,\n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">"          global float * group_buffer)\n"</span>
-<a name="l00272"></a>00272 <span class="stringliteral">"{\n"</span>
-<a name="l00273"></a>00273 <span class="stringliteral">"  float tmp = impl_norm_inf(vec,\n"</span>
-<a name="l00274"></a>00274 <span class="stringliteral">"                          (      get_group_id(0) * size) / get_num_groups(0),\n"</span>
-<a name="l00275"></a>00275 <span class="stringliteral">"                          ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">"                          tmp_buffer);\n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">"  \n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">"  if (get_local_id(0) == 0)\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">"    group_buffer[get_group_id(0)] = tmp;  \n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">"}\n"</span>
-<a name="l00281"></a>00281 ; <span class="comment">//vector_align1_norm_inf</span>
-<a name="l00282"></a>00282 
-<a name="l00283"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">00283</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a> = 
-<a name="l00284"></a>00284 <span class="stringliteral">"//index_norm_inf:\n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">"unsigned int float_vector1_index_norm_inf_impl(\n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">"          __global const float * vec,\n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">"          unsigned int size,\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">"          __local float * float_buffer,\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">"          __local unsigned int * index_buffer)\n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">"{\n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">"  //step 1: fill buffer:\n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">"  float cur_max = 0.0f;\n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">"  float tmp;\n"</span>
-<a name="l00294"></a>00294 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00295"></a>00295 <span class="stringliteral">"  {\n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">"    tmp = fabs(vec[i]);\n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">"    if (cur_max < tmp)\n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">"    {\n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">"      float_buffer[get_global_id(0)] = tmp;\n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">"      index_buffer[get_global_id(0)] = i;\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">"      cur_max = tmp;\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">"    }\n"</span>
-<a name="l00303"></a>00303 <span class="stringliteral">"  }\n"</span>
-<a name="l00304"></a>00304 <span class="stringliteral">"  \n"</span>
-<a name="l00305"></a>00305 <span class="stringliteral">"  //step 2: parallel reduction:\n"</span>
-<a name="l00306"></a>00306 <span class="stringliteral">"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"  {\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">"    if (get_global_id(0) < stride)\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">"    {\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">"      //find the first occurring index\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">"      if (float_buffer[get_global_id(0)] < float_buffer[get_global_id(0)+stride])\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">"      {\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">"        index_buffer[get_global_id(0)] = index_buffer[get_global_id(0)+stride];\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">"        float_buffer[get_global_id(0)] = float_buffer[get_global_id(0)+stride];\n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">"      }\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">"      \n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">"      //index_buffer[get_global_id(0)] = float_buffer[get_global_id(0)] < float_buffer[get_global_id(0)+stride] ? index_buffer[get_global_id(0)+stride] : index_buffer[get_global_id(0)];\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">"      //float_buffer[get_global_id(0)] = max(float_buffer[get_global_id(0)], float_buffer[get_global_id(0)+stride]);\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">"    }\n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">"  }\n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">"  \n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">"  return index_buffer[0];\n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">"}\n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">"\n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">"__kernel void index_norm_inf(\n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">"          unsigned int size,\n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">"          __local float * float_buffer,\n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">"          __local unsigned int * index_buffer,\n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">"          global unsigned int * result) \n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">"{ \n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">"  unsigned int tmp = float_vector1_index_norm_inf_impl(vec, size, float_buffer, index_buffer);\n"</span>
-<a name="l00334"></a>00334 <span class="stringliteral">"  if (get_global_id(0) == 0) *result = tmp;\n"</span>
-<a name="l00335"></a>00335 <span class="stringliteral">"}\n"</span>
-<a name="l00336"></a>00336 <span class="stringliteral">"\n"</span>
-<a name="l00337"></a>00337 <span class="stringliteral">"\n"</span>
-<a name="l00338"></a>00338 ; <span class="comment">//vector_align1_index_norm_inf</span>
-<a name="l00339"></a>00339 
-<a name="l00340"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">00340</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a> = 
-<a name="l00341"></a>00341 <span class="stringliteral">"__kernel void mult(\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">"          __global const float * vec,\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">"          __global const float * fac, \n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">"{ \n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">"    result[i] = vec[i] * factor;\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">"}\n"</span>
-<a name="l00351"></a>00351 ; <span class="comment">//vector_align1_mult</span>
-<a name="l00352"></a>00352 
-<a name="l00353"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">00353</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a> = 
-<a name="l00354"></a>00354 <span class="stringliteral">"////// swap:\n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">"__kernel void swap(\n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">"          __global float * vec2,\n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">"          ) \n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">"{ \n"</span>
-<a name="l00361"></a>00361 <span class="stringliteral">"  float tmp;\n"</span>
-<a name="l00362"></a>00362 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00363"></a>00363 <span class="stringliteral">"  {\n"</span>
-<a name="l00364"></a>00364 <span class="stringliteral">"    tmp = vec2[i];\n"</span>
-<a name="l00365"></a>00365 <span class="stringliteral">"    vec2[i] = vec1[i];\n"</span>
-<a name="l00366"></a>00366 <span class="stringliteral">"    vec1[i] = tmp;\n"</span>
-<a name="l00367"></a>00367 <span class="stringliteral">"  }\n"</span>
-<a name="l00368"></a>00368 <span class="stringliteral">"}\n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">" \n"</span>
-<a name="l00370"></a>00370 ; <span class="comment">//vector_align1_swap</span>
-<a name="l00371"></a>00371 
-<a name="l00372"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">00372</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">vector_align1_inplace_div_add</a> = 
-<a name="l00373"></a>00373 <span class="stringliteral">"///// divide add:\n"</span>
-<a name="l00374"></a>00374 <span class="stringliteral">"__kernel void inplace_div_add(\n"</span>
-<a name="l00375"></a>00375 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">"          __global const float * fac,   //CPU variant is mapped to mult_add\n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">"          ) \n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">"{ \n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">"    vec1[i] -= vec2[i] / factor;\n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">"}\n"</span>
-<a name="l00385"></a>00385 ; <span class="comment">//vector_align1_inplace_div_add</span>
-<a name="l00386"></a>00386 
-<a name="l00387"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">00387</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a> = 
-<a name="l00388"></a>00388 <span class="stringliteral">"//helper:\n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">"void helper_norm2_parallel_reduction( __local float * tmp_buffer )\n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">"{\n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">"  {\n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">"    if (get_global_id(0) < stride)\n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">"      tmp_buffer[get_global_id(0)] += tmp_buffer[get_global_id(0)+stride];\n"</span>
-<a name="l00396"></a>00396 <span class="stringliteral">"  }\n"</span>
-<a name="l00397"></a>00397 <span class="stringliteral">"}\n"</span>
-<a name="l00398"></a>00398 <span class="stringliteral">"\n"</span>
-<a name="l00399"></a>00399 <span class="stringliteral">"////// norm_2\n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">"float impl_norm_2(\n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">"          __global const float * vec,\n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">"          unsigned int start_index,\n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">"          unsigned int end_index,\n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">"          __local float * tmp_buffer)\n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">"{\n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">"  float tmp = 0;\n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">"  float vec_entry = 0;\n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">"  for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">"  {\n"</span>
-<a name="l00410"></a>00410 <span class="stringliteral">"    vec_entry = vec[i];\n"</span>
-<a name="l00411"></a>00411 <span class="stringliteral">"    tmp += vec_entry * vec_entry;\n"</span>
-<a name="l00412"></a>00412 <span class="stringliteral">"  }\n"</span>
-<a name="l00413"></a>00413 <span class="stringliteral">"  tmp_buffer[get_local_id(0)] = tmp;\n"</span>
-<a name="l00414"></a>00414 <span class="stringliteral">"  \n"</span>
-<a name="l00415"></a>00415 <span class="stringliteral">"  helper_norm2_parallel_reduction(tmp_buffer);\n"</span>
-<a name="l00416"></a>00416 <span class="stringliteral">"  \n"</span>
-<a name="l00417"></a>00417 <span class="stringliteral">"  return tmp_buffer[0];\n"</span>
-<a name="l00418"></a>00418 <span class="stringliteral">"};\n"</span>
-<a name="l00419"></a>00419 <span class="stringliteral">"\n"</span>
-<a name="l00420"></a>00420 <span class="stringliteral">"__kernel void norm_2(\n"</span>
-<a name="l00421"></a>00421 <span class="stringliteral">"          __global const float * vec,\n"</span>
-<a name="l00422"></a>00422 <span class="stringliteral">"          unsigned int size,\n"</span>
-<a name="l00423"></a>00423 <span class="stringliteral">"          __local float * tmp_buffer,\n"</span>
-<a name="l00424"></a>00424 <span class="stringliteral">"          global float * group_buffer)\n"</span>
-<a name="l00425"></a>00425 <span class="stringliteral">"{\n"</span>
-<a name="l00426"></a>00426 <span class="stringliteral">"  float tmp = impl_norm_2(vec,\n"</span>
-<a name="l00427"></a>00427 <span class="stringliteral">"                          (      get_group_id(0) * size) / get_num_groups(0),\n"</span>
-<a name="l00428"></a>00428 <span class="stringliteral">"                          ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"</span>
-<a name="l00429"></a>00429 <span class="stringliteral">"                          tmp_buffer);\n"</span>
-<a name="l00430"></a>00430 <span class="stringliteral">"  \n"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">"  if (get_local_id(0) == 0)\n"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">"    group_buffer[get_group_id(0)] = tmp;  \n"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">"}\n"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">"\n"</span>
-<a name="l00435"></a>00435 ; <span class="comment">//vector_align1_norm_2</span>
-<a name="l00436"></a>00436 
-<a name="l00437"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">00437</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a> = 
-<a name="l00438"></a>00438 <span class="stringliteral">"__kernel void sub(\n"</span>
-<a name="l00439"></a>00439 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00440"></a>00440 <span class="stringliteral">"          __global const float * vec2, \n"</span>
-<a name="l00441"></a>00441 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00442"></a>00442 <span class="stringliteral">"          unsigned int size)\n"</span>
-<a name="l00443"></a>00443 <span class="stringliteral">"{ \n"</span>
-<a name="l00444"></a>00444 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00445"></a>00445 <span class="stringliteral">"    result[i] = vec1[i] - vec2[i];\n"</span>
-<a name="l00446"></a>00446 <span class="stringliteral">"}\n"</span>
-<a name="l00447"></a>00447 ; <span class="comment">//vector_align1_sub</span>
-<a name="l00448"></a>00448 
-<a name="l00449"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">00449</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">vector_align1_cpu_mul_add</a> = 
-<a name="l00450"></a>00450 <span class="stringliteral">"__kernel void cpu_mul_add(\n"</span>
-<a name="l00451"></a>00451 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00452"></a>00452 <span class="stringliteral">"          float factor,\n"</span>
-<a name="l00453"></a>00453 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00454"></a>00454 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00455"></a>00455 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00456"></a>00456 <span class="stringliteral">"          ) \n"</span>
-<a name="l00457"></a>00457 <span class="stringliteral">"{ \n"</span>
-<a name="l00458"></a>00458 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00459"></a>00459 <span class="stringliteral">"    result[i] = vec1[i] * factor + vec2[i];\n"</span>
-<a name="l00460"></a>00460 <span class="stringliteral">"}\n"</span>
-<a name="l00461"></a>00461 ; <span class="comment">//vector_align1_cpu_mul_add</span>
-<a name="l00462"></a>00462 
-<a name="l00463"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">00463</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a> = 
-<a name="l00464"></a>00464 <span class="stringliteral">"__kernel void vmax(\n"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00466"></a>00466 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00467"></a>00467 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00468"></a>00468 <span class="stringliteral">"{ \n"</span>
-<a name="l00469"></a>00469 <span class="stringliteral">"  //parallel reduction on global memory:\n"</span>
-<a name="l00470"></a>00470 <span class="stringliteral">"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00471"></a>00471 <span class="stringliteral">"  {\n"</span>
-<a name="l00472"></a>00472 <span class="stringliteral">"    if (get_global_id(0) < stride)\n"</span>
-<a name="l00473"></a>00473 <span class="stringliteral">"      vec1[get_global_id(0)] = fmax(vec1[get_global_id(0)+stride], vec1[get_global_id(0)]);\n"</span>
-<a name="l00474"></a>00474 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00475"></a>00475 <span class="stringliteral">"  }\n"</span>
-<a name="l00476"></a>00476 <span class="stringliteral">"  \n"</span>
-<a name="l00477"></a>00477 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00478"></a>00478 <span class="stringliteral">"    *result = vec1[0];  \n"</span>
-<a name="l00479"></a>00479 <span class="stringliteral">"}\n"</span>
-<a name="l00480"></a>00480 ; <span class="comment">//vector_align1_vmax</span>
-<a name="l00481"></a>00481 
-<a name="l00482"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">00482</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a> = 
-<a name="l00483"></a>00483 <span class="stringliteral">"//helper:\n"</span>
-<a name="l00484"></a>00484 <span class="stringliteral">"void helper_inner_prod_parallel_reduction( __local float * tmp_buffer )\n"</span>
-<a name="l00485"></a>00485 <span class="stringliteral">"{\n"</span>
-<a name="l00486"></a>00486 <span class="stringliteral">"  for (unsigned int stride = get_local_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00487"></a>00487 <span class="stringliteral">"  {\n"</span>
-<a name="l00488"></a>00488 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00489"></a>00489 <span class="stringliteral">"    if (get_local_id(0) < stride)\n"</span>
-<a name="l00490"></a>00490 <span class="stringliteral">"      tmp_buffer[get_local_id(0)] += tmp_buffer[get_local_id(0)+stride];\n"</span>
-<a name="l00491"></a>00491 <span class="stringliteral">"  }\n"</span>
-<a name="l00492"></a>00492 <span class="stringliteral">"}\n"</span>
-<a name="l00493"></a>00493 <span class="stringliteral">"//////// inner products:\n"</span>
-<a name="l00494"></a>00494 <span class="stringliteral">"float impl_inner_prod(\n"</span>
-<a name="l00495"></a>00495 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00496"></a>00496 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00497"></a>00497 <span class="stringliteral">"          unsigned int start_index,\n"</span>
-<a name="l00498"></a>00498 <span class="stringliteral">"          unsigned int end_index,\n"</span>
-<a name="l00499"></a>00499 <span class="stringliteral">"          __local float * tmp_buffer)\n"</span>
-<a name="l00500"></a>00500 <span class="stringliteral">"{\n"</span>
-<a name="l00501"></a>00501 <span class="stringliteral">"  float tmp = 0;\n"</span>
-<a name="l00502"></a>00502 <span class="stringliteral">"  for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"</span>
-<a name="l00503"></a>00503 <span class="stringliteral">"    tmp += vec1[i] * vec2[i];\n"</span>
-<a name="l00504"></a>00504 <span class="stringliteral">"  tmp_buffer[get_local_id(0)] = tmp;\n"</span>
-<a name="l00505"></a>00505 <span class="stringliteral">"  \n"</span>
-<a name="l00506"></a>00506 <span class="stringliteral">"  helper_inner_prod_parallel_reduction(tmp_buffer);\n"</span>
-<a name="l00507"></a>00507 <span class="stringliteral">"  \n"</span>
-<a name="l00508"></a>00508 <span class="stringliteral">"  return tmp_buffer[0];\n"</span>
-<a name="l00509"></a>00509 <span class="stringliteral">"}\n"</span>
-<a name="l00510"></a>00510 <span class="stringliteral">"__kernel void inner_prod(\n"</span>
-<a name="l00511"></a>00511 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00512"></a>00512 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00513"></a>00513 <span class="stringliteral">"          unsigned int size,\n"</span>
-<a name="l00514"></a>00514 <span class="stringliteral">"          __local float * tmp_buffer,\n"</span>
-<a name="l00515"></a>00515 <span class="stringliteral">"          global float * group_buffer)\n"</span>
-<a name="l00516"></a>00516 <span class="stringliteral">"{\n"</span>
-<a name="l00517"></a>00517 <span class="stringliteral">"  float tmp = impl_inner_prod(vec1,\n"</span>
-<a name="l00518"></a>00518 <span class="stringliteral">"                              vec2,\n"</span>
-<a name="l00519"></a>00519 <span class="stringliteral">"                              (      get_group_id(0) * size) / get_num_groups(0),\n"</span>
-<a name="l00520"></a>00520 <span class="stringliteral">"                              ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"</span>
-<a name="l00521"></a>00521 <span class="stringliteral">"                              tmp_buffer);\n"</span>
-<a name="l00522"></a>00522 <span class="stringliteral">"  \n"</span>
-<a name="l00523"></a>00523 <span class="stringliteral">"  if (get_local_id(0) == 0)\n"</span>
-<a name="l00524"></a>00524 <span class="stringliteral">"    group_buffer[get_group_id(0)] = tmp;\n"</span>
-<a name="l00525"></a>00525 <span class="stringliteral">"  \n"</span>
-<a name="l00526"></a>00526 <span class="stringliteral">"}\n"</span>
-<a name="l00527"></a>00527 ; <span class="comment">//vector_align1_inner_prod</span>
-<a name="l00528"></a>00528 
-<a name="l00529"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">00529</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a> = 
-<a name="l00530"></a>00530 <span class="stringliteral">"__kernel void add(\n"</span>
-<a name="l00531"></a>00531 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00532"></a>00532 <span class="stringliteral">"          __global const float * vec2, \n"</span>
-<a name="l00533"></a>00533 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00534"></a>00534 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00535"></a>00535 <span class="stringliteral">"{ \n"</span>
-<a name="l00536"></a>00536 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00537"></a>00537 <span class="stringliteral">"    result[i] = vec1[i] + vec2[i];\n"</span>
-<a name="l00538"></a>00538 <span class="stringliteral">"}\n"</span>
-<a name="l00539"></a>00539 ; <span class="comment">//vector_align1_add</span>
-<a name="l00540"></a>00540 
-<a name="l00541"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">00541</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a> = 
-<a name="l00542"></a>00542 <span class="stringliteral">"////// plane rotation: (x,y) <- (\alpha x + \beta y, -\beta x + \alpha y)\n"</span>
-<a name="l00543"></a>00543 <span class="stringliteral">"__kernel void plane_rotation(\n"</span>
-<a name="l00544"></a>00544 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00545"></a>00545 <span class="stringliteral">"          __global float * vec2, \n"</span>
-<a name="l00546"></a>00546 <span class="stringliteral">"          float alpha,\n"</span>
-<a name="l00547"></a>00547 <span class="stringliteral">"          float beta,\n"</span>
-<a name="l00548"></a>00548 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00549"></a>00549 <span class="stringliteral">"{ \n"</span>
-<a name="l00550"></a>00550 <span class="stringliteral">"  float tmp1 = 0;\n"</span>
-<a name="l00551"></a>00551 <span class="stringliteral">"  float tmp2 = 0;\n"</span>
-<a name="l00552"></a>00552 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00553"></a>00553 <span class="stringliteral">"  {\n"</span>
-<a name="l00554"></a>00554 <span class="stringliteral">"    tmp1 = vec1[i];\n"</span>
-<a name="l00555"></a>00555 <span class="stringliteral">"    tmp2 = vec2[i];\n"</span>
-<a name="l00556"></a>00556 <span class="stringliteral">"    \n"</span>
-<a name="l00557"></a>00557 <span class="stringliteral">"    vec1[i] = alpha * tmp1 + beta * tmp2;\n"</span>
-<a name="l00558"></a>00558 <span class="stringliteral">"    vec2[i] = alpha * tmp2 - beta * tmp1;\n"</span>
-<a name="l00559"></a>00559 <span class="stringliteral">"  }\n"</span>
-<a name="l00560"></a>00560 <span class="stringliteral">"}\n"</span>
-<a name="l00561"></a>00561 ; <span class="comment">//vector_align1_plane_rotation</span>
-<a name="l00562"></a>00562 
-<a name="l00563"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">00563</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">vector_align1_inplace_mul_sub</a> = 
-<a name="l00564"></a>00564 <span class="stringliteral">"__kernel void inplace_mul_sub(\n"</span>
-<a name="l00565"></a>00565 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00566"></a>00566 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00567"></a>00567 <span class="stringliteral">"          __global const float * fac,   //CPU variant is mapped to mult_add\n"</span>
-<a name="l00568"></a>00568 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00569"></a>00569 <span class="stringliteral">"          ) \n"</span>
-<a name="l00570"></a>00570 <span class="stringliteral">"{ \n"</span>
-<a name="l00571"></a>00571 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00572"></a>00572 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00573"></a>00573 <span class="stringliteral">"    vec1[i] -= vec2[i] * factor;\n"</span>
-<a name="l00574"></a>00574 <span class="stringliteral">"}\n"</span>
-<a name="l00575"></a>00575 ; <span class="comment">//vector_align1_inplace_mul_sub</span>
-<a name="l00576"></a>00576 
-<a name="l00577"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">00577</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">vector_align1_inplace_mul_add</a> = 
-<a name="l00578"></a>00578 <span class="stringliteral">"__kernel void inplace_mul_add(\n"</span>
-<a name="l00579"></a>00579 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00580"></a>00580 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00581"></a>00581 <span class="stringliteral">"          __global const float * fac,\n"</span>
-<a name="l00582"></a>00582 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00583"></a>00583 <span class="stringliteral">"          ) \n"</span>
-<a name="l00584"></a>00584 <span class="stringliteral">"{ \n"</span>
-<a name="l00585"></a>00585 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00586"></a>00586 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00587"></a>00587 <span class="stringliteral">"    vec1[i] += vec2[i] * factor;\n"</span>
-<a name="l00588"></a>00588 <span class="stringliteral">"}\n"</span>
-<a name="l00589"></a>00589 ; <span class="comment">//vector_align1_inplace_mul_add</span>
-<a name="l00590"></a>00590 
-<a name="l00591"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">00591</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">vector_align1_mul_add</a> = 
-<a name="l00592"></a>00592 <span class="stringliteral">"__kernel void mul_add(\n"</span>
-<a name="l00593"></a>00593 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00594"></a>00594 <span class="stringliteral">"          __global const float * fac,\n"</span>
-<a name="l00595"></a>00595 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00596"></a>00596 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00597"></a>00597 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00598"></a>00598 <span class="stringliteral">"          ) \n"</span>
-<a name="l00599"></a>00599 <span class="stringliteral">"{ \n"</span>
-<a name="l00600"></a>00600 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00601"></a>00601 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00602"></a>00602 <span class="stringliteral">"    result[i] = vec1[i] * factor + vec2[i];\n"</span>
-<a name="l00603"></a>00603 <span class="stringliteral">"}\n"</span>
-<a name="l00604"></a>00604 ; <span class="comment">//vector_align1_mul_add</span>
-<a name="l00605"></a>00605 
-<a name="l00606"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">00606</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a> = 
-<a name="l00607"></a>00607 <span class="stringliteral">"__kernel void cpu_mult(\n"</span>
-<a name="l00608"></a>00608 <span class="stringliteral">"          __global const float * vec,\n"</span>
-<a name="l00609"></a>00609 <span class="stringliteral">"          float factor, \n"</span>
-<a name="l00610"></a>00610 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00611"></a>00611 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00612"></a>00612 <span class="stringliteral">"{ \n"</span>
-<a name="l00613"></a>00613 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00614"></a>00614 <span class="stringliteral">"    result[i] = vec[i] * factor;\n"</span>
-<a name="l00615"></a>00615 <span class="stringliteral">"}\n"</span>
-<a name="l00616"></a>00616 ; <span class="comment">//vector_align1_cpu_mult</span>
-<a name="l00617"></a>00617 
-<a name="l00618"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">00618</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a> = 
-<a name="l00619"></a>00619 <span class="stringliteral">"__kernel void inplace_divide(\n"</span>
-<a name="l00620"></a>00620 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00621"></a>00621 <span class="stringliteral">"          __global const float * fac,  //note: CPU variant is mapped to prod_scalar\n"</span>
-<a name="l00622"></a>00622 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00623"></a>00623 <span class="stringliteral">"{ \n"</span>
-<a name="l00624"></a>00624 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00625"></a>00625 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00626"></a>00626 <span class="stringliteral">"    vec[i] /= factor;\n"</span>
-<a name="l00627"></a>00627 <span class="stringliteral">"}\n"</span>
-<a name="l00628"></a>00628 ; <span class="comment">//vector_align1_inplace_divide</span>
-<a name="l00629"></a>00629 
-<a name="l00630"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">00630</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a> = 
-<a name="l00631"></a>00631 <span class="stringliteral">"__kernel void sqrt_sum(\n"</span>
-<a name="l00632"></a>00632 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00633"></a>00633 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00634"></a>00634 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00635"></a>00635 <span class="stringliteral">"{ \n"</span>
-<a name="l00636"></a>00636 <span class="stringliteral">"  //parallel reduction on global memory:  \n"</span>
-<a name="l00637"></a>00637 <span class="stringliteral">"  \n"</span>
-<a name="l00638"></a>00638 <span class="stringliteral">"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00639"></a>00639 <span class="stringliteral">"  {\n"</span>
-<a name="l00640"></a>00640 <span class="stringliteral">"    if (get_global_id(0) < stride)\n"</span>
-<a name="l00641"></a>00641 <span class="stringliteral">"      vec1[get_global_id(0)] += vec1[get_global_id(0)+stride];\n"</span>
-<a name="l00642"></a>00642 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00643"></a>00643 <span class="stringliteral">"  }\n"</span>
-<a name="l00644"></a>00644 <span class="stringliteral">"  \n"</span>
-<a name="l00645"></a>00645 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00646"></a>00646 <span class="stringliteral">"    *result = sqrt(vec1[0]);\n"</span>
-<a name="l00647"></a>00647 <span class="stringliteral">"  \n"</span>
-<a name="l00648"></a>00648 <span class="stringliteral">"}\n"</span>
-<a name="l00649"></a>00649 ; <span class="comment">//vector_align1_sqrt_sum</span>
-<a name="l00650"></a>00650 
-<a name="l00651"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">00651</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">vector_align1_cpu_inplace_mul_add</a> = 
-<a name="l00652"></a>00652 <span class="stringliteral">"__kernel void cpu_inplace_mul_add(\n"</span>
-<a name="l00653"></a>00653 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00654"></a>00654 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00655"></a>00655 <span class="stringliteral">"          float factor,\n"</span>
-<a name="l00656"></a>00656 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00657"></a>00657 <span class="stringliteral">"          ) \n"</span>
-<a name="l00658"></a>00658 <span class="stringliteral">"{ \n"</span>
-<a name="l00659"></a>00659 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00660"></a>00660 <span class="stringliteral">"    vec1[i] += vec2[i] * factor;\n"</span>
-<a name="l00661"></a>00661 <span class="stringliteral">"}\n"</span>
-<a name="l00662"></a>00662 ; <span class="comment">//vector_align1_cpu_inplace_mul_add</span>
-<a name="l00663"></a>00663 
-<a name="l00664"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">00664</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a> = 
-<a name="l00665"></a>00665 <span class="stringliteral">"__kernel void inplace_add(\n"</span>
-<a name="l00666"></a>00666 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00667"></a>00667 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00668"></a>00668 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00669"></a>00669 <span class="stringliteral">"{ \n"</span>
-<a name="l00670"></a>00670 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00671"></a>00671 <span class="stringliteral">"    vec1[i] += vec2[i];\n"</span>
-<a name="l00672"></a>00672 <span class="stringliteral">"}\n"</span>
-<a name="l00673"></a>00673 ; <span class="comment">//vector_align1_inplace_add</span>
-<a name="l00674"></a>00674 
-<a name="l00675"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">00675</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a> = 
-<a name="l00676"></a>00676 <span class="stringliteral">"// Note: name 'div' is not allowed by the jit-compiler\n"</span>
-<a name="l00677"></a>00677 <span class="stringliteral">"__kernel void divide(\n"</span>
-<a name="l00678"></a>00678 <span class="stringliteral">"          __global const float * vec,\n"</span>
-<a name="l00679"></a>00679 <span class="stringliteral">"          __global const float * fac,  //note: CPU variant is mapped to prod_scalar\n"</span>
-<a name="l00680"></a>00680 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00681"></a>00681 <span class="stringliteral">"          unsigned int size)  \n"</span>
-<a name="l00682"></a>00682 <span class="stringliteral">"{ \n"</span>
-<a name="l00683"></a>00683 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00684"></a>00684 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00685"></a>00685 <span class="stringliteral">"    result[i] = vec[i] / factor;\n"</span>
-<a name="l00686"></a>00686 <span class="stringliteral">"}\n"</span>
-<a name="l00687"></a>00687 ; <span class="comment">//vector_align1_divide</span>
-<a name="l00688"></a>00688 
-<a name="l00689"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">00689</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a> = 
-<a name="l00690"></a>00690 <span class="stringliteral">"//helper:\n"</span>
-<a name="l00691"></a>00691 <span class="stringliteral">"void helper_norm1_parallel_reduction( __local float * tmp_buffer )\n"</span>
-<a name="l00692"></a>00692 <span class="stringliteral">"{\n"</span>
-<a name="l00693"></a>00693 <span class="stringliteral">"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00694"></a>00694 <span class="stringliteral">"  {\n"</span>
-<a name="l00695"></a>00695 <span class="stringliteral">"    barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00696"></a>00696 <span class="stringliteral">"    if (get_global_id(0) < stride)\n"</span>
-<a name="l00697"></a>00697 <span class="stringliteral">"      tmp_buffer[get_global_id(0)] += tmp_buffer[get_global_id(0)+stride];\n"</span>
-<a name="l00698"></a>00698 <span class="stringliteral">"  }\n"</span>
-<a name="l00699"></a>00699 <span class="stringliteral">"}\n"</span>
-<a name="l00700"></a>00700 <span class="stringliteral">"\n"</span>
-<a name="l00701"></a>00701 <span class="stringliteral">"////// norm_1\n"</span>
-<a name="l00702"></a>00702 <span class="stringliteral">"float impl_norm_1(\n"</span>
-<a name="l00703"></a>00703 <span class="stringliteral">"          __global const float * vec,\n"</span>
-<a name="l00704"></a>00704 <span class="stringliteral">"          unsigned int start_index,\n"</span>
-<a name="l00705"></a>00705 <span class="stringliteral">"          unsigned int end_index,\n"</span>
-<a name="l00706"></a>00706 <span class="stringliteral">"          __local float * tmp_buffer)\n"</span>
-<a name="l00707"></a>00707 <span class="stringliteral">"{\n"</span>
-<a name="l00708"></a>00708 <span class="stringliteral">"  float tmp = 0;\n"</span>
-<a name="l00709"></a>00709 <span class="stringliteral">"  for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"</span>
-<a name="l00710"></a>00710 <span class="stringliteral">"    tmp += fabs(vec[i]);\n"</span>
-<a name="l00711"></a>00711 <span class="stringliteral">"  \n"</span>
-<a name="l00712"></a>00712 <span class="stringliteral">"  tmp_buffer[get_local_id(0)] = tmp;\n"</span>
-<a name="l00713"></a>00713 <span class="stringliteral">"  \n"</span>
-<a name="l00714"></a>00714 <span class="stringliteral">"  helper_norm1_parallel_reduction(tmp_buffer);\n"</span>
-<a name="l00715"></a>00715 <span class="stringliteral">"  \n"</span>
-<a name="l00716"></a>00716 <span class="stringliteral">"  return tmp_buffer[0];\n"</span>
-<a name="l00717"></a>00717 <span class="stringliteral">"};\n"</span>
-<a name="l00718"></a>00718 <span class="stringliteral">"\n"</span>
-<a name="l00719"></a>00719 <span class="stringliteral">"__kernel void norm_1(\n"</span>
-<a name="l00720"></a>00720 <span class="stringliteral">"          __global const float * vec,\n"</span>
-<a name="l00721"></a>00721 <span class="stringliteral">"          unsigned int size,\n"</span>
-<a name="l00722"></a>00722 <span class="stringliteral">"          __local float * tmp_buffer,\n"</span>
-<a name="l00723"></a>00723 <span class="stringliteral">"          global float * group_buffer)\n"</span>
-<a name="l00724"></a>00724 <span class="stringliteral">"{\n"</span>
-<a name="l00725"></a>00725 <span class="stringliteral">"  float tmp = impl_norm_1(vec,\n"</span>
-<a name="l00726"></a>00726 <span class="stringliteral">"                          (      get_group_id(0) * size) / get_num_groups(0),\n"</span>
-<a name="l00727"></a>00727 <span class="stringliteral">"                          ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"</span>
-<a name="l00728"></a>00728 <span class="stringliteral">"                          tmp_buffer);\n"</span>
-<a name="l00729"></a>00729 <span class="stringliteral">"  \n"</span>
-<a name="l00730"></a>00730 <span class="stringliteral">"  if (get_local_id(0) == 0)\n"</span>
-<a name="l00731"></a>00731 <span class="stringliteral">"    group_buffer[get_group_id(0)] = tmp;  \n"</span>
-<a name="l00732"></a>00732 <span class="stringliteral">"}\n"</span>
-<a name="l00733"></a>00733 <span class="stringliteral">"\n"</span>
-<a name="l00734"></a>00734 ; <span class="comment">//vector_align1_norm_1</span>
-<a name="l00735"></a>00735 
-<a name="l00736"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">00736</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a> = 
-<a name="l00737"></a>00737 <span class="stringliteral">"__kernel void clear(\n"</span>
-<a name="l00738"></a>00738 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00739"></a>00739 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00740"></a>00740 <span class="stringliteral">"{ \n"</span>
-<a name="l00741"></a>00741 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00742"></a>00742 <span class="stringliteral">"    vec[i] = 0;\n"</span>
-<a name="l00743"></a>00743 <span class="stringliteral">"}\n"</span>
-<a name="l00744"></a>00744 ; <span class="comment">//vector_align1_clear</span>
-<a name="l00745"></a>00745 
-<a name="l00746"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">00746</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a> = 
-<a name="l00747"></a>00747 <span class="stringliteral">"__kernel void cpu_inplace_mult(\n"</span>
-<a name="l00748"></a>00748 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00749"></a>00749 <span class="stringliteral">"          float factor, \n"</span>
-<a name="l00750"></a>00750 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00751"></a>00751 <span class="stringliteral">"{ \n"</span>
-<a name="l00752"></a>00752 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00753"></a>00753 <span class="stringliteral">"    vec[i] *= factor;\n"</span>
-<a name="l00754"></a>00754 <span class="stringliteral">"}\n"</span>
-<a name="l00755"></a>00755 ; <span class="comment">//vector_align1_cpu_inplace_mult</span>
-<a name="l00756"></a>00756 
-<a name="l00757"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">00757</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a> = 
-<a name="l00758"></a>00758 <span class="stringliteral">"__kernel void inplace_mult(\n"</span>
-<a name="l00759"></a>00759 <span class="stringliteral">"          __global float * vec,\n"</span>
-<a name="l00760"></a>00760 <span class="stringliteral">"          __global const float * fac, \n"</span>
-<a name="l00761"></a>00761 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00762"></a>00762 <span class="stringliteral">"{ \n"</span>
-<a name="l00763"></a>00763 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00764"></a>00764 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00765"></a>00765 <span class="stringliteral">"    vec[i] *= factor;\n"</span>
-<a name="l00766"></a>00766 <span class="stringliteral">"}\n"</span>
-<a name="l00767"></a>00767 ; <span class="comment">//vector_align1_inplace_mult</span>
-<a name="l00768"></a>00768 
-<a name="l00769"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">00769</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a> = 
-<a name="l00770"></a>00770 <span class="stringliteral">"__kernel void sum(\n"</span>
-<a name="l00771"></a>00771 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00772"></a>00772 <span class="stringliteral">"          __global float * result) \n"</span>
-<a name="l00773"></a>00773 <span class="stringliteral">"{ \n"</span>
-<a name="l00774"></a>00774 <span class="stringliteral">"  //parallel reduction on global memory:  \n"</span>
-<a name="l00775"></a>00775 <span class="stringliteral">"  \n"</span>
-<a name="l00776"></a>00776 <span class="stringliteral">"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00777"></a>00777 <span class="stringliteral">"  {\n"</span>
-<a name="l00778"></a>00778 <span class="stringliteral">"    if (get_global_id(0) < stride)\n"</span>
-<a name="l00779"></a>00779 <span class="stringliteral">"      vec1[get_global_id(0)] += vec1[get_global_id(0)+stride];\n"</span>
-<a name="l00780"></a>00780 <span class="stringliteral">"    barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00781"></a>00781 <span class="stringliteral">"  }\n"</span>
-<a name="l00782"></a>00782 <span class="stringliteral">"  \n"</span>
-<a name="l00783"></a>00783 <span class="stringliteral">"  if (get_global_id(0) == 0)\n"</span>
-<a name="l00784"></a>00784 <span class="stringliteral">"    *result = vec1[0];  \n"</span>
-<a name="l00785"></a>00785 <span class="stringliteral">"}\n"</span>
-<a name="l00786"></a>00786 ; <span class="comment">//vector_align1_sum</span>
-<a name="l00787"></a>00787 
-<a name="l00788"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">00788</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">vector_align1_inplace_div_sub</a> = 
-<a name="l00789"></a>00789 <span class="stringliteral">"///// divide substract:\n"</span>
-<a name="l00790"></a>00790 <span class="stringliteral">"__kernel void inplace_div_sub(\n"</span>
-<a name="l00791"></a>00791 <span class="stringliteral">"          __global float * vec1,\n"</span>
-<a name="l00792"></a>00792 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00793"></a>00793 <span class="stringliteral">"          __global const float * fac,   //CPU variant is mapped to mult_add\n"</span>
-<a name="l00794"></a>00794 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00795"></a>00795 <span class="stringliteral">"          ) \n"</span>
-<a name="l00796"></a>00796 <span class="stringliteral">"{ \n"</span>
-<a name="l00797"></a>00797 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00798"></a>00798 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00799"></a>00799 <span class="stringliteral">"    vec1[i] -= vec2[i] / factor;\n"</span>
-<a name="l00800"></a>00800 <span class="stringliteral">"}\n"</span>
-<a name="l00801"></a>00801 ; <span class="comment">//vector_align1_inplace_div_sub</span>
-<a name="l00802"></a>00802 
-<a name="l00803"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">00803</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a> = 
-<a name="l00804"></a>00804 <span class="stringliteral">"__kernel void diag_precond(\n"</span>
-<a name="l00805"></a>00805 <span class="stringliteral">"          __global const float * diag_A_inv, \n"</span>
-<a name="l00806"></a>00806 <span class="stringliteral">"          __global float * x, \n"</span>
-<a name="l00807"></a>00807 <span class="stringliteral">"          unsigned int size) \n"</span>
-<a name="l00808"></a>00808 <span class="stringliteral">"{ \n"</span>
-<a name="l00809"></a>00809 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00810"></a>00810 <span class="stringliteral">"    x[i] *= diag_A_inv[i];\n"</span>
-<a name="l00811"></a>00811 <span class="stringliteral">"}\n"</span>
-<a name="l00812"></a>00812 ; <span class="comment">//vector_align1_diag_precond</span>
-<a name="l00813"></a>00813 
-<a name="l00814"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">00814</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a> = 
-<a name="l00815"></a>00815 <span class="stringliteral">"///// multiply subtract:\n"</span>
-<a name="l00816"></a>00816 <span class="stringliteral">"__kernel void mul_sub(\n"</span>
-<a name="l00817"></a>00817 <span class="stringliteral">"          __global const float * vec1,\n"</span>
-<a name="l00818"></a>00818 <span class="stringliteral">"          __global const float * fac,\n"</span>
-<a name="l00819"></a>00819 <span class="stringliteral">"          __global const float * vec2,\n"</span>
-<a name="l00820"></a>00820 <span class="stringliteral">"          __global float * result,\n"</span>
-<a name="l00821"></a>00821 <span class="stringliteral">"          unsigned int size\n"</span>
-<a name="l00822"></a>00822 <span class="stringliteral">"          ) \n"</span>
-<a name="l00823"></a>00823 <span class="stringliteral">"{ \n"</span>
-<a name="l00824"></a>00824 <span class="stringliteral">"  float factor = *fac;\n"</span>
-<a name="l00825"></a>00825 <span class="stringliteral">"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00826"></a>00826 <span class="stringliteral">"    result[i] = vec1[i] * factor - vec2[i];\n"</span>
-<a name="l00827"></a>00827 <span class="stringliteral">"}\n"</span>
-<a name="l00828"></a>00828 ; <span class="comment">//vector_align1_mul_sub</span>
-<a name="l00829"></a>00829 
-<a name="l00830"></a>00830   }  <span class="comment">//namespace kernels</span>
-<a name="l00831"></a>00831  }  <span class="comment">//namespace linalg</span>
-<a name="l00832"></a>00832 }  <span class="comment">//namespace viennacl</span>
-<a name="l00833"></a>00833 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/manual/Makefile b/doc/manual/Makefile
deleted file mode 100644
index d3f21f4..0000000
--- a/doc/manual/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-
-FILE=viennacl
-
-# ----------------------------------------------------------------------------
-
-build: build-latex build-dvi build-pdf build-clean
-	mv $(FILE).pdf ../
-
-clean: build-clean
-
-# ----------------------------------------------------------------------------
-
-build-latex:
-	latex ${FILE}.tex
-	latex ${FILE}.tex
-	bibtex ${FILE}
-	latex ${FILE}.tex	
-	bibtex ${FILE}
-	latex ${FILE}.tex		
-	
-build-dvi:
-	dvips -Ppdf -G0 -ta4 $(FILE).dvi 
-	
-build-pdf:
-	ps2pdf  -dPDFSETTINGS=/prepress -dCompatibilityLevel=1.3 \
-           -dMAxSubsetPct=100 -dSubsetFonts=true \
-           -dEmbedAllFonts=true -sPAPERSIZE=a4 \
-           -dAutoRotatePages=/None -dOptimize=true $(FILE).ps
-
-build-clean:
-	rm -f *.dvi *.log *.aux *.idx *.ps *.out *.toc *~ *.backup
-	
diff --git a/doc/manual/algorithms.tex b/doc/manual/algorithms.tex
index f5a25b5..83c3270 100644
--- a/doc/manual/algorithms.tex
+++ b/doc/manual/algorithms.tex
@@ -1,4 +1,4 @@
-\chapter{Algorithms}
+\chapter{Algorithms} \label{chap:algorithms}
 
 This chapter gives an overview over the available algorithms in {\ViennaCL}.
 The focus of {\ViennaCL} is on iterative solvers, for which {\ViennaCL} provides a generic implementation that allows the use of the same code on the CPU (either using \ublas, Eigen, MTL4 or \OpenCL) and on the GPU (using \OpenCL).
@@ -122,17 +122,14 @@ viennacl::linalg::gmres_tag custom_gmres(1e-10, 100, 30);
 \end{lstlisting}
 
 \section{Preconditioners}
-{\ViennaCL} ships with a generic implementation of an incomplete LU
-factorization preconditioner with threshold (ILUT), a Jacobi preconditioner and
-a row-scaling preconditioner. The incomplete factorization for ILUT is computed
-on a single CPU core due to its sequential nature, so one must not expect large
-performance gains if most time is spent on preconditioning. More
-preconditioners are in preparation and any contributions are very welcome.
+{\ViennaCL} ships with a generic implementation of several preconditioners.
+The preconditioner setup is expect for simple diagonal preconditioners always carried out on the CPU host due to the need for dynamically allocating memory.
+Thus, one may not obtain an overall performance benefit if too much time is spent on the preconditioner setup.
 
 \TIP{The preconditioner also works for {\ublas} types!}
 
+In the following it is assumed that the sparse linear system of equations is given as follows:
 \begin{lstlisting}
-using viennacl::linalg::ilut_precond;
 using viennacl::compressed_matrix;
 
 typedef compressed_matrix<float>   SparseMatrix;
@@ -141,14 +138,68 @@ viennacl::vector<float>  vcl_rhs;
 viennacl::vector<float>  vcl_result;
 
 /* Set up matrix and vectors here */
+\end{lstlisting}
+
+% \begin{table}[tb]
+% \begin{center}
+% \renewcommand{\arraystretch}{1.2}
+% \begin{tabular}{p{3cm}|p{4cm}|p{7cm}}
+% Method & Brief description & Parameters\\
+% \hline
+% ILUT & incomplete LU factorization & First parameter: Maximum number of entries
+% per row. Second parameter: Drop tolerance. \\
+% Jacobi & Divide each row in $A$ by its diagonal entry & none \\
+% Row Scaling & Divide each row in $A$ by its norm & First parameter specifies
+% the norm (1: $l^1$-norm, 2: $l^2$-norm)\\
+% \hline
+% \end{tabular}
+% \caption{Preconditioners for iterative solvers in {\ViennaCL}.}
+% \label{tab:preconditioners}
+% \end{center}
+% \end{table}
+
+\subsection{Incomplete LU Factorization with Threshold (ILUT)}
+The incomplete LU factorization preconditioner aims at computing sparse matrices lower and upper triangular matrices $L$ and $U$ such that the sparse system
+matrix is approximately given by $A \approx LU$. In order to control the sparsity pattern of $L$ and $U$, a threshold strategy is used (ILUT)
+\cite{saad-iterative-solution}. Due to the serial nature of the preconditioner, the setup as well as each application of ILUT to the residual is computed on
+the CPU.
 
+\begin{lstlisting}
 //compute ILUT preconditioner:
 ilut_precond< SparseMatrix > vcl_ilut(vcl_matrix,
                                       viennacl::linalg::ilut_tag());
+
+//solve (e.g. using conjugate gradient solver)
+vcl_result = viennacl::linalg::solve(vcl_matrix,
+                                     vcl_rhs,
+                                     viennacl::linalg::bicgstab_tag(),
+                                     vcl_ilut);   //preconditioner here
+\end{lstlisting}
+Two parameters can be passed to the constructor of \lstinline|ilut_tag|: The first specifies the maximum number of entries per row in $L$ and $U$, while the
+second parameter specifies the drop tolerance.
+
+
+\subsection{Jacobi Preconditioner}
+A Jacobi preconditioner is a simple diagonal preconditioner given by the reciprocals of the diagonal entries of the system matrix $A$.
+Use the preconditioner as follows:
+\begin{lstlisting}
 //compute Jacobi preconditioner:
 jacobi_precond< SparseMatrix > vcl_jacobi(vcl_matrix,
                                           viennacl::linalg::jacobi_tag());
-//compute ILUT preconditioner:
+
+//solve (e.g. using conjugate gradient solver)
+vcl_result = viennacl::linalg::solve(vcl_matrix,
+                                     vcl_rhs,
+                                     viennacl::linalg::cg_tag(),
+                                     vcl_jacobi);
+\end{lstlisting}
+
+
+\subsection{Row Scaling Preconditioner}
+A row scaling preconditioner is a simple diagonal preconditioner given by the reciprocals of the norms of the rows of the system matrix $A$.
+Use the preconditioner as follows:
+\begin{lstlisting}
+//compute row scaling preconditioner:
 row_scaling< SparseMatrix > vcl_row_scaling(vcl_matrix,
                                       viennacl::linalg::row_scaling_tag());
 
@@ -156,23 +207,182 @@ row_scaling< SparseMatrix > vcl_row_scaling(vcl_matrix,
 vcl_result = viennacl::linalg::solve(vcl_matrix,
                                      vcl_rhs,
                                      viennacl::linalg::cg_tag(),
-                                     vcl_ilut);   //preconditioner here
+                                     vcl_row_scaling);
 \end{lstlisting}
+The tag \lstinline|viennacl::linalg::row_scaling_tag()| can be supplied with a parameter denoting the norm to be used. A value of \lstinline|1| specifies the
+$l^1$-norm, while a value of $2$ selects the $l^2$-norm (default).
 
-\begin{table}[tb]
+\subsection{Algebraic Multigrid}
+\NOTE{Algebraic Multigrid preconditioners are experimental in {\ViennaCLversion}. Interface changes as well as considerable performance improvements may
+be included in future releases!}
+
+\NOTE{Algebraic Multigrid preconditioners depend on {\ublas}.}
+
+Algebraic multigrid mimics the behavior of geometric multigrid on the algebraic level and is thus suited for black-box purposes, where only the system matrix
+and the right hand side vector are available \cite{trottenberg:multigrid}. Many different flavors of the individual multigrid ingredients exists
+\cite{yang:parallel-amg}, of which the most common ones are implemented in {\ViennaCL}.
+
+The two main ingredients of algebraic multigrid are a coarsening algorithm and an interpolation algorithm. The available coarsening methods are listed in
+Tab.~\ref{tab:amg-coarsening}.
+\begin{table}[tbp]
 \begin{center}
-\renewcommand{\arraystretch}{1.2}
-\begin{tabular}{p{3cm}|p{4cm}|p{7cm}}
-Method & Brief description & Parameters\\
+\begin{tabular}{l|l}
+Description & {\ViennaCL} option constant \\
 \hline
-ILUT & incomplete LU factorization & First parameter: Maximum number of entries
-per row. Second parameter: Drop tolerance. \\
-Jacobi & Divide each row in $A$ by its diagonal entry & none \\
-Row Scaling & Divide each row in $A$ by its norm & First parameter specifies
-the norm (1: $l^1$-norm, 2: $l^2$-norm)\\
+Classical Ruge-St\"uben (RS) & \lstinline|VIENNACL_AMG_COARSE_RS| \\
+One-Pass & \lstinline|VIENNACL_AMG_COARSE_ONEPASS| \\
+RS0 & \lstinline|VIENNACL_AMG_COARSE_RS0| \\
+RS3 & \lstinline|VIENNACL_AMG_COARSE_RS3| \\
+Aggregation & \lstinline|VIENNACL_AMG_COARSE_AG| \\
+Smoothed aggregation & \lstinline|VIENNACL_AMG_COARSE_SA| \\
+\end{tabular}
+\caption{AMG coarsening methods available in {\ViennaCL}. Per default, classical RS coarsening is used.\label{tab:amg-coarsening}}
+\end{center}
+\end{table}
+The available interpolation methods are given in Tab.~\ref{tab:amg-interpolation}.
+\begin{table}[tbp]
+\begin{center}
+\begin{tabular}{l|l}
+Description & {\ViennaCL} option constant \\
 \hline
+Direct & \lstinline|VIENNACL_AMG_INTERPOL_DIRECT| \\
+Classic & \lstinline|VIENNACL_AMG_INTERPOL_ONEPASS| \\
+RS0 coarsening & \lstinline|VIENNACL_AMG_INTERPOL_RS0| \\
+RS3 coarsening & \lstinline|VIENNACL_AMG_INTERPOL_RS3| \\
 \end{tabular}
-\caption{Preconditioners for iterative solvers in {\ViennaCL}.}
-\label{tab:preconditioners}
+\caption{AMG interpolation methods available in {\ViennaCL}. Per default, direct interpolation is used.\label{tab:amg-interpolation}}
 \end{center}
 \end{table}
+In addition, the following parameters can be controlled in the \lstinline|amg_tag| and can be passed to the constructor:
+\begin{itemize}
+ \item Strength of dependence threshold (default: $0.25$)
+ \item Interpolation weight (default: $1$)
+ \item Jacobi smoother weight (default: $1$)
+ \item Number of pre-smoothing steps (default: $1$)
+ \item Number of post-smoothing steps (default: $1$)
+ \item Number of coarse levels
+\end{itemize}
+
+\TIP{Note that the efficiency of the various AMG flavors are typically highly problem-specific. Therefore, failure of one method for a particular problem does
+NOT imply that other coarsening or interpolation strategies will fail as well.}
+
+\subsection{Sparse Approximate Inverses}
+
+\NOTE{Sparse Approximate Inverse preconditioners are experimental in {\ViennaCLversion}. Interface changes as well as considerable performance improvements may
+be included in future releases!}
+
+\NOTE{Sparse Approximate Inverse preconditioners depend on {\ublas}.}
+
+An alternative construction of a preconditioner for a sparse system matrix $A$ is to compute a matrix $M$ with a prescribed sparsity pattern such that
+\begin{align}
+ \Vert AM - I \Vert_F \rightarrow \min \ ,
+\end{align}
+where $\Vert \cdot \Vert_F$ denotes the Frobenius norm.
+This is the basic idea of sparse approximate inverse (SPAI) preconditioner. It becomes increasingly attractive because of their inherent high degree of
+parallelism, since the minimization problem can be solved independently for each column of $M$. {\ViennaCL} provides two preconditioners of
+this family: The first is the classical SPAI algorithm as described by Grote and Huckle \cite{grote:spai}, the second is the factored SPAI (FSPAI) for symmetric
+matrices as proposed by Huckle \cite{huckle:fspai}.
+
+SPAI can be employed for a CPU matrix \lstinline|M| of type \lstinline|MatrixType| as follows:
+\begin{lstlisting}
+// setup SPAI preconditioner, purely CPU-based
+viennacl::linalg::spai_precond<MatrixType> 
+  spai_cpu(M, viennacl::linalg::spai_tag(1e-3, 3, 5e-2));
+
+//solve (e.g. using stab. Bi-conjugate gradient solver)
+vcl_result = viennacl::linalg::solve(M,
+                                     rhs,
+                                     viennacl::linalg::bicgstab_tag(),
+                                     spai_cpu);
+\end{lstlisting}
+The first parameter denotes the residual norm threshold for the full matrix, the second parameter the maximum number of pattern updates, and the third
+parameter is the threshold for the residual of each minimization problem.
+
+For GPU-matrices, only parts of the setup phase are computed on the CPU, because compute-intensive tasks can be carried out on the GPU:
+\begin{lstlisting}
+// setup SPAI preconditioner, GPU-assisted
+viennacl::linalg::spai_precond<GPUMatrixType> 
+  spai_gpu(vcl_matrix, viennacl::linalg::spai_tag(1e-3, 3, 5e-2));
+
+//solve (e.g. using conjugate gradient solver)
+vcl_result = viennacl::linalg::solve(vcl_matrix,
+                                     vcl_rhs,
+                                     viennacl::linalg::bicgstab_tag(),
+                                     spai_gpu);
+\end{lstlisting}
+The \lstinline|GPUMatrixType| is typically a \lstinline|viennacl::compressed_matrix| type.
+
+For symmetric matrices, FSPAI can be used with the conjugate gradient solver:
+\begin{lstlisting}
+viennacl::linalg::fspai_precond<MatrixType> fspai_cpu(M, viennacl::linalg::fspai_tag());
+
+//solve (e.g. using stab. Bi-conjugate gradient solver)
+vcl_result = viennacl::linalg::solve(M,
+                                     rhs,
+                                     viennacl::linalg::cg_tag(),
+                                     fspai_cpu);
+\end{lstlisting}
+Our experience is that FSPAI is typically more efficient than SPAI when applied to the same matrix, both in computational effort and in terms of convergence
+acceleration of the iterative solvers. 
+
+\NOTE{At present, there is no GPU-accelerated FSPAI included in {\ViennaCL}.}
+
+Note that FSPAI depends on the ordering of the unknowns, thus bandwidth reduction algorithms may be employed first, cf.~Sec.~\ref{sec:bandwidth-reduction}.
+
+
+\section{Fast Fourier Transform}
+\NOTE{The fast Fourier transform is experimental in {\ViennaCLversion}. Interface changes as well as considerable performance improvements may
+be included in future releases!}
+
+Since there is no standardized complex type in {\OpenCL} at the time of the release of {\ViennaCLversion}, vectors need to be set up with real- and imaginary
+part before computing a fast Fourier tranform (FFT). In order to store complex numbers $z_0$, $z_1$, etc.~in a \lstinline|viennacl::vector|, say \lstinline|v|,
+the real and imaginary parts are mapped to even and odd entries of \lstinline|v| respectively: \lstinline|v[0] = Real(z_0)|, \lstinline|v[1] = Imag(z_0)|,
+\lstinline|v[2] = Real(z_1)|, \lstinline|v[3] = Imag(z_1)|, etc.
+
+The FFT of \lstinline|v| can then be computed either by writing to a second vector \lstinline|output| or by directly writing the result to \lstinline|v|
+\begin{lstlisting}
+ viennacl::fft(v, output);
+ viennacl::inplace_fft(v);
+\end{lstlisting}
+Conversely, the inverse FFT is computed as
+\begin{lstlisting}
+ viennacl::ifft(v, output);
+ viennacl::inplace_ifft(v);
+\end{lstlisting}
+
+\NOTE{In {\ViennaCLversion} the FFT with complexity $N \log N$ is computed for vectors with a size of a power of two only. For other vector sizes, a standard
+discrete Fourier transform with complexity $N^2$ is employed. This is subject to change in future versions.}
+
+\section{Bandwidth Reduction} \label{sec:bandwidth-reduction}
+\NOTE{Bandwidth reduction algorithms are experimental in {\ViennaCLversion}. Interface changes as well as considerable performance improvements may
+be included in future releases!}
+
+The bandwidth of a sparse matrix is defined as the maximum difference of the indices of nonzero entries in a row, taken over all rows. A low bandwidth
+typically allows for the use of efficient banded matrix solvers instead of iterative solvers. Moreover, better cache utilization as well as lower fill-in in
+LU-factorization based algorithms can be expected.
+
+For a given sparse matrix with large bandwidth, {\ViennaCL} provides routines for renumbering the unknowns such that the reordered system matrix shows much
+smaller bandwidth. Typical applications stem from the discretization of partial differential equations by means of the finite element or the finite difference
+method. The algorithms employed are as follows:
+\begin{itemize}
+ \item Classical Cuthill-McKee algorithm \cite{cuthill:reducing-bandwidth}
+ \item Modified Cuthill-McKee algorithm \cite{cuthill:reducing-bandwidth}
+ \item Gibbs-Poole-Stockmeyer algorithm, cf.~\cite{lewis:gps-algorithm}
+\end{itemize}
+The modified Cuthill-McKee algorithm also takes nodes with small, but not necessarily minimal degree as root node into account and may lead to better results
+than the classical Cuthill-McKee algorithm. A parameter $a \in [0,1]$ controls the number of nodes considered: All nodes with degree $d$ fulfilling
+\begin{align*}
+ d_{\min} \leq d \leq d_{\min} + a(d_{\max} - d_{\min})
+\end{align*}
+are considered, where $d_{\min}$ and $d_{\max}$ are the miminum and maximum nodal degrees in the graph. A second parameter \lstinline|gmax| specifies the
+number of additional root nodes considered.
+
+The algorithms are called for a \lstinline|matrix| of a type compatible with \lstinline|std::vector< std::map<int, double> >| by
+\begin{lstlisting}
+ r = viennacl::reorder(matrix, viennacl::cuthill_mckee_tag());
+ r = viennacl::reorder(matrix, 
+                       viennacl::advanced_cuthill_mckee_tag(a, gmax));
+ r = viennacl::reorder(matrix, viennacl::gibbs_poole_stockmeyer_tag());
+\end{lstlisting}
+and return the permutation array. In {\ViennaCLversion}, the user then needs to manually reorder the sparse matrix based on the permutation array. Example code
+can be found in \lstinline|examples/tutorial/bandwidth-reduction.cpp|.
diff --git a/doc/manual/changelogs.tex b/doc/manual/changelogs.tex
index fc6197d..39e6c63 100644
--- a/doc/manual/changelogs.tex
+++ b/doc/manual/changelogs.tex
@@ -1,6 +1,30 @@
 
 \chapter*{Change Logs} \addcontentsline{toc}{chapter}{Change Logs}
 
+\section*{Version 1.2.x}
+ 
+\subsection*{Version 1.2.0}
+Many new features from the Google Summer of Code and the I$\mu$E Summer of Code enter this release.
+Due to their complexity, they are for the moment still in \textit{experimental} state (see the respective chapters for details) and are expected to reach maturity with the 1.3.0 release.
+Shorter release cycles are planned for the near future.
+\begin{itemize}
+ \item Added a bunch of algebraic multigrid preconditioner variants (contributed by Markus Wagner)
+ \item Added (factored) sparse approximate inverse preconditioner (SPAI, contributed by Nikolay Lukash)
+ \item Added fast Fourier transform (FFT) for vector sizes with a power of two, tandard Fourier transform for other sizes (contributed by Volodymyr Kysenko)
+ \item Additional structured matrix classes for circulant matrices, Hankel matrices, Toeplitz matrices and Vandermonde matrices (contributed by Volodymyr Kysenko)
+ \item Added reordering algorithms (Cuthill-McKee and Gibbs-Poole-Stockmeyer, contributed by Philipp Grabenweger)
+ \item Refurbished CMake build system (thanks to Michael Wild)
+ \item Added matrix and vector proxy objects for submatrix and subvector manipulation
+ \item Added (possibly GPU-assisted) QR factorization
+ \item Per default, a \lstinline|viennacl::ocl::context| now consists of one device only. The rationale is to provide better out-of-the-box support for machines with hybrid graphics (two GPUs), where one GPU may not be capable of double precision support.
+ \item Fixed problems with \lstinline|viennacl::compressed_matrix| which occurred if the number of rows and columns differed
+ \item Improved documentation for the case of multiple custom kernels within a program
+ \item Improved matrix-matrix multiplication kernels (may lead to up to 20 percent performance gains)
+ \item Fixed problems in GMRES for small matrices (dimensions smaller than the maximum number of Krylov vectors)
+\end{itemize}
+
+
+
 \section*{Version 1.1.x}
 
 \subsection*{Version 1.1.2}
diff --git a/doc/manual/contributors.tex b/doc/manual/contributors.tex
index b57eb20..b8f047b 100644
--- a/doc/manual/contributors.tex
+++ b/doc/manual/contributors.tex
@@ -5,22 +5,25 @@ Copyright {\copyright} 2010--2011, Institute for Microelectronics, Vienna Univer
 
 \vspace{2.5cm}
 
-Main Contributors:\\ 
+\textit{Project Head:}\\ 
 
-Florian Rudolf\\
 Karl Rupp\\
-Josef Weinbub\\
 
 \vspace{2.5cm}
 
-Current Maintainers: \\
+\textit{Code Contributors:} \\
 
+Philipp Grabenweger\\
+Volodymyr Kysenko\\
+Nikolay Lukash\\
 Florian Rudolf\\
-Karl Rupp\\
+Markus Wagner\\
 Josef Weinbub\\
+Michael Wild
+
 
 
-\vspace{7.0cm}
+\vspace{5.0cm}
 
 Institute for Microelectronics\newline
 Vienna University of Technology\newline
diff --git a/doc/manual/cover.tex b/doc/manual/cover.tex
index 1e96f1f..49fbb40 100644
--- a/doc/manual/cover.tex
+++ b/doc/manual/cover.tex
@@ -2,7 +2,7 @@
 \begin{titlepage}
 
 \vspace*{3cm}
-\Huge{ViennaCL 1.1.2} 
+\Huge{ViennaCL 1.2.0} 
 \rule[0.0cm]{9.5cm}{0.05cm}
 \begin{flushright}
 \Large{User Manual}
diff --git a/doc/manual/custom-kernels.tex b/doc/manual/custom-kernels.tex
index 0ae2db6..5ead68e 100644
--- a/doc/manual/custom-kernels.tex
+++ b/doc/manual/custom-kernels.tex
@@ -10,12 +10,10 @@ For custom algorithms the built-in functionality of {\ViennaCL} may not be suffi
 \end{itemize}
 A tutorial on this topic can be found at \texttt{examples/tutorial/custom-kernels.cpp}.
 
-\TIP{The interface for custom kernels was simplified considerably in {\ViennaCL} 1.1.0.}
-
 \section{Setting up the Source Code}
 The {\OpenCL} source code has to be provided as a string. One can either write the source code directly into a string within C++ files, or one can read the {\OpenCL} source from a file. For demonstration purposes, we write the source directly as a string constant:
 \begin{lstlisting}
-const char * my_compute_kernel = 
+const char * my_compute_program = 
 "__kernel void elementwise_prod(\n"
 "          __global const float * vec1,\n"
 "          __global const float * vec2, \n"
@@ -26,31 +24,38 @@ const char * my_compute_kernel =
 "    result[i] = vec1[i] * vec2[i];\n"
 "};\n";
 \end{lstlisting}
-The kernel takes three vector arguments \lstinline{vec1}, \lstinline{vec2} and \lstinline{result} and the vector length variable \lstinline{size}. The compute kernel computes the entry-wise product of the vectors \lstinline|vec1| and \lstinline|vec2| and writes the result to the vector \lstinline|result|. For more detailed explanation of the {\OpenCL} source code, please refer to the specification available at the Khronos group webpage \cite{khronoscl}.
+The kernel takes three vector arguments \lstinline{vec1}, \lstinline{vec2} and \lstinline{result} and the vector length variable \lstinline{size} abd computes the entry-wise product of the vectors \lstinline|vec1| and \lstinline|vec2| and writes the result to the vector \lstinline|result|. For more detailed explanation of the {\OpenCL} source code, please refer to the specification available at the Khronos group webpage \cite{khronoscl}.
 
 \section{Compilation of the Source Code}
 The source code in the string constant \lstinline{my_compute_kernel} has to be compiled to an {\OpenCL} program.
 An {\OpenCL} program is a compilation unit and may contain several different compute kernels,
 so one could also include another kernel function \lstinline{inplace_elementwise_prod} which writes the result directly to one of the two operands \lstinline{vec1} or \lstinline{vec2} in the same program.
 \begin{lstlisting}
-viennacl::ocl::program & prog = 
+viennacl::ocl::program & my_prog = 
   viennacl::ocl::current_context().add_program(my_compute_program,
                                                "my_compute_program");
 \end{lstlisting}
-The next step is to extract the kernel \lstinline|my_compute_kernel| from the compiled program:
+The next step is to register the kernel \lstinline|elementwise_prod| included in the compiled program:
 \begin{lstlisting}
-viennacl::ocl::kernel & my_kernel = my_prog.add_kernel("elementwise_prod");
+my_prog.add_kernel("elementwise_prod");
+\end{lstlisting}
+Similarly, one proceeds with other kernels in the compiled program.
+The next step is to extract the kernel object \lstinline|my_kernel| from the compiled program:
+\begin{lstlisting}
+viennacl::ocl::kernel & my_kernel = my_prog.get_kernel("elementwise_prod");
 \end{lstlisting}
 Now, the kernel is set up to use the function \lstinline|elementwise_prod| compiled into the program \lstinline|my_prog|.
 
-\NOTE{Note that C++ references to kernels and programs may become invalid as other kernels or programs are added. This is the case at the first instantiation of an {\ViennaCL} object of a particular type. Therefore, first allocate the required {\ViennaCL} objects and compile/add all custom kernels, before you start passing references to programs or kernels around.}
+\NOTE{Note that C++ references to kernels and programs may become invalid as other kernels or programs are added. 
+      Therefore, first allocate the required {\ViennaCL} objects and compile/add all custom kernels, before you start taking references to custom programs or kernels.}
 
-Instead of holding references to programs and kernels directly at compilation, one can obtain them at other places within the application source code by
+Instead of extracting references to programs and kernels directly at program compilation, one can obtain them at other places within the application source code by
 \begin{lstlisting}
 viennacl::ocl::program & prog = 
   viennacl::ocl::current_context().get_program("my_compute_program");
 viennacl::ocl::kernel & my_kernel = my_prog.get_kernel("elementwise_prod");
 \end{lstlisting}
+This simplifies application development considerably, since no program and kernel objects need to be passed around.
 
 \section{Launching the Kernel}
 Before launching the kernel, one may adjust the global and local work sizes (readers not familiar with that are encouraged to read the {\OpenCL} standard \cite{khronoscl}).
diff --git a/doc/manual/installation.tex b/doc/manual/installation.tex
index 0ff348e..1ba2c1d 100644
--- a/doc/manual/installation.tex
+++ b/doc/manual/installation.tex
@@ -23,7 +23,7 @@ have a recent version of {\CMake} installed.
 To use {\ViennaCL}, the following prerequisites have to be fulfilled:
 \begin{itemize}
  \item A recent C++ compiler (e.g.~{\GCC} version 4.2.x or above and Visual C++
-2008 are known to work)
+2010 are known to work)
  \item {\OpenCL}~\cite{khronoscl,nvidiacl} for accessing compute devices (GPUs);
 see Section~\ref{opencllibs} for details.
 (optional, since iterative solvers can also be used standalone with other libraries (\ublas, Eigen, MTL4))
@@ -95,7 +95,7 @@ installation process~\cite{atistreamdocu}.
 {\OpenCL} library path to the \texttt{LD\_LIBRARY\_PATH} environment variable.
 Otherwise, linker errors will occur as the required library cannot be found.}
 
-It is important to note that the AMD APP SDK does not provide \OpenCL
+It is important to note that the AMD APP SDK may not provide {\OpenCL}
 certified double precision support~\cite{atidouble} on some CPUs and GPUs. In
 \ViennaCL 1.0.x, double precision was only experimentally available in
 {\ViennaCL} by defining one of the preprocessor constants
@@ -114,9 +114,7 @@ support is enabled by default -- provided that it is available on the device.
 double precision using ATI Stream SDK v2.1.}
 
 \subsection{INTEL OpenCL SDK} \label{sec:opencl-on-intel}
-At the time of this release, a beta-version of an {\OpenCL} SDK by INTEL is available.
-
-Even though the SDK is still in beta-state, {\ViennaCL} works fine with the INTEL OpenCL SDK on Windows and Linux.
+ {\ViennaCL} works fine with the INTEL OpenCL SDK on Windows and Linux.
 The correct linker path is set automatically in \lstinline|CMakeLists.txt| when using the {\CMake} build system, cf.~Sec.~\ref{sec:viennacl-installation}.
 
 
@@ -133,23 +131,30 @@ on your system. The other dependencies are listed in Tab.~\ref{tab:tutorial-depe
 \begin{tabular}{l|l}
 Tutorial No. & Dependencies\\
 \hline
+\texttt{tutorial/amg.cpp}        & {\OpenCL}, {\ublas} \\
+\texttt{tutorial/bandwidth-reduction.cpp} & - \\
 \texttt{tutorial/blas1.cpp}      & {\OpenCL} \\
 \texttt{tutorial/blas2.cpp}      & {\OpenCL}, {\ublas} \\
 \texttt{tutorial/blas3.cpp}      & {\OpenCL}, {\ublas} \\
+\texttt{tutorial/custom-kernels.cpp}       & {\OpenCL} \\
+\texttt{tutorial/custom-context.cpp}       & {\OpenCL} \\
+\texttt{tutorial/fft.cpp}        & {\OpenCL} \\
 \texttt{tutorial/iterative.cpp}  & {\OpenCL}, {\ublas} \\
-\texttt{tutorial/iterative-ublas.cpp}        & {\ublas}  \\
-\texttt{tutorial/iterative-eigen.cpp}        & {\Eigen}   \\
-\texttt{tutorial/iterative-mtl4.cpp}         & {\MTL}    \\
-\texttt{tutorial/custom-kernel.cpp}          & {\OpenCL} \\
-\texttt{tutorial/custom-context.cpp}         & {\OpenCL} \\
-\texttt{tutorial/eigen-with-viennacl.cpp}    & {\OpenCL}, {\Eigen} \\
-\texttt{tutorial/mtl4-with-viennacl.cpp}     & {\OpenCL}, {\MTL} \\
-\texttt{tutorial/viennacl-info.cpp}          & {\OpenCL} \\
-\texttt{benchmarks/vector.cpp}  & {\OpenCL} \\
-\texttt{benchmarks/sparse.cpp}  & {\OpenCL}, {\ublas} \\
-\texttt{benchmarks/solver.cpp}  & {\OpenCL}, {\ublas} \\
-\texttt{benchmarks/opencl.cpp}  & {\OpenCL} \\
+\texttt{tutorial/iterative-ublas.cpp}      & {\ublas}  \\
+\texttt{tutorial/iterative-eigen.cpp}      & {\Eigen}   \\
+\texttt{tutorial/iterative-mtl4.cpp}       & {\MTL}    \\
+\texttt{tutorial/matrix-range.cpp}         & {\OpenCL}, {\ublas} \\
+\texttt{tutorial/qr.cpp}         & {\OpenCL}, {\ublas} \\
+\texttt{tutorial/spai.cpp}       & {\OpenCL}, {\ublas} \\
+\texttt{tutorial/eigen-with-viennacl.cpp}  & {\OpenCL}, {\Eigen} \\
+\texttt{tutorial/mtl4-with-viennacl.cpp}   & {\OpenCL}, {\MTL} \\
+\texttt{tutorial/vector-range.cpp}         & {\OpenCL}, {\ublas} \\
+\texttt{tutorial/viennacl-info.cpp}        & {\OpenCL} \\
 \texttt{benchmarks/blas3.cpp}   & {\OpenCL} \\
+\texttt{benchmarks/opencl.cpp}  & {\OpenCL} \\
+\texttt{benchmarks/solver.cpp}  & {\OpenCL}, {\ublas} \\
+\texttt{benchmarks/sparse.cpp}  & {\OpenCL}, {\ublas} \\
+\texttt{benchmarks/vector.cpp}  & {\OpenCL} \\
 \end{tabular}
 \caption{Dependencies for the examples in the \texttt{examples/} folder}
 \label{tab:tutorial-dependencies}
@@ -182,6 +187,13 @@ to build the examples. If some of the dependencies in Tab.~\ref{tab:tutorial-dep
 
 \TIP{Speed up the building process by using jobs, e.g. \keyword{make -j4}.}
 
+Execute the examples from the \lstinline|build/| folder as follows:
+\begin{lstlisting}
+ $> examples/tutorial/blas1
+ $> examples/benchmarks/vectorbench
+\end{lstlisting}
+Note that all benchmark executables carry the suffix \lstinline|bench|. 
+
 \subsection{Mac OS X}
 \label{apple}
 The tools mentioned in Section \ref{dependencies} are available on 
@@ -207,7 +219,9 @@ In the following the procedure is outlined for \texttt{Visual Studio}: Assuming
 \item Set the {\ViennaCL} base directory as source directory.
 \item Set the \texttt{build/} directory as build directory.
 \item Click on 'Configure' and select the appropriate generator (e.g.~\texttt{Visual Studio 9 2008})
-\item Click on 'Generate' (you may need to click on 'Configure' one more time before you can click on 'Generate')
+\item If either Boost or some OpenCL paths cannot be found, please select the advanced view and provide the required paths manually
+\item Click again an 'Configure'
+\item Click on 'Generate'
 \item The project files can now be found in the {\ViennaCL} build directory, where they can be opened and compiled with Visual Studio (provided that the include and library paths are set correctly, see Sec.~\ref{sec:viennacl-installation}).
 \end{itemize}
 
diff --git a/doc/manual/introduction.tex b/doc/manual/introduction.tex
index 474247c..bd64996 100644
--- a/doc/manual/introduction.tex
+++ b/doc/manual/introduction.tex
@@ -13,10 +13,11 @@ implemented (confer for example to the book of Y.~Saad \cite{saad-iterative-solu
  \item Stabilized BiConjugate Gradient (BiCGStab)
  \item Generalized Minimum Residual (GMRES)
 \end{itemize}
-An optional ILU preconditioner can be used, which is in {\ViennaCLversion}
-precomputed and applied on a single CPU core and may thus not lead to overall
-performance gains over a purely CPU based implementation.
-Moreover, a Jacobi and a row-scaling preconditioner are available, which can be executed directly in parallel on the {\OpenCL} device.
+%An optional ILU preconditioner can be used, which is in {\ViennaCLversion}
+%precomputed and applied on a single CPU core and may thus not lead to overall
+%performance gains over a purely CPU based implementation.
+%Moreover, a Jacobi and a row-scaling preconditioner are available, which can be executed directly in parallel on the {\OpenCL} device.
+A number of preconditioners is provided with {\ViennaCLversion} in order to improve convergence of these solvers, cf.~Chap.~\ref{chap:algorithms}.
 
 The solvers and preconditioners can also be used with different
 libraries due to their generic implementation. At present, it is possible to
@@ -32,7 +33,7 @@ using either the AMD Accelerated Parallel Processing SDK (formerly ATI Stream SD
 
 \NOTE{Double precision arithmetic on GPUs is only possible if it is provided by the GPU. There is no double precision emulation in {\ViennaCL}.}
 
-\NOTE{Double precision arithmetic using the ATI Stream SDK or AMD APP SDK is not yet fully
+\NOTE{Double precision arithmetic using the ATI Stream SDK or AMD APP SDK may not be fully
 OpenCL-certified. See Sec.~\ref{sec:opencl-on-ati} for details.}
 
 \begin{table}[tb]
@@ -84,9 +85,9 @@ ATI FirePro V87XX    & ok & essentially ok \\
 ATI FirePro V88XX    & ok & essentially ok \\
 \end{tabular}
 \caption{Available arithmetics in {\ViennaCL} provided by selected GPUs. At the
-release of {\ViennaCLversion}, the Stream SDK from AMD/ATI does not comply to
+release of {\ViennaCLversion}, the Stream SDK (APP SDK) from AMD/ATI may not comply to
 the {\OpenCL} standard for double precision extensions, but we have not observed
-problems with the latest version of Stream SDK. Support for AMD devices is now
+problems with the latest version of the SDK. Support for AMD devices is now
 per default enabled in {\ViennaCL}, see Sec.~\ref{sec:opencl-on-ati}.}
 \label{tab:double-precision-GPUs}
 \end{center}
diff --git a/doc/manual/types.tex b/doc/manual/types.tex
index a85308a..eff1245 100644
--- a/doc/manual/types.tex
+++ b/doc/manual/types.tex
@@ -239,6 +239,103 @@ listed.}
 \end{center}
 \end{table}
 
+\section{Structured Matrix Types}
+
+\NOTE{Structured matrix types are experimental in {\ViennaCLversion}. Interface changes as well as considerable performance improvements may be included in
+future releases!}
+
+There are a number of structured dense matrices for which some algorithms such as matrix-vector products can be computed with much lower computational effort
+than for the general dense matrix case. In the following, four structured dense matrix types included in {\ViennaCL} are discussed. 
+Example code can be found in \lstinline|examples/tutorial/structured-matrices.cpp|.
+
+\subsection{Circulant Matrix}
+A circulant matrix is a matrix of the form
+\begin{align*}
+ \left( \begin{array}{ccccc}
+         c_0 & c_{n-1} & \ldots & c_2 & c_1 \\
+         c_1 & c_0 & c_{n-1} & & c_2 \\
+         \vdots & c_1 & c_0 & \ddots & \vdots \\
+         c_{n-2} & & \ddots & \ddots & c_{n-1} \\
+         c_{n-1} & c_{n-2} & \hdots & c_1 & c_0 \\
+        \end{array} \right)
+\end{align*}
+and available in {\ViennaCL} via
+\begin{lstlisting}
+ #include "viennacl/circulant_matrix.hpp"
+
+ std::size_t s = 42;
+ viennacl::circulant_matrix circ_mat(s, s);
+\end{lstlisting}
+The \lstinline|circulant_matrix| type can be manipulated in the same way as the dense matrix type \lstinline|matrix|. Note that writing to a single element of
+the matrix is structure-preserving, e.g.~changing \lstinline|circ_mat(1,2)| will automatically update \lstinline|circ_mat(0,1)|, \lstinline|circ_mat(2,3)| and
+so on.
+
+
+\subsection{Hankel Matrix}
+A Hankel matrix is a matrix of the form
+\begin{align*}
+ \left( \begin{array}{cccc}
+         a & b & c & d \\
+         b & c & d & e \\
+         c & d & e & f \\
+         d & e & f & g \\
+        \end{array} \right)
+\end{align*}
+and available in {\ViennaCL} via
+\begin{lstlisting}
+ #include "viennacl/hankel_matrix.hpp"
+
+ std::size_t s = 42;
+ viennacl::hankel_matrix hank_mat(s, s);
+\end{lstlisting}
+The \lstinline|hankel_matrix| type can be manipulated in the same way as the dense matrix type \lstinline|matrix|. Note that writing to a single element of
+the matrix is structure-preserving, e.g.~changing \lstinline|hank_mat(1,2)| in the example above will also update \lstinline|hank_mat(0,3)|,
+\lstinline|hank_mat(2,1)| and
+\lstinline|hank_mat(3,0)|.
+
+\subsection{Toeplitz Matrix}
+A Toeplitz matrix is a matrix of the form
+\begin{align*}
+ \left( \begin{array}{cccc}
+         a & b & c & d \\
+         e & a & b & c \\
+         f & e & a & b \\
+         g & f & e & a \\
+        \end{array} \right)
+\end{align*}
+and available in {\ViennaCL} via
+\begin{lstlisting}
+ #include "viennacl/toeplitz_matrix.hpp"
+
+ std::size_t s = 42;
+ viennacl::toeplitz_matrix toep_mat(s, s);
+\end{lstlisting}
+The \lstinline|toeplitz_matrix| type can be manipulated in the same way as the dense matrix type \lstinline|matrix|. Note that writing to a single element of
+the matrix is structure-preserving, e.g.~changing \lstinline|toep_mat(1,2)| in the example above will also update \lstinline|toep_mat(0,1)| and
+\lstinline|toep_mat(2,3)|.
+
+
+\subsection{Vandermonde Matrix}
+A Vandermonde matrix is a matrix of the form
+\begin{align*}
+ \left( \begin{array}{ccccc}
+         1 & \alpha_1 & \alpha_1^2 & \ldots & \alpha_1^{n-1} \\
+         1 & \alpha_2 & \alpha_2^2 & \ldots & \alpha_2^{n-1} \\
+         1 & \vdots & \vdots & \vdots \\
+         1 & \alpha_m & \alpha_m^2 & \ldots & \alpha_m^{n-1} \\
+        \end{array} \right)
+\end{align*}
+and available in {\ViennaCL} via
+\begin{lstlisting}
+ #include "viennacl/vandermonde_matrix.hpp"
+
+ std::size_t s = 42;
+ viennacl::vandermonde_matrix vand_mat(s, s);
+\end{lstlisting}
+The \lstinline|vandermonde_matrix| type can be manipulated in the same way as the dense matrix type \lstinline|matrix|, but restrictions apply. For
+example, the addition or subtraction of two Vandermonde matrices does not yield another Vandermonde matrix. Note that writing to a single element of
+the matrix is structure-preserving, e.g.~changing \lstinline|vand_mat(1,2)| in the example above will automatically update \lstinline|vand_mat(1,3)|,
+\lstinline|vand_mat(1,4)|, etc.
 
 
 \section{Sparse Matrix Types}
@@ -362,4 +459,37 @@ The use of \texttt{coordinate\_matrix$<$T, alignment$>$} is similar to that of t
 \subsubsection{Members}
 The interface is described in Tab.~\ref{tab:coordinate-matrix-interface}. 
 
-\TIP{In {\ViennaCLversion} the use of \lstinline|compressed\_matrix| over \lstinline|coordinate\_matrix| is encouraged due to better performance!}
\ No newline at end of file
+\TIP{In {\ViennaCLversion} the use of \lstinline|compressed\_matrix| over \lstinline|coordinate\_matrix| is encouraged due to better performance!}
+
+
+
+\section{Proxies}
+\NOTE{Matrix and vector proxies are experimental in {\ViennaCLversion}. Interface changes as well as considerable performance improvements may
+be included in future releases!}
+
+Similar to {\ublas}, {\ViennaCL} provides \lstinline|range| objects in order to conveniently manipulate dense submatrices and vectors. The functionality is
+provided in the headers \lstinline|viennacl/vector_proxy.hpp| and \lstinline|viennacl/matrix_proxy.hpp| respectively.
+A range refers to a contiguous integer interval and is set up as
+\begin{lstlisting}
+ std::size_t lower_bound = 1;
+ std::size_t upper_bound = 7;
+ viennacl::range r(lower_bound, upper_bound);
+\end{lstlisting}
+In order to address a subvector of a vector \lstinline|v| and a submatrix of a matrix \lstinline|M|, the proxy objects \lstinline|v_sub| and \lstinline|M_sub|
+are created as follows:
+\begin{lstlisting}
+ typedef viennacl::vector<ScalarType>                      VectorType;
+ typedef viennacl::matrix<ScalarType, viennacl::row_major> MatrixType;
+
+ viennacl::vector_range<VCLVectorType> v_sub(v, r);
+ viennacl::matrix_range<VCLMatrixType> M_sub(M, r, r);
+\end{lstlisting}
+The proxy objects can now be manipulated in the same way as vectors and dense matrices. In particular, operations such as vector proxy additions and matrix
+additions work as usual, e.g.
+\begin{lstlisting}
+ vcl_sub += vcl_sub;
+ M_sub += M_sub;
+\end{lstlisting}
+ Submatrix-Submatrix products are computed in the same manner and are handy for many block-based linear algebra algorithms.
+
+\TIP{Example code can be found in \lstinline|examples/tutorial/vector-range.cpp| and \lstinline|examples/tutorial/matrix-range.cpp|}
\ No newline at end of file
diff --git a/doc/manual/viennacl.bib b/doc/manual/viennacl.bib
index 5282ca3..18987a0 100644
--- a/doc/manual/viennacl.bib
+++ b/doc/manual/viennacl.bib
@@ -84,3 +84,61 @@
    URL = {http://code.google.com/p/pugixml/}
 }
 % -----------------------------------------------
+ at book{trottenberg:multigrid,
+   author = {Trottenberg, U. and Oosterlee, C. and Sch{\"{u}}ller, A.},
+   title = {{Multigrid}},
+   publisher = {Academic Press},
+   year = {2001}
+}
+
+ at InBook{yang:parallel-amg,
+ title = {{Numerical Solutions of Partial Differential Equations on Parallel Computers}},
+ chapter = {{Parallel Algebraic Multigrid Methods - High Performance Preconditioners}},
+ publisher = {Springer},
+ year = {2006},
+ author = {Yang, U.~M.},
+ editor = {Bruaset, A.~M. and Tveito, A.},
+ series = {Lecture Notes in Computational Science and Engineering},
+ pages = {209-236},
+}
+
+
+ at article{grote:spai,
+  author = {Grote, M.~J. and Huckle, T.},
+  title = {{Parallel Preconditioning with Sparse Approximate Inverses}},
+  journal = {SIAM J.~Sci.~Comp.},
+  vol = {18},
+  no = {3},
+  pages = {838--853},
+  year = {1997},
+}
+
+ at article{huckle:fspai,
+  author = {Huckle, T.},
+  title = {{Factorized Sparse Approximate Inverses for Preconditioning}},
+  journal = {J.~Supercomput.},
+  vol = {25},
+  pages = {109--117},
+  year = {2003},
+}
+
+ at inproceedings{cuthill:reducing-bandwidth,
+ author = {Cuthill, E. and McKee, J.},
+ title = {Reducing the bandwidth of sparse symmetric matrices},
+ booktitle = {Proceedings of the 1969 24th National Conference},
+ series = {ACM '69},
+ year = {1969},
+ pages = {157--172},
+ publisher = {ACM},
+} 
+
+ at article{lewis:gps-algorithm,
+ author = {Lewis, J.~G.},
+ title = {Algorithm 582: The Gibbs-Poole-Stockmeyer and Gibbs-King Algorithms for Reordering Sparse Matrices},
+ journal = {ACM Trans. Math. Softw.},
+ volume = {8},
+ issue = {2},
+ year = {1982},
+ pages = {190--194},
+ publisher = {ACM},
+} 
diff --git a/doc/manual/viennacl.tex b/doc/manual/viennacl.tex
index d6d8cd8..fbc4f36 100644
--- a/doc/manual/viennacl.tex
+++ b/doc/manual/viennacl.tex
@@ -56,8 +56,8 @@
 \newcommand{\OpenMP} {\texttt{OpenMP}}
 \newcommand{\OpenCL} {\texttt{OpenCL}}
 \newcommand{\ViennaCL} {\texttt{ViennaCL}}
-\newcommand{\ViennaCLversion} {\texttt{ViennaCL 1.1.2}}
-\newcommand{\ViennaCLminorversion} {\texttt{ViennaCL 1.1.x}}
+\newcommand{\ViennaCLversion} {\texttt{ViennaCL 1.2.0}}
+\newcommand{\ViennaCLminorversion} {\texttt{ViennaCL 1.2.x}}
 \newcommand{\Boost} {\texttt{Boost}}
 \newcommand{\ublas} {\texttt{ublas}}
 \newcommand{\Eigen} {\texttt{Eigen}}
diff --git a/doc/viennacl.pdf b/doc/viennacl.pdf
deleted file mode 100644
index c5e7bbc..0000000
Binary files a/doc/viennacl.pdf and /dev/null differ
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
new file mode 100644
index 0000000..3690af1
--- /dev/null
+++ b/examples/CMakeLists.txt
@@ -0,0 +1,12 @@
+set(EXAMPLES_TESTDATA
+   testdata/mat65k.mtx
+   testdata/README
+   testdata/result65025.txt
+   testdata/rhs65025.txt)
+foreach(f IN LISTS EXAMPLES_TESTDATA)
+   configure_file(${f} "${CMAKE_CURRENT_BINARY_DIR}/${f}" COPYONLY)
+endforeach()
+
+add_subdirectory(tutorial)
+add_subdirectory(benchmarks)
+add_subdirectory(parameters)
diff --git a/examples/benchmarks/CMakeLists.txt b/examples/benchmarks/CMakeLists.txt
new file mode 100644
index 0000000..bfc5636
--- /dev/null
+++ b/examples/benchmarks/CMakeLists.txt
@@ -0,0 +1,13 @@
+foreach(bench blas3 opencl vector)
+   add_executable(${bench}bench ${bench}.cpp)
+   target_link_libraries(${bench}bench ${OPENCL_LIBRARIES})
+endforeach()
+
+if(ENABLE_UBLAS)
+   include_directories(${Boost_INCLUDE_DIRS})
+   foreach(bench sparse solver)
+      add_executable(${bench}bench ${bench}.cpp)
+      target_link_libraries(${bench}bench ${OPENCL_LIBRARIES})
+   endforeach()
+endif()
+
diff --git a/examples/benchmarks/benchmark-utils.hpp b/examples/benchmarks/benchmark-utils.hpp
index df6bf9b..05a5032 100644
--- a/examples/benchmarks/benchmark-utils.hpp
+++ b/examples/benchmarks/benchmark-utils.hpp
@@ -1,6 +1,22 @@
 #ifndef _BENCHMARK_UTILS_HPP_
 #define _BENCHMARK_UTILS_HPP_
 
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
 #include <iostream>
 
 void printOps(double num_ops, double exec_time)
diff --git a/examples/benchmarks/blas3.cpp b/examples/benchmarks/blas3.cpp
index c6febb0..f7bc073 100644
--- a/examples/benchmarks/blas3.cpp
+++ b/examples/benchmarks/blas3.cpp
@@ -1,20 +1,23 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //disable debug mechanisms to have a fair comparison with ublas:
-#define NDEBUG
-//#define VIENNACL_BUILD_INFO
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
 
 //
 // include necessary system headers
diff --git a/examples/benchmarks/io.hpp b/examples/benchmarks/io.hpp
index 4970e3d..96b1d12 100644
--- a/examples/benchmarks/io.hpp
+++ b/examples/benchmarks/io.hpp
@@ -1,5 +1,21 @@
-#ifndef _VECTOR_IO_HPP_
-#define _VECTOR_IO_HPP_
+#ifndef VECTOR_IO_HPP_
+#define VECTOR_IO_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 #include <boost/numeric/ublas/vector.hpp>
 #include <boost/numeric/ublas/matrix_sparse.hpp>
diff --git a/examples/benchmarks/opencl.cpp b/examples/benchmarks/opencl.cpp
index ad3db1a..776fdca 100644
--- a/examples/benchmarks/opencl.cpp
+++ b/examples/benchmarks/opencl.cpp
@@ -1,19 +1,22 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-//#define VIENNACL_BUILD_INFO
-#define NDEBUG
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
 
 #include "viennacl/scalar.hpp"
 #include "viennacl/vector.hpp"
diff --git a/examples/benchmarks/qr.cpp b/examples/benchmarks/qr.cpp
new file mode 100644
index 0000000..598100e
--- /dev/null
+++ b/examples/benchmarks/qr.cpp
@@ -0,0 +1,107 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#define VIENNACL_HAVE_UBLAS
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cmath>
+#include <algorithm>
+#include <stdio.h>
+#include <sys/time.h>
+#include <time.h>
+#include "benchmark-utils.hpp"
+/*#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/linalg/norm_2.hpp"
+#include "viennacl/io/matrix_market.hpp"*/
+#include "viennacl/linalg/qr.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/io.hpp"
+
+           
+//typedef viennacl::compressed_matrix<float> SparseMatrix;
+using namespace boost::numeric::ublas;
+//using namespace viennacl::linalg;
+
+
+int main (int argc, const char * argv[])
+{
+    typedef float               ScalarType;
+    typedef boost::numeric::ublas::matrix<ScalarType, boost::numeric::ublas::column_major>        MatrixType;
+    typedef boost::numeric::ublas::vector<ScalarType>                   VectorType;
+    Timer timer;
+    double elapsed;
+
+    size_t rows = 1800;
+    size_t cols = 1800;
+    double num_ops_qr = 2.0 * cols * cols * (rows - cols/3.0);
+    double num_ops_recovery = 4.0 * (rows*rows*cols - rows*cols*cols + cols*cols*cols);
+    
+    MatrixType A(rows, cols);
+    MatrixType Q(rows, rows);
+    MatrixType R(rows, cols);
+    
+    for (size_t i=0; i<rows; ++i)
+    {
+      for (size_t j=0; j<cols; ++j)
+      {
+        A(i,j) = 1.0 + (i + 1)*(j+1);
+        R(i,j) = 0.0;
+      }
+      for (size_t j=0; j<rows; ++j)
+      {
+        Q(i,j) = 0.0;
+      }
+    }
+    
+    //std::cout << "A: " << A << std::endl;
+    timer.start();
+    std::vector<ScalarType> betas = viennacl::linalg::block_qr(A);
+    //std::vector<ScalarType> betas = viennacl::linalg::qr(A);
+    elapsed = timer.get();
+    std::cout << "Time for QR on CPU: " << elapsed << std::endl;
+    std::cout << "Estimated GFLOPS: " << 1e-9 * num_ops_qr/ elapsed << std::endl;
+    
+    
+    //std::cout << "Inplace QR-factored A: " << A << std::endl;
+
+    timer.start();
+    viennacl::linalg::recoverQ(A, betas, Q, R); 
+    elapsed = timer.get();
+    std::cout << "Time for Q-recovery on CPU: " << elapsed << std::endl;
+    std::cout << "Estimated GFLOPS: " << 1e-9 * num_ops_recovery / elapsed << std::endl;
+
+    /*std::cout << "R after recovery: " << R << std::endl;
+    std::cout << "Q after recovery: " << Q << std::endl;
+    std::cout << "Q*Q^T: " << prod(Q, trans(Q)) << std::endl;
+    
+    std::cout << "Q * R: " << prod(Q, R) << std::endl;*/
+    
+    return EXIT_SUCCESS;
+}
+
diff --git a/examples/benchmarks/solver.cpp b/examples/benchmarks/solver.cpp
index 0939c8f..562b102 100644
--- a/examples/benchmarks/solver.cpp
+++ b/examples/benchmarks/solver.cpp
@@ -1,18 +1,22 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#define NDEBUG
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
 
 #include <boost/numeric/ublas/matrix_sparse.hpp>
 #include <boost/numeric/ublas/operation_sparse.hpp>
@@ -46,7 +50,7 @@ using namespace boost::numeric;
 *   
 */
 
-#define BENCHMARK_RUNS          5
+#define BENCHMARK_RUNS          1
 
 
 template <typename ScalarType>
@@ -97,7 +101,7 @@ void run_solver(MatrixType const & matrix, VectorType const & rhs, VectorType co
   std::cout << "Relative residual: " << viennacl::linalg::norm_2(residual) / viennacl::linalg::norm_2(rhs) << std::endl;
   std::cout << "Estimated rel. residual: " << solver.error() << std::endl;
   std::cout << "Iterations: " << solver.iters() << std::endl;
-  result -=ref_result;
+  result -= ref_result;
   std::cout << "Relative deviation from result: " << viennacl::linalg::norm_2(result) / viennacl::linalg::norm_2(ref_result) << std::endl;
 }
 
@@ -213,7 +217,6 @@ int run_benchmark()
   exec_time = timer.get();
   std::cout << "ViennaCL time: " << exec_time << std::endl;
   
-
   ///////////////////////////////////////////////////////////////////////////////
   //////////////////////              CG solver                //////////////////
   ///////////////////////////////////////////////////////////////////////////////
@@ -261,7 +264,6 @@ int run_benchmark()
 //  std::cout << "------- CG solver (row scaling preconditioner) via ViennaCL, coordinate_matrix ----------" << std::endl;
 //  run_solver(vcl_coordinate_matrix, vcl_vec2, vcl_result, cg_solver, vcl_row_scaling, cg_ops);
   
-  
   ///////////////////////////////////////////////////////////////////////////////
   //////////////////////           BiCGStab solver             //////////////////
   ///////////////////////////////////////////////////////////////////////////////
@@ -306,13 +308,12 @@ int run_benchmark()
   
 //  std::cout << "------- CG solver row scaling preconditioner) via ViennaCL, coordinate_matrix ----------" << std::endl;
 //  run_solver(vcl_coordinate_matrix, vcl_vec2, vcl_result, bicgstab_solver, vcl_row_scaling, bicgstab_ops);
-  
 
   ///////////////////////////////////////////////////////////////////////////////
   ///////////////////////            GMRES solver             ///////////////////
   ///////////////////////////////////////////////////////////////////////////////
   
-  long gmres_ops = static_cast<long>(solver_iters * (ublas_matrix.nnz() + solver_iters + 7) * ublas_vec2.size());
+  long gmres_ops = static_cast<long>(solver_iters * (ublas_matrix.nnz() + (solver_iters * 2 + 7) * ublas_vec2.size()));
   
   viennacl::linalg::gmres_tag gmres_solver(solver_tolerance, solver_iters, solver_krylov_dim);
   
diff --git a/examples/benchmarks/sparse.cpp b/examples/benchmarks/sparse.cpp
index dc3b821..6832715 100644
--- a/examples/benchmarks/sparse.cpp
+++ b/examples/benchmarks/sparse.cpp
@@ -1,19 +1,23 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //#define VIENNACL_BUILD_INFO
-#define NDEBUG
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
 
 #define VIENNACL_HAVE_UBLAS 1
 
diff --git a/examples/benchmarks/vector.cpp b/examples/benchmarks/vector.cpp
index 286d840..f079b7e 100644
--- a/examples/benchmarks/vector.cpp
+++ b/examples/benchmarks/vector.cpp
@@ -1,19 +1,23 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //#define VIENNACL_BUILD_INFO
-//#define NDEBUG
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
 
 #include "viennacl/scalar.hpp"
 #include "viennacl/vector.hpp"
diff --git a/examples/parameters/CMakeLists.txt b/examples/parameters/CMakeLists.txt
new file mode 100644
index 0000000..823439e
--- /dev/null
+++ b/examples/parameters/CMakeLists.txt
@@ -0,0 +1,25 @@
+include_directories(${PROJECT_SOURCE_DIR}/external)
+
+foreach(par vector matrix sparse parameter_reader)
+   set(n ${par}params)
+   if(par STREQUAL parameter_reader)
+      set(n ${par})
+   endif()
+   add_executable(${n} ${par}.cpp
+      ${PROJECT_SOURCE_DIR}/external/pugixml/src/pugixml.cpp)
+   target_link_libraries(${n} ${OPENCL_LIBRARIES})
+endforeach()
+
+if(ENABLE_VIENNAPROFILER)
+   include_directories(${VIENNAPROFILER_INCLUDE_DIRS})
+   foreach(par vector matrix sparse)
+      add_executable(${par}params_vprof ${par}.cpp
+         ${PROJECT_SOURCE_DIR}/external/pugixml/src/pugixml.cpp)
+      target_link_libraries(${par}params_vprof
+         ${OPENCL_LIBRARIES} ${VIENNAPROFILER_LIBRARIES})
+   endforeach()
+
+   set_target_properties(vectorparams_vprof matrixparams_vprof
+      sparseparams_vprof
+      PROPERTIES COMPILE_DEFINITIONS ENABLE_VIENNAPROFILER)
+endif()
diff --git a/examples/parameters/benchmark-utils.hpp b/examples/parameters/benchmark-utils.hpp
index df6bf9b..05a5032 100644
--- a/examples/parameters/benchmark-utils.hpp
+++ b/examples/parameters/benchmark-utils.hpp
@@ -1,6 +1,22 @@
 #ifndef _BENCHMARK_UTILS_HPP_
 #define _BENCHMARK_UTILS_HPP_
 
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
 #include <iostream>
 
 void printOps(double num_ops, double exec_time)
diff --git a/examples/parameters/common.hpp b/examples/parameters/common.hpp
index f050c66..a7cb07e 100644
--- a/examples/parameters/common.hpp
+++ b/examples/parameters/common.hpp
@@ -1,18 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-
-   file changelog: - May 28, 2010   New from scratch for first release
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 ////////////////////// some functions that aid testing to follow /////////////////////////////////
 
diff --git a/examples/parameters/common_vprof.hpp b/examples/parameters/common_vprof.hpp
index cd596f8..bd9548c 100644
--- a/examples/parameters/common_vprof.hpp
+++ b/examples/parameters/common_vprof.hpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 #include "viennaprofiler/mysqldb.hpp"
 #include "viennaprofiler/timer/precisetimer.hpp"
diff --git a/examples/parameters/matrix.cpp b/examples/parameters/matrix.cpp
index 6371b6e..c4591b3 100644
--- a/examples/parameters/matrix.cpp
+++ b/examples/parameters/matrix.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 
 #include "viennacl/scalar.hpp"
diff --git a/examples/parameters/matrix_functors.hpp b/examples/parameters/matrix_functors.hpp
index 2d35fbe..726b474 100644
--- a/examples/parameters/matrix_functors.hpp
+++ b/examples/parameters/matrix_functors.hpp
@@ -1,18 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-
-   file changelog: - May 28, 2010   New from scratch for first release
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 
 /////////// direct solver kernels ////////////////
diff --git a/examples/parameters/parameter_reader.cpp b/examples/parameters/parameter_reader.cpp
index f838cd6..e251b0b 100644
--- a/examples/parameters/parameter_reader.cpp
+++ b/examples/parameters/parameter_reader.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //#define VIENNACL_DEBUG_ALL
 //#define NDEBUG
diff --git a/examples/parameters/sparse.cpp b/examples/parameters/sparse.cpp
index 8ceb8c3..2181387 100644
--- a/examples/parameters/sparse.cpp
+++ b/examples/parameters/sparse.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 #include "viennacl/scalar.hpp"
 #include "viennacl/vector.hpp"
diff --git a/examples/parameters/vector.cpp b/examples/parameters/vector.cpp
index 465950f..99ef6a7 100644
--- a/examples/parameters/vector.cpp
+++ b/examples/parameters/vector.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 
 #include "viennacl/scalar.hpp"
diff --git a/examples/parameters/vector_functors.hpp b/examples/parameters/vector_functors.hpp
index b8f8363..78c2072 100644
--- a/examples/parameters/vector_functors.hpp
+++ b/examples/parameters/vector_functors.hpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 
 
diff --git a/examples/tutorial/CMakeLists.txt b/examples/tutorial/CMakeLists.txt
new file mode 100644
index 0000000..e4fd771
--- /dev/null
+++ b/examples/tutorial/CMakeLists.txt
@@ -0,0 +1,27 @@
+foreach(tut bandwidth-reduction blas1 custom-kernels custom-context fft viennacl-info)
+   add_executable(${tut} ${tut}.cpp)
+   target_link_libraries(${tut} ${OPENCL_LIBRARIES})
+endforeach()
+
+if(ENABLE_UBLAS)
+   include_directories(${Boost_INCLUDE_DIRS})
+   foreach(tut amg blas2 blas3 iterative iterative-ublas matrix-range qr spai structured-matrices vector-range)
+      add_executable(${tut} ${tut}.cpp)
+      target_link_libraries(${tut} ${OPENCL_LIBRARIES})
+   endforeach()
+endif()
+
+if(ENABLE_EIGEN)
+   include_directories(${EIGEN_INCLUDE_DIR})
+   add_executable(iterative-eigen iterative-eigen.cpp)
+   add_executable(eigen-with-viennacl
+      eigen-with-viennacl.cpp)
+   target_link_libraries(eigen-with-viennacl ${OPENCL_LIBRARIES})
+endif()
+
+if(ENABLE_MTL4)
+   foreach(tut iterative-mtl4 mtl4-with-viennacl)
+      add_executable(${tut} ${tut}.cpp)
+      target_link_libraries(${tut} ${OPENCL_LIBRARIES})
+   endforeach()
+endif()
diff --git a/examples/tutorial/Random.hpp b/examples/tutorial/Random.hpp
index 3094e1c..613c937 100644
--- a/examples/tutorial/Random.hpp
+++ b/examples/tutorial/Random.hpp
@@ -1,3 +1,20 @@
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
 #ifndef _RANDOM_HPP_
 #define _RANDOM_HPP_
 
diff --git a/examples/tutorial/amg.cpp b/examples/tutorial/amg.cpp
new file mode 100755
index 0000000..ffd4b37
--- /dev/null
+++ b/examples/tutorial/amg.cpp
@@ -0,0 +1,236 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#ifndef NDEBUG     //without NDEBUG the performance of sparse ublas matrices is poor.
+ #define NDEBUG
+#endif
+
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/operation_sparse.hpp>
+
+#define VIENNACL_HAVE_UBLAS 1
+
+#define SOLVER_ITERS 2500
+//#define SCALAR float
+#define SCALAR double
+
+//#define SOLVER_TOLERANCE 1e-5
+#define SOLVER_TOLERANCE 1e-9
+
+#include "viennacl/vector.hpp"
+#include "viennacl/coordinate_matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/bicgstab.hpp"
+#include "viennacl/io/matrix_market.hpp"
+#include "viennacl/linalg/norm_2.hpp"
+
+#include "viennacl/linalg/amg.hpp"
+
+#include <iostream>
+#include <vector>
+#include <ctime>
+#include "vector-io.hpp"
+
+
+template <typename MatrixType, typename VectorType, typename SolverTag, typename PrecondTag>
+void run_solver(MatrixType const & matrix, VectorType const & rhs, VectorType const & ref_result, SolverTag const & solver, PrecondTag const & precond)
+{
+  VectorType result(rhs);
+  VectorType residual(rhs);
+  
+  result = viennacl::linalg::solve(matrix, rhs, solver, precond);
+  residual -= viennacl::linalg::prod(matrix, result);
+  std::cout << "  > Relative residual: " << viennacl::linalg::norm_2(residual) / viennacl::linalg::norm_2(rhs) << std::endl;
+  std::cout << "  > Iterations: " << solver.iters() << std::endl;
+  result -= ref_result;
+  std::cout << "  > Relative deviation from result: " << viennacl::linalg::norm_2(result) / viennacl::linalg::norm_2(ref_result) << std::endl;
+}
+
+template <typename ScalarType>
+void run_amg(viennacl::linalg::cg_tag & cg_solver,
+             boost::numeric::ublas::vector<ScalarType> & ublas_vec,
+             boost::numeric::ublas::vector<ScalarType> & ublas_result,
+             boost::numeric::ublas::compressed_matrix<ScalarType> & ublas_matrix,
+             viennacl::vector<ScalarType> & vcl_vec,
+             viennacl::vector<ScalarType> & vcl_result,
+             viennacl::compressed_matrix<ScalarType> & vcl_compressed_matrix,
+             std::string info,
+             viennacl::linalg::amg_tag & amg_tag)
+{
+  
+  viennacl::linalg::amg_precond<boost::numeric::ublas::compressed_matrix<ScalarType> > ublas_amg = viennacl::linalg::amg_precond<boost::numeric::ublas::compressed_matrix<ScalarType> > (ublas_matrix, amg_tag);
+  boost::numeric::ublas::vector<ScalarType> avgstencil;
+  unsigned int coarselevels = amg_tag.get_coarselevels();
+  
+  std::cout << "-- CG with AMG preconditioner, " << info << " --" << std::endl;
+  
+  std::cout << " * Setup phase (ublas types)..." << std::endl;      
+  
+  // Coarse level measure might have been changed during setup. Reload!
+  ublas_amg.tag().set_coarselevels(coarselevels);
+  ublas_amg.setup();
+
+  std::cout << " * Operator complexity: " << ublas_amg.calc_complexity(avgstencil) << std::endl;
+  
+  amg_tag.set_coarselevels(coarselevels);
+  viennacl::linalg::amg_precond<viennacl::compressed_matrix<ScalarType> > vcl_amg = viennacl::linalg::amg_precond<viennacl::compressed_matrix<ScalarType> > (vcl_compressed_matrix, amg_tag);
+  std::cout << " * Setup phase (ViennaCL types)..." << std::endl;      
+  vcl_amg.tag().set_coarselevels(coarselevels);
+  vcl_amg.setup();
+    
+  std::cout << " * CG solver (ublas types)..." << std::endl;         
+  run_solver(ublas_matrix, ublas_vec, ublas_result, cg_solver, ublas_amg);   
+  
+  std::cout << " * CG solver (ViennaCL types)..." << std::endl;         
+  run_solver(vcl_compressed_matrix, vcl_vec, vcl_result, cg_solver, vcl_amg);
+
+}
+  
+int main()
+{
+  //
+  // Print some device info
+  //
+  std::cout << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << "               Device Info" << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  
+  std::cout << viennacl::ocl::current_device().info() << std::endl;
+  
+  typedef float    ScalarType;  // feel free to change this to double if supported by your device
+
+
+  //
+  // Set up the matrices and vectors for the iterative solvers (cf. iterative.cpp)
+  //
+  boost::numeric::ublas::vector<ScalarType> ublas_vec, ublas_result;
+  boost::numeric::ublas::compressed_matrix<ScalarType> ublas_matrix;
+  
+  viennacl::linalg::cg_tag cg_solver;
+  viennacl::linalg::amg_tag amg_tag;
+  viennacl::linalg::amg_precond<boost::numeric::ublas::compressed_matrix<ScalarType> > ublas_amg;
+    
+  // Read matrix
+  #ifdef _MSC_VER
+  if (!viennacl::io::read_matrix_market_file(ublas_matrix, "../../examples/testdata/mat65k.mtx"))
+  #else
+  if (!viennacl::io::read_matrix_market_file(ublas_matrix, "../examples/testdata/mat65k.mtx"))
+  #endif
+  {
+    std::cout << "Error reading Matrix file" << std::endl;
+    return EXIT_FAILURE;
+  }
+  
+  // Set up rhs and result vector
+  #ifdef _MSC_VER
+  if (!readVectorFromFile("../../examples/testdata/rhs65025.txt", ublas_vec))
+  #else
+  if (!readVectorFromFile("../examples/testdata/rhs65025.txt", ublas_vec))
+  #endif
+  {
+    std::cout << "Error reading RHS file" << std::endl;
+    return 0;
+  }
+
+  #ifdef _MSC_VER
+  if (!readVectorFromFile("../../examples/testdata/result65025.txt", ublas_result))
+  #else
+  if (!readVectorFromFile("../examples/testdata/result65025.txt", ublas_result))
+  #endif
+  {
+    std::cout << "Error reading Result file" << std::endl;
+    return 0;
+  }
+  
+  viennacl::vector<ScalarType> vcl_vec(ublas_vec.size());
+  viennacl::vector<ScalarType> vcl_result(ublas_vec.size());
+  viennacl::compressed_matrix<ScalarType> vcl_compressed_matrix(ublas_vec.size(), ublas_vec.size());
+
+  // Copy to GPU
+  viennacl::copy(ublas_matrix, vcl_compressed_matrix);
+  viennacl::copy(ublas_vec, vcl_vec);
+  viennacl::copy(ublas_result, vcl_result);
+
+  //
+  // Run solver without preconditioner
+  //
+  std::cout << "-- CG solver (CPU, no preconditioner) --" << std::endl;
+  run_solver(ublas_matrix, ublas_vec, ublas_result, cg_solver, viennacl::linalg::no_precond());
+  
+  std::cout << "-- CG solver (GPU, no preconditioner) --" << std::endl;   
+  run_solver(vcl_compressed_matrix, vcl_vec, vcl_result, cg_solver, viennacl::linalg::no_precond());
+  
+  //
+  // With AMG Preconditioner RS+DIRECT
+  //
+  amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_RS,       // coarsening strategy
+                                      VIENNACL_AMG_INTERPOL_DIRECT, // interpolation strategy
+                                      0.25, // strength of dependence threshold
+                                      0.2,  // interpolation weight
+                                      0.67, // jacobi smoother weight
+                                      3,    // presmoothing steps
+                                      3,    // postsmoothing steps
+                                      0);   // number of coarse levels to be used (0: automatically use as many as reasonable)
+  run_amg (cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "RS COARSENING, DIRECT INTERPOLATION", amg_tag);
+  
+  //
+  // With AMG Preconditioner RS+CLASSIC
+  //
+  amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_RS, VIENNACL_AMG_INTERPOL_CLASSIC, 0.25, 0.2, 0.67, 3, 3, 0);
+  run_amg ( cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "RS COARSENING, CLASSIC INTERPOLATION", amg_tag);
+  
+  //
+  // With AMG Preconditioner ONEPASS+DIRECT
+  //
+  amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_ONEPASS, VIENNACL_AMG_INTERPOL_DIRECT,0.25, 0.2, 0.67, 3, 3, 0);
+  run_amg (cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "ONEPASS COARSENING, DIRECT INTERPOLATION", amg_tag);
+  
+  //
+  // With AMG Preconditioner RS0+DIRECT
+  //
+  amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_RS0, VIENNACL_AMG_INTERPOL_DIRECT, 0.25, 0.2, 0.67, 3, 3, 0);
+  run_amg (cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "RS0 COARSENING, DIRECT INTERPOLATION", amg_tag);
+  
+  //
+  // With AMG Preconditioner RS3+DIRECT
+  //
+  amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_RS3, VIENNACL_AMG_INTERPOL_DIRECT, 0.25, 0.2, 0.67, 3, 3, 0);
+  run_amg (cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "RS3 COARSENING, DIRECT INTERPOLATION", amg_tag);
+  
+  //
+  // With AMG Preconditioner AG
+  //
+  amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_AG, VIENNACL_AMG_INTERPOL_AG, 0.08, 0, 0.67, 3, 3, 0);
+  run_amg (cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "AG COARSENING, AG INTERPOLATION", amg_tag);
+  
+  //
+  // With AMG Preconditioner SA
+  //
+  amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_AG, VIENNACL_AMG_INTERPOL_SA, 0.08, 0.67, 0.67, 3, 3, 0);
+  run_amg (cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "AG COARSENING, SA INTERPOLATION",amg_tag);
+  
+  
+  //
+  //  That's it.
+  //
+  std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+  
+  return EXIT_SUCCESS;
+}
+
diff --git a/examples/tutorial/bandwidth-reduction.cpp b/examples/tutorial/bandwidth-reduction.cpp
new file mode 100644
index 0000000..52c4297
--- /dev/null
+++ b/examples/tutorial/bandwidth-reduction.cpp
@@ -0,0 +1,269 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <map>
+#include <vector>
+#include <deque>
+#include <cmath>
+
+#include "viennacl/misc/bandwidth_reduction.hpp"
+
+/*
+*   Tutorial: Matrix bandwidth reduction algorithms
+*/
+
+
+//
+// Part 1: Helper functions
+//
+
+// Reorders a matrix according to a previously generated node
+// number permutation vector r
+std::vector< std::map<int, double> > reorder_matrix(std::vector< std::map<int, double> > const & matrix, std::vector<int> const & r)
+{
+    std::vector< std::map<int, double> > matrix2(r.size());
+    std::vector<std::size_t> r2(r.size());
+    
+    for (std::size_t i = 0; i < r.size(); i++)
+        r2[r[i]] = i;
+
+    for (std::size_t i = 0; i < r.size(); i++)
+        for (std::map<int, double>::const_iterator it = matrix[r[i]].begin();  it != matrix[r[i]].end(); it++)
+            matrix2[i][r2[it->first]] = it->second;
+    
+    return matrix2;
+}
+
+// Calculates the bandwidth of a matrix
+int calc_bw(std::vector< std::map<int, double> > const & matrix)
+{
+    int bw = 0;
+    
+    for (std::size_t i = 0; i < matrix.size(); i++)
+        for (std::map<int, double>::const_iterator it = matrix[i].begin();  it != matrix[i].end(); it++)
+            bw = std::max(bw, std::abs(static_cast<int>(i - it->first)));
+    
+    return bw;
+}
+
+
+// Calculate the bandwidth of a reordered matrix
+int calc_reordered_bw(std::vector< std::map<int, double> > const & matrix,  std::vector<int> const & r)
+{
+    std::vector<int> r2(r.size());
+    int bw = 0;
+    
+    for (std::size_t i = 0; i < r.size(); i++)
+        r2[r[i]] = i;
+
+    for (std::size_t i = 0; i < r.size(); i++)
+        for (std::map<int, double>::const_iterator it = matrix[r[i]].begin();  it != matrix[r[i]].end(); it++)
+            bw = std::max(bw, std::abs(static_cast<int>(i - r2[it->first])));
+    
+    return bw;
+}
+
+
+// Generates a random permutation by Knuth shuffle algorithm
+// reference: http://en.wikipedia.org/wiki/Knuth_shuffle 
+//  (URL taken on July 2nd, 2011)
+std::vector<int> generate_random_reordering(int n)
+{
+    std::vector<int> r(n);
+    int tmp;
+    int j;
+    
+    for (int i = 0; i < n; i++)
+        r[i] = i;
+    
+    for (int i = 0; i < n - 1; i++)
+    {
+        j = i + static_cast<std::size_t>((static_cast<double>(rand()) / static_cast<double>(RAND_MAX)) * (n - 1 - i));
+        if (j != i)
+        {
+            tmp = r[i];
+            r[i] = r[j];
+            r[j] = tmp;
+        }
+    }
+    
+    return r;
+}
+
+
+// function for the generation of a three-dimensional mesh incidence matrix
+//  l:  x dimension
+//  m:  y dimension
+//  n:  z dimension
+//  tri: true for tetrahedral mesh, false for cubic mesh
+//  return value: matrix of size l * m * n
+std::vector< std::map<int, double> > gen_3d_mesh_matrix(int l, int m, int n, bool tri)
+{
+    std::vector< std::map<int, double> > matrix;
+    int s;
+    int ind;
+    int ind1;
+    int ind2;
+    
+    s = l * m * n;
+    matrix.resize(s);
+    for (int i = 0; i < l; i++)
+    {
+        for (int j = 0; j < m; j++)
+        {
+            for (int k = 0; k < n; k++)
+            {
+                ind = i + l * j + l * m * k;
+                
+                matrix[ind][ind] = 1.0;
+                
+                if (i > 0)
+                {
+                    ind2 = ind - 1;
+                    matrix[ind][ind2] = 1.0;
+                    matrix[ind2][ind] = 1.0;
+                }
+                if (j > 0)
+                {
+                    ind2 = ind - l;
+                    matrix[ind][ind2] = 1.0;
+                    matrix[ind2][ind] = 1.0;
+                }
+                if (k > 0)
+                {
+                    ind2 = ind - l * m;
+                    matrix[ind][ind2] = 1.0;
+                    matrix[ind2][ind] = 1.0;
+                }
+                
+                if (tri)
+                {
+                    if (i < l - 1 && j < m - 1)
+                    {
+                        if ((i + j + k) % 2 == 0)
+                        {
+                            ind1 = ind;
+                            ind2 = ind + 1 + l;
+                        }
+                        else
+                        {
+                            ind1 = ind + 1;
+                            ind2 = ind + l;
+                        }
+                        matrix[ind1][ind2] = 1.0;
+                        matrix[ind2][ind1] = 1.0;
+                    }
+                    if (i < l - 1 && k < n - 1)
+                    {
+                        if ((i + j + k) % 2 == 0)
+                        {
+                            ind1 = ind;
+                            ind2 = ind + 1 + l * m;
+                        }
+                        else
+                        {
+                            ind1 = ind + 1;
+                            ind2 = ind + l * m;
+                        }
+                        matrix[ind1][ind2] = 1.0;
+                        matrix[ind2][ind1] = 1.0;
+                    }
+                    if (j < m - 1 && k < n - 1)
+                    {
+                        if ((i + j + k) % 2 == 0)
+                        {
+                            ind1 = ind;
+                            ind2 = ind + l + l * m;
+                        }
+                        else
+                        {
+                            ind1 = ind + l;
+                            ind2 = ind + l * m;
+                        }
+                        matrix[ind1][ind2] = 1.0;
+                        matrix[ind2][ind1] = 1.0;
+                    }
+                }
+            }
+        }
+    }
+    
+    return matrix;
+}
+
+
+//
+// Part 2: Tutorial code
+//
+
+
+
+int main(int argc, char *argv[])
+{
+  srand(42);
+  std::cout << "-- Generating matrix --" << std::endl;
+  std::size_t dof_per_dim = 64;   //number of grid points per coordinate direction
+  std::size_t n = dof_per_dim * dof_per_dim * dof_per_dim; //total number of unknowns
+  std::vector< std::map<int, double> > matrix = gen_3d_mesh_matrix(dof_per_dim, dof_per_dim, dof_per_dim, false);  //If last parameter is 'true', a tetrahedral grid instead of a hexahedral grid is used.
+  
+  //
+  // Shuffle the generated matrix
+  //
+  std::vector<int> r = generate_random_reordering(n);
+  std::vector< std::map<int, double> > matrix2 = reorder_matrix(matrix, r);
+  
+  
+  //
+  // Print some statistics:
+  //
+  std::cout << " * Unknowns: " << n << std::endl;
+  std::cout << " * Initial bandwidth: " << calc_bw(matrix) << std::endl;
+  std::cout << " * Randomly reordered bandwidth: " << calc_bw(matrix2) << std::endl;
+
+  //
+  // Reorder using Cuthill-McKee algorithm
+  //
+  std::cout << "-- Cuthill-McKee algorithm --" << std::endl;
+  r = viennacl::reorder(matrix2, viennacl::cuthill_mckee_tag());
+  std::cout << " * Reordered bandwidth: " << calc_reordered_bw(matrix2, r) << std::endl;
+  
+  //
+  // Reorder using advanced Cuthill-McKee algorithm
+  //
+  std::cout << "-- Advanced Cuthill-McKee algorithm --" << std::endl;
+  double a = 0.0;
+  double gmax = 1;
+  r = viennacl::reorder(matrix2, viennacl::advanced_cuthill_mckee_tag(a, gmax));
+  std::cout << " * Reordered bandwidth: " << calc_reordered_bw(matrix2, r) << std::endl;
+  
+  //
+  // Reorder using Gibbs-Poole-Stockmeyer algorithm
+  //
+  std::cout << "-- Gibbs-Poole-Stockmeyer algorithm --" << std::endl;
+  r = viennacl::reorder(matrix2, viennacl::gibbs_poole_stockmeyer_tag());
+  std::cout << " * Reordered bandwidth: " << calc_reordered_bw(matrix2, r) << std::endl;
+    
+  //
+  //  That's it.
+  //
+  std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+    
+  return EXIT_SUCCESS;
+}
diff --git a/examples/tutorial/blas1.cpp b/examples/tutorial/blas1.cpp
index 611131d..9c51c37 100644
--- a/examples/tutorial/blas1.cpp
+++ b/examples/tutorial/blas1.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 // include necessary system headers
 #include <iostream>
@@ -198,6 +200,6 @@ int main()
   //
   std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
 
-  return 0;
+  return EXIT_SUCCESS;
 }
 
diff --git a/examples/tutorial/blas2.cpp b/examples/tutorial/blas2.cpp
index 7d39f7b..bc7c5f1 100644
--- a/examples/tutorial/blas2.cpp
+++ b/examples/tutorial/blas2.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // include necessary system headers
diff --git a/examples/tutorial/blas3.cpp b/examples/tutorial/blas3.cpp
index 7c95ef3..94dbbff 100644
--- a/examples/tutorial/blas3.cpp
+++ b/examples/tutorial/blas3.cpp
@@ -1,19 +1,24 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //disable debug mechanisms to have a fair comparison with ublas:
-#define NDEBUG
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
+
 
 //
 // include necessary system headers
@@ -119,7 +124,6 @@ int main()
   exec_time = timer.get();
   std::cout << " - Execution time: " << exec_time << std::endl;
   
-  
   //
   // Now iterate over all OpenCL devices in the context and compute the matrix-matrix product
   //
@@ -154,7 +158,6 @@ int main()
     for (unsigned int i = 0; i < ublas_C1.size1(); ++i)
       for (unsigned int j = 0; j < ublas_C1.size2(); ++j)
         ublas_C1(i,j) = stl_C[i * ublas_C1.size2() + j];
-    
 
     std::cout << " - Checking result... ";
     bool check_ok = true;
diff --git a/examples/tutorial/blas3range.cpp b/examples/tutorial/blas3range.cpp
new file mode 100644
index 0000000..1dfcf01
--- /dev/null
+++ b/examples/tutorial/blas3range.cpp
@@ -0,0 +1,211 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+//disable debug mechanisms to have a fair comparison with ublas:
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
+
+
+//
+// include necessary system headers
+//
+#include <iostream>
+
+//
+// ublas includes
+//
+#include <boost/numeric/ublas/io.hpp>
+#include <boost/numeric/ublas/triangular.hpp>
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/ublas/lu.hpp>
+#include <boost/numeric/ublas/io.hpp>
+
+
+// Must be set if you want to use ViennaCL algorithms on ublas objects
+#define VIENNACL_HAVE_UBLAS 1
+
+//
+// ViennaCL includes
+//
+#include "viennacl/scalar.hpp"
+#include "viennacl/vector.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix_proxy.hpp"
+
+// Some helper functions for this tutorial:
+#include "Random.hpp"
+#include "vector-io.hpp"
+
+#include "../benchmarks/benchmark-utils.hpp"
+
+/*
+*   Tutorial: BLAS level 3 functionality
+*   
+*/
+
+#define BLAS3_MATRIX_SIZE   1500
+
+using namespace boost::numeric;
+
+int main()
+{
+  typedef float     ScalarType;
+
+  Timer timer;
+  double exec_time;
+
+  //
+  // Set up some ublas objects
+  //
+  ublas::matrix<ScalarType> ublas_A(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+  ublas::matrix<ScalarType, ublas::column_major> ublas_B(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+  ublas::matrix<ScalarType> ublas_C(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+  ublas::matrix<ScalarType> ublas_C1(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+  ublas::matrix<ScalarType> ublas_C2(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+
+  //
+  // One alternative: Put the matrices into a contiguous block of memory (allows to use viennacl::fast_copy(), avoiding temporary memory)
+  //
+  std::vector<ScalarType> stl_A(BLAS3_MATRIX_SIZE * BLAS3_MATRIX_SIZE);
+  std::vector<ScalarType> stl_B(BLAS3_MATRIX_SIZE * BLAS3_MATRIX_SIZE);
+  std::vector<ScalarType> stl_C(BLAS3_MATRIX_SIZE * BLAS3_MATRIX_SIZE);
+
+  //
+  // Fill the matrix
+  //
+  for (unsigned int i = 0; i < ublas_A.size1(); ++i)
+    for (unsigned int j = 0; j < ublas_A.size2(); ++j)
+    {
+      ublas_A(i,j) = random<ScalarType>();
+      stl_A[i*ublas_A.size2() + j] = ublas_A(i,j);
+    }
+
+  for (unsigned int i = 0; i < ublas_B.size1(); ++i)
+    for (unsigned int j = 0; j < ublas_B.size2(); ++j)
+    {
+      ublas_B(i,j) = random<ScalarType>();
+      stl_B[i + j*ublas_B.size1()] = ublas_B(i,j);
+    }
+    
+  ublas::range ublas_r1(1, BLAS3_MATRIX_SIZE-1);
+  ublas::range ublas_r2(2, BLAS3_MATRIX_SIZE-2);
+  ublas::matrix_range< ublas::matrix<ScalarType> >  ublas_A_sub(ublas_A, ublas_r1, ublas_r2);
+  ublas::matrix_range< ublas::matrix<ScalarType, ublas::column_major> >  ublas_B_sub(ublas_B, ublas_r2, ublas_r1);
+  ublas::matrix_range< ublas::matrix<ScalarType> >  ublas_C_sub(ublas_C, ublas_r1, ublas_r1);
+
+  //
+  // Set up some ViennaCL objects
+  //
+  //viennacl::ocl::set_context_device_type(0, viennacl::ocl::gpu_tag());  //uncomment this is you wish to use GPUs only
+  viennacl::matrix<ScalarType> vcl_A(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+  viennacl::matrix<ScalarType, viennacl::column_major> vcl_B(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+  viennacl::matrix<ScalarType> vcl_C(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+
+  viennacl::range vcl_r1(1, BLAS3_MATRIX_SIZE-1);
+  viennacl::range vcl_r2(2, BLAS3_MATRIX_SIZE-2);
+  viennacl::matrix_range< viennacl::matrix<ScalarType> >  vcl_A_sub(vcl_A, vcl_r1, vcl_r2);
+  viennacl::matrix_range< viennacl::matrix<ScalarType, viennacl::column_major> >  vcl_B_sub(vcl_B, vcl_r2, vcl_r1);
+  viennacl::matrix_range< viennacl::matrix<ScalarType> >  vcl_C_sub(vcl_C, vcl_r1, vcl_r1);
+  
+  ublas_C.clear();
+  viennacl::copy(ublas_C, vcl_C);
+  
+  /////////////////////////////////////////////////
+  //////////// Matrix-matrix products /////////////
+  /////////////////////////////////////////////////
+  
+  //
+  // Compute reference product using ublas:
+  //
+  std::cout << "--- Computing matrix-matrix product using ublas ---" << std::endl;
+  timer.start();
+  ublas_C_sub = ublas::prod(ublas_A_sub, ublas_B_sub);
+  exec_time = timer.get();
+  std::cout << " - Execution time: " << exec_time << std::endl;
+  
+  //std::cout << ublas_C << std::endl;
+  
+  //
+  // Now iterate over all OpenCL devices in the context and compute the matrix-matrix product
+  //
+  std::cout << std::endl << "--- Computing matrix-matrix product on each available compute device using ViennaCL ---" << std::endl;
+  std::vector<viennacl::ocl::device> devices = viennacl::ocl::current_context().devices();
+  for (size_t i=0; i<devices.size(); ++i)
+  {
+    viennacl::ocl::current_context().switch_device(devices[i]);
+    std::cout << " - Device Name: " << viennacl::ocl::current_device().name() << std::endl;
+
+    //viennacl::copy(ublas_A, vcl_A);
+    //viennacl::copy(ublas_B, vcl_B);
+    viennacl::fast_copy(&(stl_A[0]),
+                        &(stl_A[0]) + stl_A.size(),
+                        vcl_A);
+    viennacl::fast_copy(&(stl_B[0]),
+                        &(stl_B[0]) + stl_B.size(),
+                        vcl_B);
+    vcl_C_sub = viennacl::linalg::prod(vcl_A_sub, vcl_B_sub);
+    viennacl::ocl::get_queue().finish();
+    timer.start();
+    vcl_C_sub = viennacl::linalg::prod(vcl_A_sub, vcl_B_sub);
+    viennacl::ocl::get_queue().finish();
+    exec_time = timer.get();
+    std::cout << " - Execution time on device (no setup time included): " << exec_time << std::endl;
+    std::cout << " - GFLOPs: " << (vcl_A.size1() / 1000.0) * (vcl_A.size2() / 1000.0) * (vcl_B.size2() / 1000.0) / exec_time << std::endl;
+
+    //std::cout << vcl_C << std::endl;
+    
+    //
+    // Verify the result
+    //
+    //viennacl::copy(vcl_C, ublas_C1);
+    viennacl::fast_copy(vcl_C, &(stl_C[0]));
+    for (unsigned int i = 0; i < ublas_C1.size1(); ++i)
+      for (unsigned int j = 0; j < ublas_C1.size2(); ++j)
+        ublas_C1(i,j) = stl_C[i * ublas_C1.size2() + j];
+
+    std::cout << " - Checking result... ";
+    bool check_ok = true;
+    for (unsigned int i = 0; i < ublas_A.size1(); ++i)
+    {
+      for (unsigned int j = 0; j < ublas_A.size2(); ++j)
+      {
+        if ( fabs(ublas_C1(i,j) - ublas_C(i,j)) / ublas_C(i,j) > 1e-4 )
+        {
+          check_ok = false;
+          break;
+        }
+      }
+      if (!check_ok)
+        break;
+    }
+    if (check_ok)
+      std::cout << "[OK]" << std::endl << std::endl;
+    else
+      std::cout << "[FAILED]" << std::endl << std::endl;
+      
+  }
+
+  //
+  //  That's it. 
+  //
+  std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+  return EXIT_SUCCESS;
+}
+
diff --git a/examples/tutorial/custom-context.cpp b/examples/tutorial/custom-context.cpp
index 4473d78..602b567 100644
--- a/examples/tutorial/custom-context.cpp
+++ b/examples/tutorial/custom-context.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // include necessary system headers
diff --git a/examples/tutorial/custom-kernels.cpp b/examples/tutorial/custom-kernels.cpp
index d359180..135db1b 100644
--- a/examples/tutorial/custom-kernels.cpp
+++ b/examples/tutorial/custom-kernels.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // include necessary system headers
@@ -38,15 +40,15 @@
 
 
 //
-// A custom compute kernel which computes an elementwise product of two vectors
+// Custom compute kernels which compute an elementwise product/division of two vectors
 // Input: v1 ... vector
 //        v2 ... vector
 // Output: result ... vector
 //
 // Algorithm: set result[i] <- v1[i] * v2[i]
-//            (in MATLAB notation this is something like 'result = v1 .* v2');
+//            or  result[i] <- v1[i] / v2[i]
+//            (in MATLAB notation this is something like 'result = v1 .* v2' and 'result = v1 ./ v2');
 //
-
 const char * my_compute_program = 
 "__kernel void elementwise_prod(\n"
 "          __global const float * vec1,\n"
@@ -56,9 +58,17 @@ const char * my_compute_program =
 "{ \n"
 "  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
 "    result[i] = vec1[i] * vec2[i];\n"
+"};\n\n"
+"__kernel void elementwise_div(\n"
+"          __global const float * vec1,\n"
+"          __global const float * vec2, \n"
+"          __global float * result,\n"
+"          unsigned int size) \n"
+"{ \n"
+"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
+"    result[i] = vec1[i] / vec2[i];\n"
 "};\n";
 
-
 int main()
 {
   typedef float       ScalarType;
@@ -67,9 +77,11 @@ int main()
   // Initialize OpenCL vectors:
   //
   unsigned int vector_size = 10;
+  viennacl::scalar<ScalarType>  s = 1.0; //dummy
   viennacl::vector<ScalarType>  vec1(vector_size);
   viennacl::vector<ScalarType>  vec2(vector_size);
-  viennacl::vector<ScalarType>  result(vector_size);
+  viennacl::vector<ScalarType>  result_mul(vector_size);
+  viennacl::vector<ScalarType>  result_div(vector_size);
 
   //
   // fill the operands vec1 and vec2:
@@ -82,36 +94,36 @@ int main()
 
   //
   // Set up the OpenCL program given in my_compute_kernel:
-  // A program is one compilation unit an can hold many different compute kernels.
+  // A program is one compilation unit and can hold many different compute kernels.
   //
   viennacl::ocl::program & my_prog = viennacl::ocl::current_context().add_program(my_compute_program, "my_compute_program");
+  my_prog.add_kernel("elementwise_prod");  //register elementwise product kernel
+  my_prog.add_kernel("elementwise_div");   //register elementwise division kernel
   
   //
-  // Get the kernel 'elementwise_prod' from the program 'my_program'
+  // Now we can get the kernels from the program 'my_program'.
+  // (Note that first all kernels need to be registered via add_kernel() before get_kernel() can be called,
+  // otherwise existing references might be invalidated)
   //
-  viennacl::ocl::kernel & my_kernel = my_prog.add_kernel("elementwise_prod");
+  viennacl::ocl::kernel & my_kernel_mul = my_prog.get_kernel("elementwise_prod");
+  viennacl::ocl::kernel & my_kernel_div = my_prog.get_kernel("elementwise_div");
   
   //
   // Launch the kernel with 'vector_size' threads in one work group
+  // Note that size_t might differ between host and device. Thus, a cast to cl_uint is necessary for the forth argument.
   //
-  viennacl::ocl::enqueue(my_kernel(vec1, vec2, result, static_cast<cl_uint>(vec1.size())));  //Note that size_t might differ between host and device. Thus, a cast to cl_uint is necessary here.
-  
-  //
-  // Hint: The three codelines above can be written in a single statement:
-  //
-  //viennacl::ocl::enqueue(viennacl::ocl::get_context().add_program(my_compute_program,
-  //                                                               "my_compute_program").add_kernel("elementwise_prod")(vec1,
-  //                                                                                                                    vec2,
-  //                                                                                                                    result,
-  //                                                                                                                   vec1.size()));
+  viennacl::ocl::enqueue(my_kernel_mul(vec1, vec2, result_mul, static_cast<cl_uint>(vec1.size())));  
+  viennacl::ocl::enqueue(my_kernel_div(vec1, vec2, result_div, static_cast<cl_uint>(vec1.size())));
   
   //
   // Print the result:
   //
   std::cout << "        vec1: " << vec1 << std::endl;
   std::cout << "        vec2: " << vec2 << std::endl;
-  std::cout << "vec1 .* vec2: " << result << std::endl;
-  std::cout << "norm_2(vec1 .* vec2): " << viennacl::linalg::norm_2(result) << std::endl;
+  std::cout << "vec1 .* vec2: " << result_mul << std::endl;
+  std::cout << "vec1 /* vec2: " << result_div << std::endl;
+  std::cout << "norm_2(vec1 .* vec2): " << viennacl::linalg::norm_2(result_mul) << std::endl;
+  std::cout << "norm_2(vec1 /* vec2): " << viennacl::linalg::norm_2(result_div) << std::endl;
   
   //
   //  That's it.
diff --git a/examples/tutorial/eigen-with-viennacl.cpp b/examples/tutorial/eigen-with-viennacl.cpp
index 839b7da..5c1aa3b 100644
--- a/examples/tutorial/eigen-with-viennacl.cpp
+++ b/examples/tutorial/eigen-with-viennacl.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // include necessary system headers
diff --git a/examples/tutorial/fft.cpp b/examples/tutorial/fft.cpp
new file mode 100644
index 0000000..f0a6002
--- /dev/null
+++ b/examples/tutorial/fft.cpp
@@ -0,0 +1,81 @@
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+// include necessary system headers
+#include <iostream>
+#include <vector>
+#include <cmath>
+#include <complex>
+#include <fstream>
+
+// include basic scalar and vector types of ViennaCL
+#include "viennacl/vector.hpp"
+#include "viennacl/matrix.hpp"
+
+// include FFT routines
+#include "viennacl/fft.hpp"
+
+/*
+*   Tutorial: FFT functionality (experimental in ViennaCL 1.2.x)
+*/
+
+int main() 
+{
+  // Change this type definition to double if your gpu supports that
+  typedef float       ScalarType;
+  
+  // Create vectors of eight complex values (represented as pairs of floating point values: [real_0, imag_0, real_1, imag_1, etc.])
+  viennacl::vector<ScalarType> input_vec(16);  
+  viennacl::vector<ScalarType> output_vec(16); 
+  
+  // Fill with values (use viennacl::copy() for larger data!)
+  for (std::size_t i=0; i<input_vec.size(); ++i)
+  {
+    if (i%2 == 0)
+      input_vec(i) = ScalarType(i/2);  // even indices represent real part
+    else
+      input_vec(i) = 0;                // odd indices represent imaginary part
+  }
+  
+  // Print the vector
+  std::cout << "input_vec: " << input_vec << std::endl;
+  
+  // Compute FFT and store result in 'output_vec'
+  std::cout << "Computing FFT..." << std::endl;
+  viennacl::fft(input_vec, output_vec);
+  
+  // Compute FFT and store result directly in 'input_vec'
+  viennacl::inplace_fft(input_vec);
+  
+  // Print result
+  std::cout << "input_vec: " << input_vec << std::endl;
+  std::cout << "output_vec: " << output_vec << std::endl;
+
+  std::cout << "Computing inverse FFT..." << std::endl;
+  viennacl::ifft(input_vec, output_vec); // either store result into output_vec
+  viennacl::inplace_ifft(input_vec);     // or compute in-place  
+  
+  std::cout << "input_vec: " << input_vec << std::endl;
+  std::cout << "output_vec: " << output_vec << std::endl;
+  
+  //
+  //  That's it.
+  //
+  std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+
+  return EXIT_SUCCESS;
+}
diff --git a/examples/tutorial/iterative-eigen.cpp b/examples/tutorial/iterative-eigen.cpp
index 1a5f09d..85ccf66 100644
--- a/examples/tutorial/iterative-eigen.cpp
+++ b/examples/tutorial/iterative-eigen.cpp
@@ -1,23 +1,28 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // include necessary system headers
 //
 #include <iostream>
 
-#define NDEBUG
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
+
 
 //
 // Include Eigen headers
diff --git a/examples/tutorial/iterative-mtl4.cpp b/examples/tutorial/iterative-mtl4.cpp
index 64c651a..0b13760 100644
--- a/examples/tutorial/iterative-mtl4.cpp
+++ b/examples/tutorial/iterative-mtl4.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // include necessary system headers
@@ -42,42 +44,72 @@
 #include "Random.hpp"
 #include "vector-io.hpp"
 
-int main(int, char *[])
+//
+// The following function is just a hel
+//
+/*template <typename MTLMatrixType>
+void read_system(MTLMatrixType & matrix)
 {
+  typedef typename MTLMatrixType::value_type    value_type;
   
-  mtl::compressed2D<double> mtl4_matrix;
-  mtl4_matrix.change_dim(65025, 65025);
-  set_to_zero(mtl4_matrix);  
+  std::vector<std::map<unsigned int, value_type> >  stl_matrix(mtl::num_rows(matrix), mtl::num_cols(matrix));
   
-  mtl::dense_vector<double> mtl4_rhs(65025, 0.0);
-  mtl::dense_vector<double> mtl4_result(65025, 0.0);
-  mtl::dense_vector<double> mtl4_ref_result(65025, 0.0);
-  mtl::dense_vector<double> mtl4_residual(65025, 0.0);
+  viennacl::tools::sparse_matrix_adapter<value_type> adapted_stl_matrix(stl_matrix);
   
-  //
-  // Read system from file
-  //
   #ifdef _MSC_VER
-  if (!viennacl::io::read_matrix_market_file(mtl4_matrix, "../../examples/testdata/mat65k.mtx"))
+  if (!viennacl::io::read_matrix_market_file(adapted_stl_matrix, "../../examples/testdata/mat65k.mtx"))
   #else
-  if (!viennacl::io::read_matrix_market_file(mtl4_matrix, "../examples/testdata/mat65k.mtx"))
+  if (!viennacl::io::read_matrix_market_file(adapted_stl_matrix, "../examples/testdata/mat65k.mtx"))
   #endif
   {
     std::cout << "Error reading Matrix file" << std::endl;
     return 0;
   }
-  std::cout << "done reading matrix" << std::endl;
 
-  #ifdef _MSC_VER
-  if (!readVectorFromFile("../../examples/testdata/rhs65025.txt", mtl4_rhs))
-  #else
-  if (!readVectorFromFile("../examples/testdata/rhs65025.txt", mtl4_rhs))
-  #endif
+  // Now shift to MTL matrix:
+  
+  mtl::matrix::inserter< MTLMatrixType >  ins(matrix);
+  typedef typename mtl::Collection<MTLMatrixType>::value_type  ValueType;
+  
+  typedef viennacl::tools::sparse_matrix_adapter<value_type>::iterator1  Iterator1;
+  for (Iterator1 it = adapted_stl_matrix.begin1();
+                 it != adapted_stl_matrix.end1();
+               ++it)
   {
-    std::cout << "Error reading RHS file" << std::endl;
-    return 0;
+    for (typename Iterator1::iterator it2 = it.begin();
+                                      it2 != it.end();
+                                    ++it2)
+    {
+      ins(it2.index1(), it2.index2() << ValueType(*it);
+    }
   }
+} */
+
+
+
+int main(int, char *[])
+{
+  typedef double    ScalarType;
+  
+  mtl::compressed2D<ScalarType> mtl4_matrix;
+  mtl4_matrix.change_dim(65025, 65025);
+  set_to_zero(mtl4_matrix);  
   
+  mtl::dense_vector<ScalarType> mtl4_rhs(65025, 0.0);
+  mtl::dense_vector<ScalarType> mtl4_result(65025, 0.0);
+  mtl::dense_vector<ScalarType> mtl4_ref_result(65025, 0.0);
+  mtl::dense_vector<ScalarType> mtl4_residual(65025, 0.0);
+  
+  //
+  // Read system from file
+  //
+
+  #ifdef _MSC_VER
+  mtl::io::matrix_market_istream("../../examples/testdata/mat65k.mtx") >> mtl4_matrix;
+  #else
+  mtl::io::matrix_market_istream("../examples/testdata/mat65k.mtx") >> mtl4_matrix;
+  #endif
+    
   #ifdef _MSC_VER
   if (!readVectorFromFile("../../examples/testdata/result65025.txt", mtl4_ref_result))
   #else
diff --git a/examples/tutorial/iterative-ublas.cpp b/examples/tutorial/iterative-ublas.cpp
index 94be436..c4f3157 100644
--- a/examples/tutorial/iterative-ublas.cpp
+++ b/examples/tutorial/iterative-ublas.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // include necessary system headers
@@ -19,7 +21,10 @@
 
 //
 // Necessary to obtain a suitable performance in ublas
-#define NDEBUG
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
+
 
 //
 // ublas includes
diff --git a/examples/tutorial/iterative.cpp b/examples/tutorial/iterative.cpp
index 67af2da..4a7ee58 100644
--- a/examples/tutorial/iterative.cpp
+++ b/examples/tutorial/iterative.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // include necessary system headers
@@ -19,7 +21,9 @@
 
 //
 // Necessary to obtain a suitable performance in ublas
-#define NDEBUG
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
 
 //
 // ublas includes
diff --git a/examples/tutorial/matrix-range.cpp b/examples/tutorial/matrix-range.cpp
new file mode 100644
index 0000000..bdc91f4
--- /dev/null
+++ b/examples/tutorial/matrix-range.cpp
@@ -0,0 +1,156 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+// activate ublas support in ViennaCL
+#define VIENNACL_HAVE_UBLAS
+
+//
+// include necessary system headers
+//
+#include <iostream>
+#include <string>
+
+//
+// ViennaCL includes
+//
+#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix_proxy.hpp"
+
+//
+// Boost includes
+//
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/io.hpp"
+
+/*
+*   Tutorial: Use of matrix ranges
+*/
+
+int main (int argc, const char * argv[])
+{
+  typedef float                                           ScalarType;    //feel free to change this to 'double' if supported by your hardware
+  typedef boost::numeric::ublas::matrix<ScalarType>       MatrixType;
+  
+  typedef viennacl::matrix<ScalarType, viennacl::row_major>    VCLMatrixType;
+  
+  std::size_t dim_large = 5;
+  std::size_t dim_small = 3;
+  
+  //
+  // Setup ublas objects and fill with data:
+  //
+  MatrixType ublas_A(dim_large, dim_large);
+  MatrixType ublas_B(dim_small, dim_small);
+  MatrixType ublas_C(dim_large, dim_small);
+  MatrixType ublas_D(dim_small, dim_large);
+  
+  
+  for (std::size_t i=0; i<ublas_A.size1(); ++i)
+    for (std::size_t j=0; j<ublas_A.size2(); ++j)
+      ublas_A(i,j) = (i+1) + (j+1)*(i+1);
+
+  for (std::size_t i=0; i<ublas_B.size1(); ++i)
+    for (std::size_t j=0; j<ublas_B.size2(); ++j)
+      ublas_B(i,j) = (i+1) + (j+1)*(i+1);
+
+  for (std::size_t i=0; i<ublas_C.size1(); ++i)
+    for (std::size_t j=0; j<ublas_C.size2(); ++j)
+      ublas_C(i,j) = (j+2) + (j+1)*(i+1);
+
+  for (std::size_t i=0; i<ublas_D.size1(); ++i)
+    for (std::size_t j=0; j<ublas_D.size2(); ++j)
+      ublas_D(i,j) = (j+2) + (j+1)*(i+1);
+  
+  //
+  // Extract submatrices using the ranges in ublas
+  //
+  boost::numeric::ublas::range ublas_r1(0, dim_small);                      //the first 'dim_small' entries
+  boost::numeric::ublas::range ublas_r2(dim_large - dim_small, dim_large);  //the last 'dim_small' entries
+  boost::numeric::ublas::matrix_range<MatrixType> ublas_A_sub1(ublas_A, ublas_r1, ublas_r1); //upper left part of A
+  boost::numeric::ublas::matrix_range<MatrixType> ublas_A_sub2(ublas_A, ublas_r2, ublas_r2); //lower right part of A
+
+  boost::numeric::ublas::matrix_range<MatrixType> ublas_C_sub(ublas_C, ublas_r1, ublas_r1); //upper left part of C
+  boost::numeric::ublas::matrix_range<MatrixType> ublas_D_sub(ublas_D, ublas_r1, ublas_r1); //upper left part of D
+
+  //
+  // Setup ViennaCL objects
+  //
+  VCLMatrixType vcl_A(dim_large, dim_large);
+  VCLMatrixType vcl_B(dim_small, dim_small);
+  VCLMatrixType vcl_C(dim_large, dim_small);
+  VCLMatrixType vcl_D(dim_small, dim_large);
+  
+  viennacl::copy(ublas_A, vcl_A);
+  viennacl::copy(ublas_B, vcl_B);
+  viennacl::copy(ublas_C, vcl_C);
+  viennacl::copy(ublas_D, vcl_D);
+  
+  //
+  // Extract submatrices using the ranges in ViennaCL
+  //
+  viennacl::range vcl_r1(0, dim_small);   //the first 'dim_small' entries
+  viennacl::range vcl_r2(dim_large - dim_small, dim_large); //the last 'dim_small' entries
+  viennacl::matrix_range<VCLMatrixType>   vcl_A_sub1(vcl_A, vcl_r1, vcl_r1); //upper left part of A
+  viennacl::matrix_range<VCLMatrixType>   vcl_A_sub2(vcl_A, vcl_r2, vcl_r2); //lower right part of A
+  
+  viennacl::matrix_range<VCLMatrixType>   vcl_C_sub(vcl_C, vcl_r1, vcl_r1); //upper left part of C
+  viennacl::matrix_range<VCLMatrixType>   vcl_D_sub(vcl_D, vcl_r1, vcl_r1); //upper left part of D
+
+  //
+  // Copy from ublas to submatrices and back:
+  //
+  
+  ublas_A_sub1 = ublas_B;
+  viennacl::copy(ublas_B, vcl_A_sub1);
+  viennacl::copy(vcl_A_sub1, ublas_B);
+  
+  //
+  // Addition:
+  //
+  
+  // range to range:
+  ublas_A_sub2 += ublas_A_sub2;
+  vcl_A_sub2 += vcl_A_sub2;
+
+  // range to matrix:
+  ublas_B += ublas_A_sub2;
+  vcl_B += vcl_A_sub2;
+
+  
+  //
+  // use matrix range with matrix-matrix product:
+  //
+  ublas_A_sub1 += prod(ublas_C_sub, ublas_D_sub);
+  vcl_A_sub1 += viennacl::linalg::prod(vcl_C_sub, vcl_D_sub);
+
+  //
+  // Print result matrices:
+  //
+  std::cout << "Result ublas:    " << ublas_A << std::endl;
+  std::cout << "Result ViennaCL: " << vcl_A << std::endl;
+  
+  //
+  //  That's it.
+  //
+  std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+
+  return EXIT_SUCCESS;
+}
+
diff --git a/examples/tutorial/mtl4-with-viennacl.cpp b/examples/tutorial/mtl4-with-viennacl.cpp
index 778d48f..e32c3dd 100644
--- a/examples/tutorial/mtl4-with-viennacl.cpp
+++ b/examples/tutorial/mtl4-with-viennacl.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // include necessary system headers
diff --git a/examples/tutorial/qr.cpp b/examples/tutorial/qr.cpp
new file mode 100644
index 0000000..dd9d118
--- /dev/null
+++ b/examples/tutorial/qr.cpp
@@ -0,0 +1,99 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+// activate ublas support in ViennaCL
+#define VIENNACL_HAVE_UBLAS 
+
+//
+// include necessary system headers
+//
+#include <iostream>
+
+//
+// ViennaCL includes: We only need the qr-header
+//
+#include "viennacl/linalg/qr.hpp"
+
+//
+// Boost includes
+//
+#include <boost/numeric/ublas/vector.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/io.hpp>
+
+/*
+*   Tutorial: QR factorization of host-based (ublas-)matrices
+*/
+
+int main (int argc, const char * argv[])
+{
+  typedef float               ScalarType;     //feel free to change this to 'double' if supported by your hardware
+  typedef boost::numeric::ublas::matrix<ScalarType>        MatrixType;
+  typedef boost::numeric::ublas::vector<ScalarType>        VectorType;
+
+  size_t rows = 7;
+  size_t cols = 6;
+  
+  //
+  // Create matrices with some data
+  //
+  MatrixType A(rows, cols);
+  MatrixType Q(rows, rows);
+  MatrixType R(rows, cols);
+  
+  for (size_t i=0; i<rows; ++i)
+  {
+    for (size_t j=0; j<cols; ++j)
+    {
+      A(i,j) = 1.0 + (i + 1)*(j+1);
+      R(i,j) = 0.0;
+    }
+    
+    for (size_t j=0; j<rows; ++j)
+      Q(i,j) = 0.0;
+  }
+  
+  // Print matrix before factorization
+  std::cout << "A: " << A << std::endl << std::endl;
+  
+  //
+  // Compute QR factorization of A. A is overwritten with Householder vectors. Coefficients are returned and a block size of 3 is used.
+  // Note that at the moment the number of columns of A must be divisible by the block size
+  //
+  std::vector<ScalarType> betas = viennacl::linalg::inplace_qr(A, 3);
+  
+  std::cout << "Inplace QR-factored A: " << A << std::endl << std::endl;
+  
+  //
+  // Recover full matrix orthogonal matrix Q and upper right matrix R
+  //
+  viennacl::linalg::recoverQ(A, betas, Q, R); 
+
+  // Print for verification purposes:
+  std::cout << "R after recovery: " << R << std::endl << std::endl;
+  std::cout << "Q after recovery: " << Q << std::endl << std::endl;
+  std::cout << "Q*Q^T: " << prod(Q, trans(Q)) << std::endl << std::endl;  //This should be identity up to round-off errors
+  
+  std::cout << "Q * R: " << prod(Q, R) << std::endl << std::endl; // this should be the initial matrix A up to round-off errors
+    
+  //
+  //  That's it.
+  //
+  std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+
+  return EXIT_SUCCESS;
+}
+
diff --git a/examples/tutorial/spai.cpp b/examples/tutorial/spai.cpp
new file mode 100644
index 0000000..b2b339d
--- /dev/null
+++ b/examples/tutorial/spai.cpp
@@ -0,0 +1,166 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+//
+#define VIENNACL_HAVE_UBLAS
+
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
+//#define VIENNACL_BUILD_INFO
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cmath>
+#include <algorithm>
+#include <stdio.h>
+#include <sys/time.h>
+#include <time.h>
+//#include <omp.h>
+#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/bicgstab.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/linalg/norm_2.hpp"
+#include "viennacl/io/matrix_market.hpp"
+#include "viennacl/linalg/spai.hpp"
+//#include "qr.hpp"
+//#include "spai-static.hpp"
+//#include "viennacl/linalg/fspai.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/foreach.hpp"
+#include "boost/tokenizer.hpp"
+//#include "viennacl/linalg/detail/spai/small_matrix.hpp"
+
+#include "vector-io.hpp"
+
+template <typename MatrixType, typename VectorType, typename SolverTag, typename Preconditioner>
+void run_solver(MatrixType const & A, VectorType const & b, SolverTag const & solver_tag, Preconditioner const & precond)
+{
+    VectorType result = viennacl::linalg::solve(A, b, solver_tag, precond);
+    std::cout << " * Solver iterations: " << solver_tag.iters() << std::endl;
+    VectorType residual = viennacl::linalg::prod(A, result) - b;
+    std::cout << " * Rel. Residual: " << viennacl::linalg::norm_2(residual) / viennacl::linalg::norm_2(b) << std::endl;
+}
+
+
+int main (int argc, const char * argv[])
+{
+    typedef float               ScalarType;
+    typedef boost::numeric::ublas::compressed_matrix<ScalarType>        MatrixType;
+    typedef boost::numeric::ublas::vector<ScalarType>                   VectorType;
+    typedef viennacl::compressed_matrix<ScalarType>                     GPUMatrixType;
+    typedef viennacl::vector<ScalarType>                                GPUVectorType;
+  
+    MatrixType M;
+
+    //
+    // Read system matrix from file
+    //
+    #ifdef _MSC_VER
+    if (!viennacl::io::read_matrix_market_file(ublas_matrix, "../../examples/testdata/mat65k.mtx"))
+    #else
+    if (!viennacl::io::read_matrix_market_file(M, "../examples/testdata/mat65k.mtx"))
+    #endif
+    {
+      std::cerr<<"ERROR: Could not read matrix file " << std::endl;
+      exit(EXIT_FAILURE);
+    }
+    
+    std::cout << "Size of matrix: " << M.size1() << std::endl;
+    std::cout << "Avg. Entries per row: " << M.nnz() / static_cast<double>(M.size1()) << std::endl;
+    
+    //
+    // Use uniform load vector:
+    //
+    VectorType rhs(M.size2());
+    for (size_t i=0; i<rhs.size(); ++i)
+      rhs(i) = 1;
+
+    GPUMatrixType  gpu_M(M.size1(), M.size2());
+    GPUVectorType  gpu_rhs(M.size1());
+    viennacl::copy(M, gpu_M);
+    viennacl::copy(rhs, gpu_rhs);
+    
+    ///////////////////////////////// Tests to follow /////////////////////////////
+
+    viennacl::linalg::bicgstab_tag solver_tag(1e-10, 50); //for simplicity and reasonably short execution times we use only 50 iterations here
+
+    //
+    // Reference: No preconditioner:
+    //
+    std::cout << "--- Reference 1: Pure BiCGStab on CPU ---" << std::endl;
+    VectorType result = viennacl::linalg::solve(M, rhs, solver_tag);
+    std::cout << " * Solver iterations: " << solver_tag.iters() << std::endl;
+    VectorType residual = viennacl::linalg::prod(M, result) - rhs;
+    std::cout << " * Rel. Residual: " << viennacl::linalg::norm_2(residual) / viennacl::linalg::norm_2(rhs) << std::endl;
+
+    std::cout << "--- Reference 2: Pure BiCGStab on GPU ---" << std::endl;
+    GPUVectorType gpu_result = viennacl::linalg::solve(gpu_M, gpu_rhs, solver_tag);
+    std::cout << " * Solver iterations: " << solver_tag.iters() << std::endl;
+    GPUVectorType gpu_residual = viennacl::linalg::prod(gpu_M, gpu_result) - gpu_rhs;
+    std::cout << " * Rel. Residual: " << viennacl::linalg::norm_2(gpu_residual) / viennacl::linalg::norm_2(gpu_rhs) << std::endl;
+    
+    
+    //
+    // Reference: ILUT preconditioner:
+    //
+    std::cout << "--- Reference 2: BiCGStab with ILUT on CPU ---" << std::endl;
+    std::cout << " * Preconditioner setup..." << std::endl;
+    viennacl::linalg::ilut_precond<MatrixType> ilut(M, viennacl::linalg::ilut_tag());
+    std::cout << " * Iterative solver run..." << std::endl;
+    run_solver(M, rhs, solver_tag, ilut);
+    
+    
+    //
+    // Test 1: SPAI with CPU:
+    //
+    std::cout << "--- Test 1: CPU-based SPAI ---" << std::endl;  
+    std::cout << " * Preconditioner setup..." << std::endl;
+    viennacl::linalg::spai_precond<MatrixType> spai_cpu(M, viennacl::linalg::spai_tag(1e-3, 3, 5e-2));
+    std::cout << " * Iterative solver run..." << std::endl;
+    run_solver(M, rhs, solver_tag, spai_cpu);
+    
+    //
+    // Test 2: FSPAI with CPU:
+    //      
+    std::cout << "--- Test 2: CPU-based FSPAI ---" << std::endl;  
+    std::cout << " * Preconditioner setup..." << std::endl;
+    viennacl::linalg::fspai_precond<MatrixType> fspai_cpu(M, viennacl::linalg::fspai_tag());
+    std::cout << " * Iterative solver run..." << std::endl;
+    run_solver(M, rhs, solver_tag, fspai_cpu);
+    
+    //
+    // Test 3: SPAI with GPU:
+    //      
+    std::cout << "--- Test 3: GPU-based SPAI ---" << std::endl;  
+    std::cout << " * Preconditioner setup..." << std::endl;
+    viennacl::linalg::spai_precond<GPUMatrixType> spai_gpu(gpu_M, viennacl::linalg::spai_tag(1e-3, 3, 5e-2));
+    std::cout << " * Iterative solver run..." << std::endl;
+    run_solver(gpu_M, gpu_rhs, solver_tag, spai_gpu);
+    
+    return EXIT_SUCCESS;
+}
+
diff --git a/examples/tutorial/structured-matrices.cpp b/examples/tutorial/structured-matrices.cpp
new file mode 100644
index 0000000..112a7c4
--- /dev/null
+++ b/examples/tutorial/structured-matrices.cpp
@@ -0,0 +1,120 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+// include necessary system headers
+#include <iostream>
+
+//
+// ViennaCL includes
+//
+#include "viennacl/toeplitz_matrix.hpp"
+#include "viennacl/circulant_matrix.hpp"
+#include "viennacl/vandermonde_matrix.hpp"
+#include "viennacl/hankel_matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+
+//
+// Boost includes
+//
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/io.hpp"
+
+/*
+*   Tutorial: Structured matrices
+*/
+
+int main() 
+{
+  typedef float      ScalarType;
+    
+  std::size_t size = 4;
+  
+  //
+  // Set up ublas objects
+  //
+  boost::numeric::ublas::vector<ScalarType> ublas_vec(size);
+  boost::numeric::ublas::matrix<ScalarType> ublas_circulant(size, size);
+  boost::numeric::ublas::matrix<ScalarType> ublas_hankel(size, size);
+  boost::numeric::ublas::matrix<ScalarType> ublas_toeplitz(size, size);
+  boost::numeric::ublas::matrix<ScalarType> ublas_vandermonde(size, size);
+
+  for(std::size_t i = 0; i < size; i++) 
+    for(std::size_t j = 0; j < size; j++) 
+    {
+      ublas_circulant(i,j)   = static_cast<ScalarType>((i - j + size) % size);
+      ublas_hankel(i,j)      = static_cast<ScalarType>((i + j) % (2 * size));
+      ublas_toeplitz(i,j)    = static_cast<ScalarType>(i) - static_cast<ScalarType>(j);
+      ublas_vandermonde(i,j) = pow(ScalarType(1.0 + i/1000.0), ScalarType(j));
+    }
+
+  //
+  // Set up ViennaCL objects
+  //
+  viennacl::vector<ScalarType>             vcl_vec(size);
+  viennacl::vector<ScalarType>             vcl_result(size);
+  viennacl::circulant_matrix<ScalarType>   vcl_circulant(size, size);
+  viennacl::hankel_matrix<ScalarType>      vcl_hankel(size, size);
+  viennacl::toeplitz_matrix<ScalarType>    vcl_toeplitz(size, size);
+  viennacl::vandermonde_matrix<ScalarType> vcl_vandermonde(size, size);
+
+  // copy matrices:
+  viennacl::copy(ublas_circulant, vcl_circulant);
+  viennacl::copy(ublas_hankel, vcl_hankel);
+  viennacl::copy(ublas_toeplitz, vcl_toeplitz);
+  viennacl::copy(ublas_vandermonde, vcl_vandermonde);
+  
+  // fill vectors:
+  for(std::size_t i = 0; i < size; i++)
+  {
+    ublas_vec[i] = ScalarType(i);
+    vcl_vec[i] = ScalarType(i);
+  }
+  
+  //
+  // Add matrices:
+  //
+  std::cout << "Circulant matrix before addition: " << vcl_circulant << std::endl << std::endl;
+  vcl_circulant += vcl_circulant;
+  std::cout << "Circulant matrix after addition: " << vcl_circulant << std::endl << std::endl;
+  
+  //
+  // Manipulate single entry
+  //
+  std::cout << "Hankel matrix before manipulation: " << vcl_hankel << std::endl << std::endl;
+  vcl_hankel(1, 2) = ScalarType(3.14);
+  std::cout << "Hankel matrix after manipulation: " << vcl_hankel << std::endl << std::endl;
+  
+  std::cout << "Vandermonde matrix before manipulation: " << vcl_vandermonde << std::endl << std::endl;
+  vcl_vandermonde(1) = ScalarType(1.1); //NOTE: Write access only via row index
+  std::cout << "Vandermonde matrix after manipulation: " << vcl_vandermonde << std::endl << std::endl;
+  
+  //
+  // Compute matrix-vector product (FFT-accelerated)
+  //
+  std::cout << "Toeplitz matrix: " << vcl_toeplitz << std::endl;
+  std::cout << "Vector: " << vcl_vec << std::endl << std::endl;
+  vcl_result = viennacl::linalg::prod(vcl_toeplitz, vcl_vec);
+  std::cout << "Result of matrix-vector product: " << vcl_result << std::endl << std::endl;
+  
+  //
+  //  That's it.
+  //
+  std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+
+  return EXIT_SUCCESS;
+}
diff --git a/examples/tutorial/vector-io.hpp b/examples/tutorial/vector-io.hpp
index 2cd168b..0b74393 100644
--- a/examples/tutorial/vector-io.hpp
+++ b/examples/tutorial/vector-io.hpp
@@ -1,39 +1,29 @@
-#ifndef _VECTOR_IO_HPP_
-#define _VECTOR_IO_HPP_
+#ifndef VECTOR_IO_HPP_
+#define VECTOR_IO_HPP_
 
-#include <string>
-#include <iostream>
-#include <fstream>
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#include <viennacl/tools/tools.hpp>
-/*
-template<class TYPE>
-bool readVectorFromBinaryFile(const std::string & filename, boost::numeric::ublas::vector<TYPE> & vec)
-{
-	std::ifstream file(filename.c_str(), std::ios_base::binary);
-	if (!file) return false;
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
 
-	unsigned int size;
-	file.read((char*)&size, sizeof(unsigned int));
-	vec.resize(size);
-	file.read((char*)&vec[0], sizeof(TYPE)*size);
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
 
-	return true;
-}
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
-template<class TYPE>
-bool saveVectorToBinaryFile(const std::string & filename, const boost::numeric::ublas::vector<TYPE> & vec)
-{
-	std::ofstream file(filename.c_str(), std::ios_base::binary);
-	if (!file) return false;
-
-	unsigned int size = vec.size();
-	file.write((char*)&size, sizeof(unsigned int));
-	file.write((char*)&vec[0], sizeof(TYPE)*size);
+#include <string>
+#include <iostream>
+#include <fstream>
 
-	return true;
-}
-*/
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/result_of.hpp"
+#include "viennacl/traits/size.hpp"
 
 
 template <typename MatrixType, typename ScalarType>
@@ -113,7 +103,7 @@ template <typename VectorType>
 bool readVectorFromFile(const std::string & filename,
                         VectorType & vec)
 {
-  typedef typename viennacl::tools::result_of::value_type<VectorType>::type    ScalarType;
+  typedef typename viennacl::result_of::value_type<VectorType>::type    ScalarType;
   
   std::ifstream file(filename.c_str());
 
@@ -138,7 +128,7 @@ bool readVectorFromFile(const std::string & filename,
 template <class MatrixType>
 bool readMatrixFromFile(const std::string & filename, MatrixType & matrix)
 {
-  typedef typename viennacl::tools::result_of::value_type<MatrixType>::type    ScalarType;
+  typedef typename viennacl::result_of::value_type<MatrixType>::type    ScalarType;
   
   std::cout << "Reading matrix..." << std::endl;
   
@@ -155,7 +145,7 @@ bool readMatrixFromFile(const std::string & filename, MatrixType & matrix)
   file >> num_rows >> num_columns;
   if (num_rows != num_columns) return false;
   
-  viennacl::tools::traits::resize(matrix, num_rows, num_rows);
+  viennacl::traits::resize(matrix, num_rows, num_rows);
 
   my_inserter<MatrixType> ins(matrix);
   for (unsigned int row = 0; row < num_rows; ++row)
diff --git a/examples/tutorial/vector-range.cpp b/examples/tutorial/vector-range.cpp
new file mode 100644
index 0000000..8db6579
--- /dev/null
+++ b/examples/tutorial/vector-range.cpp
@@ -0,0 +1,134 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+// activate ublas support in ViennaCL
+#define VIENNACL_HAVE_UBLAS
+
+//
+// include necessary system headers
+//
+#include <iostream>
+#include <string>
+
+//
+// ViennaCL includes
+//
+#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/vector_proxy.hpp"
+
+//
+// Boost includes
+//
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/io.hpp"
+
+/*
+*   Tutorial: Use of matrix ranges
+*/
+
+int main (int argc, const char * argv[])
+{
+  typedef float                                           ScalarType;    //feel free to change this to 'double' if supported by your hardware
+  typedef boost::numeric::ublas::vector<ScalarType>       VectorType;
+  
+  typedef viennacl::vector<ScalarType>                    VCLVectorType;
+  
+  std::size_t dim_large = 7;
+  std::size_t dim_small = 3;
+  
+  //
+  // Setup ublas objects and fill with data:
+  //
+  VectorType ublas_v1(dim_large);
+  VectorType ublas_v2(dim_small);
+  
+  for (std::size_t i=0; i<ublas_v1.size(); ++i)
+    ublas_v1(i) = i+1;
+
+  for (std::size_t i=0; i<ublas_v2.size(); ++i)
+    ublas_v2(i) = dim_large + i;
+    
+  
+  //
+  // Extract submatrices using the ranges in ublas
+  //
+  boost::numeric::ublas::range ublas_r1(0, dim_small); //the first 'dim_small' entries
+  boost::numeric::ublas::range ublas_r2(dim_small - 1, 2*dim_small - 1); // 'dim_small' entries somewhere from the middle
+  boost::numeric::ublas::range ublas_r3(dim_large - dim_small, dim_large); // the last 'dim_small' entries
+  boost::numeric::ublas::vector_range<VectorType> ublas_v1_sub1(ublas_v1, ublas_r1); // front part of vector v_1
+  boost::numeric::ublas::vector_range<VectorType> ublas_v1_sub2(ublas_v1, ublas_r2); // center part of vector v_1
+  boost::numeric::ublas::vector_range<VectorType> ublas_v1_sub3(ublas_v1, ublas_r3); // tail of vector v_1
+  
+
+  //
+  // Setup ViennaCL objects
+  //
+  VCLVectorType vcl_v1(dim_large);
+  VCLVectorType vcl_v2(dim_small);
+  
+  viennacl::copy(ublas_v1, vcl_v1);
+  viennacl::copy(ublas_v2, vcl_v2);
+    
+  
+  //
+  // Extract submatrices using the ranges in ViennaCL
+  //
+  viennacl::range vcl_r1(0, dim_small); //the first 'dim_small' entries
+  viennacl::range vcl_r2(dim_small - 1, 2*dim_small - 1);  // 'dim_small' entries somewhere from the middle
+  viennacl::range vcl_r3(dim_large - dim_small, dim_large);  // the last 'dim_small' entries
+  viennacl::vector_range<VCLVectorType>   vcl_v1_sub1(vcl_v1, vcl_r1); // front part of vector v_1
+  viennacl::vector_range<VCLVectorType>   vcl_v1_sub2(vcl_v1, vcl_r2); // center part of vector v_1
+  viennacl::vector_range<VCLVectorType>   vcl_v1_sub3(vcl_v1, vcl_r3); // tail of vector v_1
+
+  
+  //
+  // Copy from ublas to submatrices and back:
+  //
+  
+  ublas_v1_sub1 = ublas_v2;
+  viennacl::copy(ublas_v2, vcl_v1_sub1);
+  viennacl::copy(vcl_v1_sub1, ublas_v2);  
+  
+  //
+  // Addition:
+  //
+  
+  ublas_v1_sub1 += ublas_v1_sub1;
+  vcl_v1_sub1 += vcl_v1_sub1;
+
+  ublas_v1_sub2 += ublas_v1_sub2;
+  vcl_v1_sub2 += vcl_v1_sub2;
+
+  ublas_v1_sub3 += ublas_v1_sub3;
+  vcl_v1_sub3 += vcl_v1_sub3;
+  
+  //
+  // print vectors:
+  //
+  std::cout << "ublas:    " << ublas_v1 << std::endl;
+  std::cout << "ViennaCL: " << vcl_v1 << std::endl;
+
+  //
+  //  That's it.
+  //
+  std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+
+  return EXIT_SUCCESS;
+}
+
diff --git a/examples/tutorial/viennacl-info.cpp b/examples/tutorial/viennacl-info.cpp
index 4016c4d..7278ab7 100644
--- a/examples/tutorial/viennacl-info.cpp
+++ b/examples/tutorial/viennacl-info.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 // include necessary system headers
 #include <iostream>
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index d5cf057..bf8c661 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,106 +1,12 @@
-PROJECT(ViennaCLTests)
-
-cmake_minimum_required(VERSION 2.4)
-
-#-----------------------------------------------------------------------------
-#specify include and source directory
-INCLUDE_DIRECTORIES("../")    # ViennaCL root
-
-# alternate boost path for macs
-IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-   INCLUDE_DIRECTORIES("/opt/local/include") 
-ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-
-# **************************  Section 2: Configure OpenCL **************************
-
-#
-# AMD APP SDK:
-# add include and lib path to build environment
-# The linker will most likely pick the correct link directory
-# Otherwise, feel free to comment the wrong link directory for your machine.
-#
-# The following lines can be commented if AMD APP SDK is not in use.
-#
-SET(AppSDK $ENV{AMDAPPSDKROOT})
-IF(AppSDK)
- INCLUDE_DIRECTORIES($ENV{AMDAPPSDKROOT}/include) 
- LINK_DIRECTORIES($ENV{AMDAPPSDKROOT}/lib/x86)       #use this on 32 bit systems
- LINK_DIRECTORIES($ENV{AMDAPPSDKROOT}/lib/x86_64)    #use this on 64 bit systems
-ENDIF(AppSDK)
-#
-# Note that the environment variable was ATISTREAMSDKROOT in older versions of the SDK:
-#
-SET(StreamSDK $ENV{ATISTREAMSDKROOT})
-IF(StreamSDK)
- INCLUDE_DIRECTORIES($ENV{ATISTREAMSDKROOT}/include) 
- LINK_DIRECTORIES($ENV{ATISTREAMSDKROOT}/lib/x86)       #use this on 32 bit systems
- LINK_DIRECTORIES($ENV{ATISTREAMSDKROOT}/lib/x86_64)    #use this on 64 bit systems
-ENDIF(StreamSDK)
-
-
-#
-# Intel OpenCL SDK:
-# add include and lib path to build environment
-# The linker will most likely pick the correct link directory
-# Otherwise, feel free to comment the wrong link directory for your machine.
-#
-# The following lines can be commented if Intel OpenCL SDK is not in use.
-#
-SET(IntelSDK $ENV{INTELOCLSDKROOT})
-IF(IntelSDK)
- INCLUDE_DIRECTORIES($ENV{INTELOCLSDKROOT}/include) 
- LINK_DIRECTORIES($ENV{INTELOCLSDKROOT}/lib/x86)       #use this on 32 bit systems
- LINK_DIRECTORIES($ENV{INTELOCLSDKROOT}/lib/x64)    #use this on 64 bit systems
-ENDIF(IntelSDK)
-
-#
-# For NVIDIA hardware, there should be no need for additional configurations at this point
-#
-
-#-----------------------------------------------------------------------------
-
-#add definitions, compiler switches, etc.
-IF(CMAKE_COMPILER_IS_GNUCXX)
-   #ADD_DEFINITIONS(-Wall -O0 -g)
-   ADD_DEFINITIONS(-Wall -pedantic -O3)
-ENDIF(CMAKE_COMPILER_IS_GNUCXX)
-#-----------------------------------------------------------------------------
-
-#-----------------------------------------------------------------------------
-# Configure Dart testing support.  This should be done before any
-# MESSAGE(FATAL_ERROR ...) commands are invoked.
-INCLUDE(CTest)
-ENABLE_TESTING()
-IF(BUILD_TESTING)
-  SET(BUILDNAME "${BUILDNAME}" CACHE STRING "Name of build on the dashboard")
-  MARK_AS_ADVANCED(BUILDNAME)
-ENDIF(BUILD_TESTING)
-
-#-----------------------------------------------------------------------------
-# add the source files which should be tested without the trailing *.cpp
-SET(PROGS scalar vector matrix sparse iterators blas3)
-#-----------------------------------------------------------------------------
-
-#-----------------------------------------------------------------------------
-FOREACH(PROG ${PROGS})
-   ADD_EXECUTABLE(${PROG} ../src/${PROG}.cpp)
-   ADD_test(${PROG} ${PROG})
-   TARGET_LINK_LIBRARIES(${PROG} OpenCL)
-ENDFOREACH(PROG)
-
-ADD_EXECUTABLE(external_linkage  ../src/external_1.cpp
-                                 ../src/external_2.cpp)
-
-#-----------------------------------------------------------------------------
-
-#-----------------------------------------------------------------------------
-# Mac OS X specific linker part
-IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-   set(CMAKE_EXE_LINKER_FLAGS "-framework OpenCL")
-ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-
-# Linux specific linker part
-IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
-   set(CMAKE_EXE_LINKER_FLAGS "-lOpenCL")
-ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
-#-----------------------------------------------------------------------------
+foreach(PROG blas3 fft iterators matrix matrix_range scalar sparse structured-matrices vector vector_range)
+   add_executable(${PROG}-test src/${PROG}.cpp)
+   target_link_libraries(${PROG}-test ${OPENCL_LIBRARIES})
+   add_test(${PROG} ${PROG}-test)
+endforeach(PROG)
+
+include_directories(${PROJECT_SOURCE_DIR}/external)
+add_executable(external_linkage 
+                src/external_1.cpp
+                src/external_2.cpp 
+                ${PROJECT_SOURCE_DIR}/external/pugixml/src/pugixml.cpp)
+target_link_libraries(external_linkage ${OPENCL_LIBRARIES})
diff --git a/tests/CTestConfig.cmake b/tests/CTestConfig.cmake
deleted file mode 100644
index 1a48cae..0000000
--- a/tests/CTestConfig.cmake
+++ /dev/null
@@ -1,13 +0,0 @@
-## This file should be placed in the root directory of your project.
-## Then modify the CMakeLists.txt file in the root directory of your
-## project to incorporate the testing dashboard.
-## # The following are required to uses Dart and the Cdash dashboard
-##   ENABLE_TESTING()
-##   INCLUDE(CTest)
-set(CTEST_PROJECT_NAME "ViennaCL")
-set(CTEST_NIGHTLY_START_TIME "00:00:00 EST")
-
-set(CTEST_DROP_METHOD "http")
-set(CTEST_DROP_SITE "my.cdash.org")
-set(CTEST_DROP_LOCATION "/submit.php?project=ViennaCL")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/tests/clean.sh b/tests/clean.sh
deleted file mode 100755
index b9b5ea3..0000000
--- a/tests/clean.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-rm -rf build/
-rm -rf .build/
-rm -f *.log
diff --git a/tests/run_regression.sh b/tests/run_regression.sh
deleted file mode 100755
index 42a4648..0000000
--- a/tests/run_regression.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-
-INPUT=$1
-BUILDFOLDER=build
-
-# extract number of cores on the system
-CORES=`grep -c ^processor /proc/cpuinfo`
-echo "building with " $CORES "cores " 
-
-./clean.sh
-if [ "$INPUT" != "" ]; then
-   if [ "$INPUT" == "help" ] ; then
-      echo "usage: ./run_regression.sh [options]"
-      echo ""
-      echo "options:"
-      echo "  help      prints this help message"
-      echo "  submit    submits the result to online cdash service"
-      exit -1
-   elif [ "$INPUT" == "submit" ] ; then
-      mkdir -p $BUILDFOLDER
-      cd $BUILDFOLDER
-      cmake ..
-      # build and submit results to online cdash service
-      make Nightly -j$CORES
-      echo ""
-      echo "regression result is available here:"
-      echo "----------------------------------------------"
-      echo "http://my.cdash.org/index.php?project=ViennaCL"
-      echo "----------------------------------------------"
-      echo ""
-   else 
-      echo ""
-      echo "# Error - wrong option: \""$INPUT"\""
-      echo ""
-      echo "usage: ./run_regression.sh [options]"
-      echo ""
-      echo "options:"
-      echo "  help      prints this help message"
-      echo "  submit    submits the result to online cdash service"
-      exit -1
-   fi
-else
-   mkdir -p $BUILDFOLDER
-   cd $BUILDFOLDER
-   cmake ..
-   # plain build without submit
-   make -j$CORES
-   make test
-fi
-
-
diff --git a/tests/src/blas3.cpp b/tests/src/blas3.cpp
index 989a8cc..b4e3a9d 100644
--- a/tests/src/blas3.cpp
+++ b/tests/src/blas3.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //#define NDEBUG
 
@@ -62,9 +64,9 @@ template <typename ScalarType>
 ScalarType diff(ublas::vector<ScalarType> & v1, viennacl::vector<ScalarType> & v2)
 {
    ublas::vector<ScalarType> v2_cpu(v2.size());
-   copy(v2.begin(), v2.end(), v2_cpu.begin());
+   viennacl::copy(v2.begin(), v2.end(), v2_cpu.begin());
 
-   for (unsigned int i=0;i<v1.size(); ++i)
+   for (std::size_t i=0;i<v1.size(); ++i)
    {
       if ( std::max( fabs(v2_cpu[i]), fabs(v1[i]) ) > 0 )
          v2_cpu[i] = fabs(v2_cpu[i] - v1[i]) / std::max( fabs(v2_cpu[i]), fabs(v1[i]) );
@@ -83,9 +85,9 @@ ScalarType diff(ublas::matrix<ScalarType> & mat1, viennacl::matrix<ScalarType, F
    double ret = 0;
    double act = 0;
 
-    for (unsigned int i = 0; i < mat2_cpu.size1(); ++i)
+    for (std::size_t i = 0; i < mat2_cpu.size1(); ++i)
     {
-      for (unsigned int j = 0; j < mat2_cpu.size2(); ++j)
+      for (std::size_t j = 0; j < mat2_cpu.size2(); ++j)
       {
          act = fabs(mat2_cpu(i,j) - mat1(i,j)) / std::max( fabs(mat2_cpu(i, j)), fabs(mat1(i,j)) );
          if (act > ret)
@@ -93,7 +95,7 @@ ScalarType diff(ublas::matrix<ScalarType> & mat1, viennacl::matrix<ScalarType, F
       }
     }
    //std::cout << ret << std::endl;
-   return ret;
+   return ScalarType(ret);
 }
 
 //
@@ -227,19 +229,19 @@ int test_solve(Epsilon const& epsilon)
    ublas::matrix<NumericT> C_start(rhs_num, matrix_size);
 
    //fill A and B:
-   for (unsigned int i = 0; i < A.size1(); ++i)
+   for (std::size_t i = 0; i < A.size1(); ++i)
    {
-      for (unsigned int j = 0; j < A.size2(); ++j)
+      for (std::size_t j = 0; j < A.size2(); ++j)
          A(i,j) = static_cast<NumericT>(-0.5) * random<NumericT>();
-      A(i,i) = 1.0 + 2.0 * random<NumericT>(); //some extra weight on diagonal for stability
+      A(i,i) = NumericT(1.0) + NumericT(2.0) * random<NumericT>(); //some extra weight on diagonal for stability
    }
    
-   for (unsigned int i = 0; i < B_start.size1(); ++i)
-      for (unsigned int j = 0; j < B_start.size2(); ++j)
+   for (std::size_t i = 0; i < B_start.size1(); ++i)
+      for (std::size_t j = 0; j < B_start.size2(); ++j)
          B_start(i,j) = random<NumericT>();
 
-   for (unsigned int i = 0; i < C_start.size1(); ++i)
-      for (unsigned int j = 0; j < C_start.size2(); ++j)
+   for (std::size_t i = 0; i < C_start.size1(); ++i)
+      for (std::size_t j = 0; j < C_start.size2(); ++j)
          C_start(i,j) = random<NumericT>();
       
    ublas::matrix<NumericT> B = B_start;
@@ -539,7 +541,7 @@ int main()
    std::cout << std::endl;
    {
       typedef float NumericT;
-      NumericT epsilon = 1.0E-3;
+      NumericT epsilon = NumericT(1.0E-3);
       std::cout << "# Testing setup:" << std::endl;
       std::cout << "  eps:     " << epsilon << std::endl;
       std::cout << "  numeric: float" << std::endl;
diff --git a/tests/src/blas3range.cpp b/tests/src/blas3range.cpp
new file mode 100644
index 0000000..6b5b613
--- /dev/null
+++ b/tests/src/blas3range.cpp
@@ -0,0 +1,589 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+//#define NDEBUG
+
+//
+// *** System
+//
+#include <iostream>
+
+//
+// *** Boost
+//
+#include <boost/numeric/ublas/io.hpp>
+#include <boost/numeric/ublas/triangular.hpp>
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/ublas/lu.hpp>
+#include <boost/numeric/ublas/io.hpp>
+
+//
+// *** ViennaCL
+//
+//#define VIENNACL_DEBUG_INFO_ALL
+//#define VIENNACL_DEBUG_BUILD
+#define VIENNACL_HAVE_UBLAS 1
+#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/vector.hpp"
+#include "viennacl/matrix_proxy.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/linalg/norm_2.hpp"
+#include "viennacl/linalg/direct_solve.hpp"
+#include "examples/tutorial/Random.hpp"
+//
+// -------------------------------------------------------------
+//
+using namespace boost::numeric;
+//
+// -------------------------------------------------------------
+//
+template <typename ScalarType>
+ScalarType diff(ScalarType & s1, viennacl::scalar<ScalarType> & s2) 
+{
+   if (s1 != s2)
+      return (s1 - s2) / std::max(fabs(s1), fabs(s2));
+   return 0;
+}
+
+template <typename ScalarType>
+ScalarType diff(ublas::vector<ScalarType> & v1, viennacl::vector<ScalarType> & v2)
+{
+   ublas::vector<ScalarType> v2_cpu(v2.size());
+   copy(v2.begin(), v2.end(), v2_cpu.begin());
+
+   for (unsigned int i=0;i<v1.size(); ++i)
+   {
+      if ( std::max( fabs(v2_cpu[i]), fabs(v1[i]) ) > 0 )
+         v2_cpu[i] = fabs(v2_cpu[i] - v1[i]) / std::max( fabs(v2_cpu[i]), fabs(v1[i]) );
+      else
+         v2_cpu[i] = 0.0;
+   }
+
+   return norm_inf(v2_cpu);
+}
+
+template <typename ScalarType, typename VCLMatrixType>
+ScalarType diff(ublas::matrix<ScalarType> & mat1, VCLMatrixType & mat2)
+{
+   ublas::matrix<ScalarType> mat2_cpu(mat2.size1(), mat2.size2());
+   viennacl::copy(mat2, mat2_cpu);
+   double ret = 0;
+   double act = 0;
+
+    for (unsigned int i = 0; i < mat2_cpu.size1(); ++i)
+    {
+      for (unsigned int j = 0; j < mat2_cpu.size2(); ++j)
+      {
+         act = fabs(mat2_cpu(i,j) - mat1(i,j)) / std::max( fabs(mat2_cpu(i, j)), fabs(mat1(i,j)) );
+         if (act > ret)
+           ret = act;
+      }
+    }
+   //std::cout << ret << std::endl;
+   return ret;
+}
+
+//
+// -------------------------------------------------------------
+//
+template< typename NumericT, typename MatrixTypeA, typename MatrixTypeB, typename MatrixTypeC, typename Epsilon >
+int test_prod(Epsilon const& epsilon)
+{
+   int retval = EXIT_SUCCESS;
+   long matrix_size1 = 157;  //some odd number, not too large
+   long matrix_size2 = 91;  //some odd number, not too large
+   long matrix_size3 = 73;  //some odd number, not too large
+   NumericT act_diff = 0;
+   
+   // --------------------------------------------------------------------------            
+   ublas::matrix<NumericT> A(matrix_size1, matrix_size2);
+   ublas::matrix<NumericT> B(matrix_size2, matrix_size3);
+   ublas::matrix<NumericT> C(matrix_size1, matrix_size3);
+
+   //fill A and B:
+   for (unsigned int i = 0; i < A.size1(); ++i)
+      for (unsigned int j = 0; j < A.size2(); ++j)
+         A(i,j) = static_cast<NumericT>(0.1) * random<NumericT>();
+   for (unsigned int i = 0; i < B.size1(); ++i)
+      for (unsigned int j = 0; j < B.size2(); ++j)
+         B(i,j) = static_cast<NumericT>(0.1) * random<NumericT>();
+
+   ublas::matrix<NumericT> A_trans = trans(A);
+   ublas::matrix<NumericT> B_trans = trans(B);
+   
+   MatrixTypeA vcl_A_full(3*matrix_size1, 3*matrix_size2); vcl_A_full.clear();
+   MatrixTypeB vcl_B_full(3*matrix_size2, 3*matrix_size3); vcl_B_full.clear();
+   MatrixTypeA vcl_A_trans_full(3*matrix_size2, 3*matrix_size1); vcl_A_trans_full.clear();
+   MatrixTypeB vcl_B_trans_full(3*matrix_size3, 3*matrix_size2); vcl_B_trans_full.clear();
+   MatrixTypeC vcl_C_full(3*matrix_size1, 3*matrix_size3); vcl_C_full.clear();
+
+   viennacl::range r1(matrix_size1, 2*matrix_size1);
+   viennacl::range r2(matrix_size2, 2*matrix_size2);
+   viennacl::range r3(matrix_size3, 2*matrix_size3);
+   viennacl::matrix_range<MatrixTypeA> vcl_A(vcl_A_full, r1, r2);
+   viennacl::matrix_range<MatrixTypeB> vcl_B(vcl_B_full, r2, r3);
+   viennacl::matrix_range<MatrixTypeA> vcl_A_trans(vcl_A_trans_full, r2, r1);
+   viennacl::matrix_range<MatrixTypeB> vcl_B_trans(vcl_B_trans_full, r3, r2);
+   viennacl::matrix_range<MatrixTypeC> vcl_C(vcl_C_full, r1, r3);
+
+   
+   viennacl::copy(A, vcl_A);
+   viennacl::copy(B, vcl_B);
+   viennacl::copy(A_trans, vcl_A_trans);
+   viennacl::copy(B_trans, vcl_B_trans);
+
+   // Test: C = A * B --------------------------------------------------------------------------       
+   C     = viennacl::linalg::prod(A, B);
+   vcl_C = viennacl::linalg::prod(vcl_A, vcl_B);
+   act_diff = fabs(diff(C, vcl_C));
+   
+   if( act_diff > epsilon )
+   {
+     std::cout << "# Error at operation: matrix-matrix product" << std::endl;
+     std::cout << "  diff: " << act_diff << std::endl;
+     retval = EXIT_FAILURE;
+   }
+   else
+     std::cout << "Test C = A * B passed!" << std::endl;
+   
+   // Test: C = A * trans(B) --------------------------------------------------------------------------       
+   C     = boost::numeric::ublas::prod(A, trans(B_trans));
+   vcl_C = viennacl::linalg::prod(vcl_A, trans(vcl_B_trans));
+   act_diff = fabs(diff(C, vcl_C));
+   
+   if( act_diff > epsilon )
+   {
+     std::cout << "# Error at operation: matrix-matrix product" << std::endl;
+     std::cout << "  diff: " << act_diff << std::endl;
+     retval = EXIT_FAILURE;
+   }
+   else
+     std::cout << "Test C = A * trans(B) passed!" << std::endl;
+   
+   // Test: C = trans(A) * B --------------------------------------------------------------------------       
+   C     = boost::numeric::ublas::prod(trans(A_trans), B);
+   vcl_C = viennacl::linalg::prod(trans(vcl_A_trans), vcl_B);
+   act_diff = fabs(diff(C, vcl_C));
+   
+   if( act_diff > epsilon )
+   {
+     std::cout << "# Error at operation: matrix-matrix product" << std::endl;
+     std::cout << "  diff: " << act_diff << std::endl;
+     retval = EXIT_FAILURE;
+   }
+   else
+     std::cout << "Test C = trans(A) * B passed!" << std::endl;
+   
+   
+   // Test: C = trans(A) * trans(B) --------------------------------------------------------------------------       
+   C     = boost::numeric::ublas::prod(trans(A_trans), trans(B_trans));
+   vcl_C = viennacl::linalg::prod(trans(vcl_A_trans), trans(vcl_B_trans));
+   act_diff = fabs(diff(C, vcl_C));
+   
+   if( act_diff > epsilon )
+   {
+     std::cout << "# Error at operation: matrix-matrix product" << std::endl;
+     std::cout << "  diff: " << act_diff << std::endl;
+     retval = EXIT_FAILURE;
+   }
+   else
+     std::cout << "Test C = trans(A) * trans(B) passed!" << std::endl;
+   
+   
+   
+   return retval;
+}
+
+
+/*
+template <typename RHSTypeRef, typename RHSTypeCheck, typename Epsilon >
+void run_solver_check(RHSTypeRef & B_ref, RHSTypeCheck & B_check, int & retval, Epsilon const & epsilon)
+{
+   double act_diff = fabs(diff(B_ref, B_check));
+   if( act_diff > epsilon )
+   {
+     std::cout << " FAILED!" << std::endl;
+     std::cout << "# Error at operation: matrix-matrix solve" << std::endl;
+     std::cout << "  diff: " << act_diff << std::endl;
+     retval = EXIT_FAILURE;
+   }
+   else
+     std::cout << " passed! " << act_diff << std::endl;
+   
+}
+
+template< typename NumericT, typename MatrixTypeA, typename MatrixTypeB, typename Epsilon >
+int test_solve(Epsilon const& epsilon)
+{
+   int retval = EXIT_SUCCESS;
+   long matrix_size = 83;  //some odd number, not too large
+   long rhs_num = 61;
+   
+   // --------------------------------------------------------------------------            
+   ublas::matrix<NumericT> A(matrix_size, matrix_size);
+   ublas::matrix<NumericT> B_start(matrix_size, rhs_num);
+   ublas::matrix<NumericT> C_start(rhs_num, matrix_size);
+
+   //fill A and B:
+   for (unsigned int i = 0; i < A.size1(); ++i)
+   {
+      for (unsigned int j = 0; j < A.size2(); ++j)
+         A(i,j) = static_cast<NumericT>(-0.5) * random<NumericT>();
+      A(i,i) = 1.0 + 2.0 * random<NumericT>(); //some extra weight on diagonal for stability
+   }
+   
+   for (unsigned int i = 0; i < B_start.size1(); ++i)
+      for (unsigned int j = 0; j < B_start.size2(); ++j)
+         B_start(i,j) = random<NumericT>();
+
+   for (unsigned int i = 0; i < C_start.size1(); ++i)
+      for (unsigned int j = 0; j < C_start.size2(); ++j)
+         C_start(i,j) = random<NumericT>();
+      
+   ublas::matrix<NumericT> B = B_start;
+   ublas::matrix<NumericT> result = B_start;
+   ublas::matrix<NumericT> C = C_start;
+   ublas::matrix<NumericT> A_trans = trans(A);
+   ublas::matrix<NumericT> C_trans = trans(C);
+
+   
+   MatrixTypeA vcl_A(matrix_size, matrix_size);
+   MatrixTypeB vcl_B(matrix_size, rhs_num);
+   MatrixTypeB vcl_result(matrix_size, rhs_num);
+   MatrixTypeB vcl_C(rhs_num, matrix_size);
+   MatrixTypeB vcl_C_result(rhs_num, matrix_size);
+
+   
+   viennacl::copy(A, vcl_A);
+   viennacl::copy(B, vcl_B);
+   viennacl::copy(C, vcl_C);
+   
+   // Test: A \ B with various tags --------------------------------------------------------------------------       
+   std::cout << "Testing A \\ B: " << std::endl;
+   std::cout << " * upper_tag:      ";
+   result = ublas::solve(A, B, ublas::upper_tag());
+   vcl_result = viennacl::linalg::solve(vcl_A, vcl_B, viennacl::linalg::upper_tag());
+   run_solver_check(result, vcl_result, retval, epsilon);
+
+   std::cout << " * unit_upper_tag: ";
+   result = ublas::solve(A, B, ublas::unit_upper_tag());
+   vcl_result = viennacl::linalg::solve(vcl_A, vcl_B, viennacl::linalg::unit_upper_tag());
+   run_solver_check(result, vcl_result, retval, epsilon);
+
+   std::cout << " * lower_tag:      ";
+   result = ublas::solve(A, B, ublas::lower_tag());
+   vcl_result = viennacl::linalg::solve(vcl_A, vcl_B, viennacl::linalg::lower_tag());
+   run_solver_check(result, vcl_result, retval, epsilon);
+
+   std::cout << " * unit_lower_tag: ";
+   result = ublas::solve(A, B, ublas::unit_lower_tag());
+   vcl_result = viennacl::linalg::solve(vcl_A, vcl_B, viennacl::linalg::unit_lower_tag());
+   run_solver_check(result, vcl_result, retval, epsilon);
+   
+   if (retval == EXIT_SUCCESS)
+     std::cout << "Test A \\ B passed!" << std::endl;
+   
+   B = B_start;
+   C = C_start;
+   
+   // Test: A \ B^T --------------------------------------------------------------------------       
+   std::cout << "Testing A \\ B^T: " << std::endl;
+   std::cout << " * upper_tag:      ";
+   viennacl::copy(C, vcl_C); C_trans = trans(C);
+   //check solve():
+   result = ublas::solve(A, C_trans, ublas::upper_tag());
+   vcl_result = viennacl::linalg::solve(vcl_A, trans(vcl_C), viennacl::linalg::upper_tag());
+   run_solver_check(result, vcl_result, retval, epsilon);
+   //check compute kernels:
+   std::cout << " * upper_tag:      ";
+   ublas::inplace_solve(A, C_trans, ublas::upper_tag());
+   viennacl::linalg::inplace_solve(vcl_A, trans(vcl_C), viennacl::linalg::upper_tag());
+   C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+   std::cout << " * unit_upper_tag: ";
+   viennacl::copy(C, vcl_C); C_trans = trans(C);
+   ublas::inplace_solve(A, C_trans, ublas::unit_upper_tag());
+   viennacl::linalg::inplace_solve(vcl_A, trans(vcl_C), viennacl::linalg::unit_upper_tag());
+   C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+   std::cout << " * lower_tag:      ";
+   viennacl::copy(C, vcl_C); C_trans = trans(C);
+   ublas::inplace_solve(A, C_trans, ublas::lower_tag());
+   viennacl::linalg::inplace_solve(vcl_A, trans(vcl_C), viennacl::linalg::lower_tag());
+   C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+   std::cout << " * unit_lower_tag: ";
+   viennacl::copy(C, vcl_C); C_trans = trans(C);
+   ublas::inplace_solve(A, C_trans, ublas::unit_lower_tag());
+   viennacl::linalg::inplace_solve(vcl_A, trans(vcl_C), viennacl::linalg::unit_lower_tag());
+   C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+   
+   if (retval == EXIT_SUCCESS)
+     std::cout << "Test A \\ B^T passed!" << std::endl;
+
+   B = B_start;
+   C = C_start;
+   
+   // Test: A \ B with various tags --------------------------------------------------------------------------       
+   std::cout << "Testing A^T \\ B: " << std::endl;
+   std::cout << " * upper_tag:      ";
+   viennacl::copy(B, vcl_B);
+   result = ublas::solve(trans(A), B, ublas::upper_tag());
+   vcl_result = viennacl::linalg::solve(trans(vcl_A), vcl_B, viennacl::linalg::upper_tag());
+   run_solver_check(result, vcl_result, retval, epsilon);
+
+   std::cout << " * unit_upper_tag: ";
+   viennacl::copy(B, vcl_B);
+   result = ublas::solve(trans(A), B, ublas::unit_upper_tag());
+   vcl_result = viennacl::linalg::solve(trans(vcl_A), vcl_B, viennacl::linalg::unit_upper_tag());
+   run_solver_check(result, vcl_result, retval, epsilon);
+
+   std::cout << " * lower_tag:      ";
+   viennacl::copy(B, vcl_B);
+   result = ublas::solve(trans(A), B, ublas::lower_tag());
+   vcl_result = viennacl::linalg::solve(trans(vcl_A), vcl_B, viennacl::linalg::lower_tag());
+   run_solver_check(result, vcl_result, retval, epsilon);
+
+   std::cout << " * unit_lower_tag: ";
+   viennacl::copy(B, vcl_B);
+   result = ublas::solve(trans(A), B, ublas::unit_lower_tag());
+   vcl_result = viennacl::linalg::solve(trans(vcl_A), vcl_B, viennacl::linalg::unit_lower_tag());
+   run_solver_check(result, vcl_result, retval, epsilon);
+   
+   if (retval == EXIT_SUCCESS)
+     std::cout << "Test A^T \\ B passed!" << std::endl;
+   
+   B = B_start;
+   C = C_start;
+
+   // Test: A^T \ B^T --------------------------------------------------------------------------       
+   std::cout << "Testing A^T \\ B^T: " << std::endl;
+   std::cout << " * upper_tag:      ";
+   viennacl::copy(C, vcl_C); C_trans = trans(C);
+   //check solve():
+   result = ublas::solve(trans(A), C_trans, ublas::upper_tag());
+   vcl_result = viennacl::linalg::solve(trans(vcl_A), trans(vcl_C), viennacl::linalg::upper_tag());
+   run_solver_check(result, vcl_result, retval, epsilon);
+   //check kernels:
+   std::cout << " * upper_tag:      ";
+   ublas::inplace_solve(trans(A), C_trans, ublas::upper_tag());
+   viennacl::linalg::inplace_solve(trans(vcl_A), trans(vcl_C), viennacl::linalg::upper_tag());
+   C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+   std::cout << " * unit_upper_tag: ";
+   viennacl::copy(C, vcl_C); C_trans = trans(C);
+   ublas::inplace_solve(trans(A), C_trans, ublas::unit_upper_tag());
+   viennacl::linalg::inplace_solve(trans(vcl_A), trans(vcl_C), viennacl::linalg::unit_upper_tag());
+   C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+   std::cout << " * lower_tag:      ";
+   viennacl::copy(C, vcl_C); C_trans = trans(C);
+   ublas::inplace_solve(trans(A), C_trans, ublas::lower_tag());
+   viennacl::linalg::inplace_solve(trans(vcl_A), trans(vcl_C), viennacl::linalg::lower_tag());
+   C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+   std::cout << " * unit_lower_tag: ";
+   viennacl::copy(C, vcl_C); C_trans = trans(C);
+   ublas::inplace_solve(trans(A), C_trans, ublas::unit_lower_tag());
+   viennacl::linalg::inplace_solve(trans(vcl_A), trans(vcl_C), viennacl::linalg::unit_lower_tag());
+   C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+   if (retval == EXIT_SUCCESS)
+     std::cout << "Test A^T \\ B^T passed!" << std::endl;
+   
+   return retval;  
+} */
+
+template< typename NumericT, typename Epsilon >
+int test(Epsilon const& epsilon)
+{
+  int ret;
+
+  std::cout << "--- Part 1: Testing matrix-matrix products ---" << std::endl;
+  
+  //
+  //
+  std::cout << "Now using A=row, B=row, C=row" << std::endl;
+  ret = test_prod<NumericT,
+             viennacl::matrix<NumericT, viennacl::row_major>,
+             viennacl::matrix<NumericT, viennacl::row_major>,
+             viennacl::matrix<NumericT, viennacl::row_major>  >(epsilon);
+  if (ret != EXIT_SUCCESS)
+    return ret;
+
+  //
+  //
+  std::cout << "Now using A=row, B=row, C=column" << std::endl;
+  ret = test_prod<NumericT,
+             viennacl::matrix<NumericT, viennacl::row_major>,
+             viennacl::matrix<NumericT, viennacl::row_major>,
+             viennacl::matrix<NumericT, viennacl::column_major>  >(epsilon);
+  if (ret != EXIT_SUCCESS)
+    return ret;
+
+  //
+  //
+  std::cout << "Now using A=row, B=column, C=row" << std::endl;
+  ret = test_prod<NumericT,
+             viennacl::matrix<NumericT, viennacl::row_major>,
+             viennacl::matrix<NumericT, viennacl::column_major>,
+             viennacl::matrix<NumericT, viennacl::row_major>  >(epsilon);
+  if (ret != EXIT_SUCCESS)
+    return ret;
+  
+  //
+  //
+  std::cout << "Now using A=row, B=column, C=column" << std::endl;
+  ret = test_prod<NumericT,
+             viennacl::matrix<NumericT, viennacl::row_major>,
+             viennacl::matrix<NumericT, viennacl::column_major>,
+             viennacl::matrix<NumericT, viennacl::column_major>  >(epsilon);
+  if (ret != EXIT_SUCCESS)
+    return ret;
+
+  
+  
+  //
+  //
+  std::cout << "Now using A=column, B=row, C=row" << std::endl;
+  ret = test_prod<NumericT,
+             viennacl::matrix<NumericT, viennacl::column_major>,
+             viennacl::matrix<NumericT, viennacl::row_major>,
+             viennacl::matrix<NumericT, viennacl::row_major>  >(epsilon);
+  if (ret != EXIT_SUCCESS)
+    return ret;
+
+  //
+  //
+  std::cout << "Now using A=column, B=row, C=column" << std::endl;
+  ret = test_prod<NumericT,
+             viennacl::matrix<NumericT, viennacl::column_major>,
+             viennacl::matrix<NumericT, viennacl::row_major>,
+             viennacl::matrix<NumericT, viennacl::column_major>  >(epsilon);
+  if (ret != EXIT_SUCCESS)
+    return ret;
+
+  //
+  //
+  std::cout << "Now using A=column, B=column, C=row" << std::endl;
+  ret = test_prod<NumericT,
+             viennacl::matrix<NumericT, viennacl::column_major>,
+             viennacl::matrix<NumericT, viennacl::column_major>,
+             viennacl::matrix<NumericT, viennacl::row_major>  >(epsilon);
+  if (ret != EXIT_SUCCESS)
+    return ret;
+  
+  //
+  //
+  std::cout << "Now using A=column, B=column, C=column" << std::endl;
+  ret = test_prod<NumericT,
+             viennacl::matrix<NumericT, viennacl::column_major>,
+             viennacl::matrix<NumericT, viennacl::column_major>,
+             viennacl::matrix<NumericT, viennacl::column_major>  >(epsilon);
+  if (ret != EXIT_SUCCESS)
+    return ret;
+  
+  /*
+  std::cout << "--- Part 2: Testing matrix-matrix solver ---" << std::endl;
+  
+  std::cout << "Now using A=row, B=row" << std::endl;
+  ret = test_solve<NumericT,
+             viennacl::matrix<NumericT, viennacl::row_major>,
+             viennacl::matrix<NumericT, viennacl::row_major>  >(epsilon);
+  if (ret != EXIT_SUCCESS)
+    return ret;
+
+  std::cout << "Now using A=row, B=col" << std::endl;
+  ret = test_solve<NumericT,
+             viennacl::matrix<NumericT, viennacl::row_major>,
+             viennacl::matrix<NumericT, viennacl::column_major>  >(epsilon);
+  if (ret != EXIT_SUCCESS)
+    return ret;
+
+  std::cout << "Now using A=col, B=row" << std::endl;
+  ret = test_solve<NumericT,
+             viennacl::matrix<NumericT, viennacl::column_major>,
+             viennacl::matrix<NumericT, viennacl::row_major>  >(epsilon);
+  if (ret != EXIT_SUCCESS)
+    return ret;
+
+  std::cout << "Now using A=col, B=col" << std::endl;
+  ret = test_solve<NumericT,
+             viennacl::matrix<NumericT, viennacl::column_major>,
+             viennacl::matrix<NumericT, viennacl::column_major>  >(epsilon);
+  if (ret != EXIT_SUCCESS)
+    return ret; */
+  
+  return ret;
+}
+
+
+//
+// -------------------------------------------------------------
+//
+int main()
+{
+   std::cout << std::endl;
+   std::cout << "----------------------------------------------" << std::endl;
+   std::cout << "----------------------------------------------" << std::endl;
+   std::cout << "## Test :: BLAS 3 routines" << std::endl;
+   std::cout << "----------------------------------------------" << std::endl;
+   std::cout << "----------------------------------------------" << std::endl;
+   std::cout << std::endl;
+
+   int retval = EXIT_SUCCESS;
+
+   std::cout << std::endl;
+   std::cout << "----------------------------------------------" << std::endl;
+   std::cout << std::endl;
+   {
+      typedef float NumericT;
+      NumericT epsilon = 1.0E-3;
+      std::cout << "# Testing setup:" << std::endl;
+      std::cout << "  eps:     " << epsilon << std::endl;
+      std::cout << "  numeric: float" << std::endl;
+      retval = test<NumericT>(epsilon);
+      if( retval == EXIT_SUCCESS )
+        std::cout << "# Test passed" << std::endl;
+      else
+        return retval;
+   }
+   std::cout << std::endl;
+   std::cout << "----------------------------------------------" << std::endl;
+   std::cout << std::endl;
+   if( viennacl::ocl::current_device().double_support() )
+   {
+      {
+        typedef double NumericT;
+        NumericT epsilon = 1.0E-11;
+        std::cout << "# Testing setup:" << std::endl;
+        std::cout << "  eps:     " << epsilon << std::endl;
+        std::cout << "  numeric: double" << std::endl;
+        retval = test<NumericT>(epsilon);
+        if( retval == EXIT_SUCCESS )
+          std::cout << "# Test passed" << std::endl;
+        else
+          return retval;
+      }
+      std::cout << std::endl;
+      std::cout << "----------------------------------------------" << std::endl;
+      std::cout << std::endl;
+   }
+   return retval;
+}
diff --git a/tests/src/external_1.cpp b/tests/src/external_1.cpp
index 1bfc7fe..593b80b 100644
--- a/tests/src/external_1.cpp
+++ b/tests/src/external_1.cpp
@@ -1,22 +1,27 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // A check for the absence of external linkage (otherwise, library is not truly 'header-only')
 //
 
 
+//#define VIENNACL_HAVE_EIGEN
+#define VIENNACL_HAVE_UBLAS
+
 //
 // *** System
 //
@@ -31,15 +36,26 @@
 #include "viennacl/matrix.hpp"
 #include "viennacl/compressed_matrix.hpp"
 #include "viennacl/coordinate_matrix.hpp"
+#include "viennacl/circulant_matrix.hpp"
+#include "viennacl/hankel_matrix.hpp"
+#include "viennacl/toeplitz_matrix.hpp"
+#include "viennacl/vandermonde_matrix.hpp"
 
 #include "viennacl/linalg/ilu.hpp"
 #include "viennacl/linalg/row_scaling.hpp"
 #include "viennacl/linalg/jacobi_precond.hpp"
+#include "viennacl/linalg/amg.hpp"
+#include "viennacl/linalg/spai.hpp"
 #include "viennacl/linalg/cg.hpp"
 #include "viennacl/linalg/bicgstab.hpp"
 #include "viennacl/linalg/gmres.hpp"
 #include "viennacl/linalg/direct_solve.hpp"
+#include "viennacl/linalg/qr.hpp"
+
+#include "viennacl/fft.hpp"
+#include "viennacl/misc/bandwidth_reduction.hpp"
 
+#include "viennacl/io/kernel_parameters.hpp"
 #include "viennacl/io/matrix_market.hpp"
 
 
diff --git a/tests/src/external_2.cpp b/tests/src/external_2.cpp
index b1c17d1..0689de5 100644
--- a/tests/src/external_2.cpp
+++ b/tests/src/external_2.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // A check for the absence of external linkage (otherwise, library is not truly 'header-only')
@@ -31,6 +33,10 @@
 #include "viennacl/matrix.hpp"
 #include "viennacl/compressed_matrix.hpp"
 #include "viennacl/coordinate_matrix.hpp"
+#include "viennacl/circulant_matrix.hpp"
+#include "viennacl/hankel_matrix.hpp"
+#include "viennacl/toeplitz_matrix.hpp"
+#include "viennacl/vandermonde_matrix.hpp"
 
 #include "viennacl/linalg/ilu.hpp"
 #include "viennacl/linalg/row_scaling.hpp"
@@ -40,6 +46,10 @@
 #include "viennacl/linalg/gmres.hpp"
 #include "viennacl/linalg/direct_solve.hpp"
 
+#include "viennacl/fft.hpp"
+#include "viennacl/misc/bandwidth_reduction.hpp"
+
+#include "viennacl/io/kernel_parameters.hpp"
 #include "viennacl/io/matrix_market.hpp"
 
 void other_func()
diff --git a/tests/src/fft.cpp b/tests/src/fft.cpp
new file mode 100644
index 0000000..015cd26
--- /dev/null
+++ b/tests/src/fft.cpp
@@ -0,0 +1,366 @@
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <iostream>
+#include <vector>
+#include <cmath>
+#include <complex>
+#include <fstream>
+#include <algorithm>
+
+//#define VIENNACL_BUILD_INFO
+
+#include "viennacl/fft.hpp"
+
+typedef float ScalarType;
+
+const ScalarType EPS = 0.06;  //use smaller values in double precision
+
+typedef ScalarType (*test_function_ptr)(std::vector<ScalarType>&,
+                                        std::vector<ScalarType>&,
+                                        unsigned int,
+                                        unsigned int,
+                                        unsigned int);
+typedef void (*input_function_ptr)(std::istream&,
+                                   std::vector<ScalarType>&,
+                                   std::vector<ScalarType>&,
+                                   unsigned int&,
+                                   unsigned int&,
+                                   unsigned int&);
+
+void read_vectors_pair(std::istream& str,
+                      std::vector<ScalarType>& input,
+                      std::vector<ScalarType>& output,
+                      unsigned int& rows,
+                      unsigned int& cols,
+                      unsigned int& batch_size) 
+{
+    rows = 1;
+
+    str >> cols >> batch_size;
+    input.resize(2 * cols * batch_size);
+    output.resize(2 * cols * batch_size);
+
+    for(unsigned int i = 0; i < input.size(); i++) 
+        str >> input[i];
+
+    for(unsigned int i = 0; i < output.size(); i++) 
+        str >> output[i];
+}
+
+void read_matrices_pair(std::istream& str,
+                        std::vector<ScalarType>& input,
+                        std::vector<ScalarType>& output,
+                        unsigned int& rows,
+                        unsigned int& cols,
+                        unsigned int& batch_size) 
+{
+    batch_size = 1;
+    str >> rows >> cols;
+
+    input.resize(2 * rows * cols);
+    output.resize(2 * rows * cols);
+
+    for(unsigned int i = 0; i < input.size(); i++) {
+        str >> input[i];
+    }
+
+    for(unsigned int i = 0; i < output.size(); i++) {
+        str >> output[i];
+    }
+}
+
+template <typename ScalarType>
+ScalarType diff(std::vector<ScalarType>& vec, std::vector<ScalarType>& ref) 
+{
+    ScalarType df = 0.0;
+    ScalarType norm_ref = 0;
+
+    for(std::size_t i = 0; i < vec.size(); i++) 
+    {
+        df = df + pow(vec[i] - ref[i], 2);
+        norm_ref += ref[i] * ref[i];
+    }
+
+    return sqrt(df / norm_ref) ;
+}
+
+template <typename ScalarType>
+ScalarType diff_max(std::vector<ScalarType>& vec, std::vector<ScalarType>& ref) 
+{
+  ScalarType df = 0.0;
+  ScalarType mx = 0.0;
+  ScalarType norm_max = 0;
+  
+  for (std::size_t i = 0; i < vec.size(); i++) 
+  {
+    df = std::max<ScalarType>(fabs(vec[i] - ref[i]), df);
+    mx = std::max<ScalarType>(fabs(vec[i]), mx);
+    
+    if (mx > 0)
+    {
+      if (norm_max < df / mx)
+        norm_max = df / mx;
+    }
+  }
+  
+  return norm_max;
+}
+
+void convolve_ref(std::vector<ScalarType>& in1,
+                  std::vector<ScalarType>& in2,
+                  std::vector<ScalarType>& out) 
+{
+    out.resize(in1.size());
+    unsigned int data_size = in1.size() >> 1;
+
+    for(unsigned int n = 0; n < data_size; n++) {
+        std::complex<ScalarType> el;
+        for(unsigned int k = 0; k < data_size; k++) {
+            int offset = (n - k);
+            if(offset < 0) offset += data_size;
+            std::complex<ScalarType> m1(in1[2*k], in1[2*k + 1]);
+            std::complex<ScalarType> m2(in2[2*offset], in2[2*offset + 1]);
+//            std::cout << offset << " " << m1 << " " << m2 << "\n";
+            el = el +  m1 * m2 ;
+        }
+        //std::cout << "Answer - " << el << "\n";
+        out[2*n] = el.real();
+        out[2*n + 1] = el.imag();
+    }
+}
+
+ScalarType opencl_fft(std::vector<ScalarType>& in,
+                      std::vector<ScalarType>& out,
+                      unsigned int row, unsigned int col, unsigned int batch_size)
+{
+    viennacl::vector<ScalarType> input(in.size());
+    viennacl::vector<ScalarType> output(in.size());
+
+    std::vector<ScalarType> res(in.size());
+
+    viennacl::fast_copy(in, input);
+
+    viennacl::fft(input, output, batch_size);
+
+    viennacl::fast_copy(output, res);
+
+    return diff_max(res, out);
+}
+
+ScalarType opencl_2d_fft_1arg(std::vector<ScalarType>& in,
+                              std::vector<ScalarType>& out,
+                              unsigned int row, unsigned int col, unsigned int batch_size)
+{
+    viennacl::matrix<ScalarType> input(row, 2 * col);
+
+    std::vector<ScalarType> res(in.size());
+
+    viennacl::fast_copy(&in[0], &in[0] + in.size(), input);
+    //std::cout << input << "\n";
+    viennacl::inplace_fft(input);
+    //std::cout << input << "\n";
+    viennacl::fast_copy(input, &res[0]);
+
+    return diff_max(res, out);
+}
+
+ScalarType opencl_2d_fft_2arg(std::vector<ScalarType>& in,
+                              std::vector<ScalarType>& out,
+                              unsigned int row, unsigned int col, unsigned int batch_size)
+{
+    viennacl::matrix<ScalarType> input(row, 2 * col);
+    viennacl::matrix<ScalarType> output(row, 2 * col);
+
+    std::vector<ScalarType> res(in.size());
+
+    viennacl::fast_copy(&in[0], &in[0] + in.size(), input);
+    //std::cout << input << "\n";
+    viennacl::fft(input, output);
+    //std::cout << input << "\n";
+    viennacl::fast_copy(output, &res[0]);
+
+    return diff_max(res, out);
+}
+
+ScalarType opencl_direct(std::vector<ScalarType>& in,
+                         std::vector<ScalarType>& out,
+                         unsigned int row, unsigned int col, unsigned int batch_num)
+{
+    viennacl::vector<ScalarType> input(in.size());
+    viennacl::vector<ScalarType> output(in.size());
+
+    std::vector<ScalarType> res(in.size());
+
+    viennacl::fast_copy(in, input);
+
+    unsigned int size = (input.size() >> 1) / batch_num;
+
+    viennacl::detail::fft::direct<ScalarType>(input.handle(), output.handle(), size, size, batch_num);
+
+    viennacl::fast_copy(output, res);
+
+    return diff_max(res, out);
+}
+
+ScalarType opencl_bluestein(std::vector<ScalarType>& in,
+                            std::vector<ScalarType>& out,
+                            unsigned int row, unsigned int col, unsigned int batch_size)
+{
+    viennacl::vector<ScalarType> input(in.size());
+    viennacl::vector<ScalarType> output(in.size());
+
+    std::vector<ScalarType> res(in.size());
+
+    viennacl::fast_copy(in, input);
+
+    viennacl::detail::fft::bluestein(input, output, batch_size);
+
+    viennacl::fast_copy(output, res);
+
+    return diff_max(res, out);
+}
+
+ScalarType opencl_radix2(std::vector<ScalarType>& in,
+                         std::vector<ScalarType>& out,
+                         unsigned int row, unsigned int col, unsigned int batch_num)
+{
+    viennacl::vector<ScalarType> input(in.size());
+    viennacl::vector<ScalarType> output(in.size());
+
+    std::vector<ScalarType> res(in.size());
+
+    viennacl::fast_copy(in, input);
+
+    unsigned int size = (input.size() >> 1) / batch_num;
+
+    viennacl::detail::fft::radix2<ScalarType>(input.handle(), size, size, batch_num);
+
+    viennacl::fast_copy(input, res);
+
+    return diff_max(res, out);
+}
+
+ScalarType opencl_convolve(std::vector<ScalarType>& in1,
+                           std::vector<ScalarType>& in2,
+                           unsigned int row, unsigned int col, unsigned int batch_size)
+{
+    //if(in1.size() > 2048) return -1;
+    viennacl::vector<ScalarType> input1(in1.size());
+    viennacl::vector<ScalarType> input2(in2.size());
+    viennacl::vector<ScalarType> output(in1.size());
+
+    viennacl::fast_copy(in1, input1);
+    viennacl::fast_copy(in2, input2);
+
+    viennacl::linalg::convolve(input1, input2, output);
+
+    std::vector<ScalarType> res(in1.size());
+    viennacl::fast_copy(output, res);
+
+    std::vector<ScalarType> ref(in1.size());
+    convolve_ref(in1, in2, ref);
+
+    return diff_max(res, ref);
+}
+
+int test_correctness(const std::string& log_tag,
+                                const std::string& filename,
+                                input_function_ptr input_function,
+                                test_function_ptr func) {
+
+    std::vector<ScalarType> input;
+    std::vector<ScalarType> output;
+
+    std::fstream fstr;
+
+    fstr.open(filename.c_str());
+
+    std::cout << "*****************" << log_tag << "***************************\n";
+
+    unsigned int test_size = 0;
+
+    fstr >> test_size;
+    
+    std::cout << "Test size: " << test_size << std::endl;
+
+    for(unsigned int i = 0; i < test_size; i++) {
+        unsigned int batch_size;
+        unsigned int rows_num, cols_num;
+        input_function(fstr, input, output, rows_num, cols_num, batch_size);
+        ScalarType df = func(input, output, rows_num, cols_num, batch_size);
+        printf("%7s NX=%6d NY=%6d; BATCH=%3d; DIFF=%3.15f;\n", ((fabs(df) < EPS)?"[Ok]":"[Fail]"), rows_num, cols_num, batch_size, df);
+        if (df > EPS)
+          return EXIT_FAILURE;
+    }
+
+    return EXIT_SUCCESS;
+}
+
+
+
+int main() {
+    std::cout << "*" << std::endl;
+    std::cout << "* ViennaCL test: FFT" << std::endl;
+    std::cout << "*" << std::endl;
+
+    //1D FFT tests
+    if (test_correctness("fft::direct", "../non-release/testdata/cufft.data", read_vectors_pair, &opencl_direct) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft::fft", "../non-release/testdata/cufft.data", read_vectors_pair, &opencl_fft) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft::batch::direct", "../non-release/testdata/batch_radix.data", read_vectors_pair, &opencl_direct) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft::radix2", "../non-release/testdata/radix2.data", read_vectors_pair, &opencl_radix2) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft::batch::radix2", "../non-release/testdata/batch_radix.data", read_vectors_pair, &opencl_radix2) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft::batch::fft", "../non-release/testdata/batch_radix.data", read_vectors_pair, &opencl_fft) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft::convolve::1", "../non-release/testdata/cufft.data", read_vectors_pair, &opencl_convolve) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft::convolve::2", "../non-release/testdata/radix2.data", read_vectors_pair, &opencl_convolve) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft::bluestein::1", "../non-release/testdata/cufft.data", read_vectors_pair, &opencl_bluestein) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft::bluestein::2", "../non-release/testdata/radix2.data", read_vectors_pair, &opencl_bluestein) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+
+    //2D FFT tests
+    if (test_correctness("fft:2d::radix2::sml::1_arg", 
+                         "../non-release/testdata/fft2d_radix2.data", read_matrices_pair, &opencl_2d_fft_1arg) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft:2d::direct::sml::1_arg",
+                         "../non-release/testdata/fft2d_direct.data", read_matrices_pair, &opencl_2d_fft_1arg) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft:2d::direct::big::1_arg",
+                         "../non-release/testdata/fft2d_direct_big.data", read_matrices_pair, &opencl_2d_fft_1arg) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+
+    if (test_correctness("fft:2d::radix2::sml::2_arg", 
+                         "../non-release/testdata/fft2d_radix2.data", read_matrices_pair, &opencl_2d_fft_2arg) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft:2d::direct::sml::2_arg",
+                         "../non-release/testdata/fft2d_direct.data", read_matrices_pair, &opencl_2d_fft_2arg) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    if (test_correctness("fft:2d::direct::bscalarig::2_arg", 
+                         "../non-release/testdata/fft2d_direct_big.data", read_matrices_pair, &opencl_2d_fft_2arg) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+
+
+    return EXIT_SUCCESS;
+}
diff --git a/tests/src/iterators.cpp b/tests/src/iterators.cpp
index 7f1923e..db8913c 100644
--- a/tests/src/iterators.cpp
+++ b/tests/src/iterators.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // *** System
diff --git a/tests/src/matrix.cpp b/tests/src/matrix.cpp
index 56caaab..b51c36c 100644
--- a/tests/src/matrix.cpp
+++ b/tests/src/matrix.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // *** System
@@ -101,12 +103,16 @@ template< typename NumericT, typename F, typename Epsilon >
 int test(Epsilon const& epsilon)
 {
    int retval = EXIT_SUCCESS;
+   
+   std::size_t num_rows = 121;
+   std::size_t num_cols = 103;
+   
    // --------------------------------------------------------------------------            
-   ublas::vector<NumericT> rhs(12);
+   ublas::vector<NumericT> rhs(num_rows);
    for (unsigned int i = 0; i < rhs.size(); ++i)
      rhs(i) = random<NumericT>();
    ublas::vector<NumericT> rhs2 = rhs;
-   ublas::vector<NumericT> result = ublas::scalar_vector<NumericT>(10, 3.1415);
+   ublas::vector<NumericT> result = ublas::scalar_vector<NumericT>(num_cols, 3.1415);
    ublas::vector<NumericT> result2 = result;
    ublas::vector<NumericT> rhs_trans = rhs;
    rhs_trans.resize(result.size(), true);
@@ -123,21 +129,21 @@ int test(Epsilon const& epsilon)
    viennacl::vector<NumericT> vcl_rhs_trans(rhs_trans.size());
    viennacl::vector<NumericT> vcl_result_trans(result_trans.size());
    viennacl::vector<NumericT> vcl_result(result.size()); 
-   viennacl::matrix<NumericT, F> vcl_matrix(rhs.size(), rhs.size());
+   viennacl::matrix<NumericT, F> vcl_matrix(result.size(), rhs.size());
 
-   copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
-   copy(result, vcl_result);
-   copy(matrix, vcl_matrix);
+   viennacl::copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+   viennacl::copy(result, vcl_result);
+   viennacl::copy(matrix, vcl_matrix);
    
    std::cout << "Matrix resizing (to larger)" << std::endl;
-   matrix.resize(20, 17, true);
+   matrix.resize(2*num_rows, 2*num_cols, true);
    for (unsigned int i = 0; i < matrix.size1(); ++i)
    {
       for (unsigned int j = (i<result.size() ? rhs.size() : 0); j < matrix.size2(); ++j)
          matrix(i,j) = 0;
    }
-   vcl_matrix.resize(20, 17, true);
-   copy(vcl_matrix, matrix);
+   vcl_matrix.resize(2*num_rows, 2*num_cols, true);
+   viennacl::copy(vcl_matrix, matrix);
    if( fabs(diff(matrix, vcl_matrix)) > epsilon )
    {
       std::cout << "# Error at operation: matrix resize (to larger)" << std::endl;
@@ -145,12 +151,12 @@ int test(Epsilon const& epsilon)
       return EXIT_FAILURE;
    }
    
-   matrix(12, 14) = 1.9;
-   matrix(19, 16) = 1.0;
-   matrix (13, 15) =  -9;
-   vcl_matrix(12, 14) = 1.9;
-   vcl_matrix(19, 16) = 1.0;
-   vcl_matrix (13, 15) =  -9;
+   matrix(12, 14) = NumericT(1.9);
+   matrix(19, 16) = NumericT(1.0);
+   matrix (13, 15) =  NumericT(-9);
+   vcl_matrix(12, 14) = NumericT(1.9);
+   vcl_matrix(19, 16) = NumericT(1.0);
+   vcl_matrix (13, 15) =  NumericT(-9);
    
    std::cout << "Matrix resizing (to smaller)" << std::endl;
    matrix.resize(result.size(), rhs.size(), true);
@@ -202,13 +208,18 @@ int test(Epsilon const& epsilon)
    }
    
    //reset vcl_matrix:
-   copy(matrix, vcl_matrix);
+   viennacl::copy(matrix, vcl_matrix);
    
    // --------------------------------------------------------------------------            
    std::cout << "Matrix-Vector product" << std::endl;
    result     = viennacl::linalg::prod(matrix, rhs);
    vcl_result = viennacl::linalg::prod(vcl_matrix, vcl_rhs);
    
+   for (std::size_t i=0; i<result.size(); ++i)
+   {
+     std::cout << rhs(i) << ", " << vcl_rhs(i) << ", " << result(i) << ", " << vcl_result(i) << std::endl; 
+   }
+   
    if( fabs(diff(result, vcl_result)) > epsilon )
    {
       std::cout << "# Error at operation: matrix-vector product" << std::endl;
@@ -217,10 +228,10 @@ int test(Epsilon const& epsilon)
    }
    // --------------------------------------------------------------------------            
    std::cout << "Matrix-Vector product with scaled add" << std::endl;
-   NumericT alpha(2.786);
-   NumericT beta(1.432);
-   copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
-   copy(result.begin(), result.end(), vcl_result.begin());
+   NumericT alpha = static_cast<NumericT>(2.786);
+   NumericT beta = static_cast<NumericT>(1.432);
+   viennacl::copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+   viennacl::copy(result.begin(), result.end(), vcl_result.begin());
 
    result     = alpha * viennacl::linalg::prod(matrix, rhs) + beta * result;
    vcl_result = alpha * viennacl::linalg::prod(vcl_matrix, vcl_rhs) + beta * vcl_result;
@@ -233,8 +244,8 @@ int test(Epsilon const& epsilon)
    }
    // --------------------------------------------------------------------------            
 
-   copy(rhs_trans.begin(), rhs_trans.end(), vcl_rhs_trans.begin());
-   copy(result_trans.begin(), result_trans.end(), vcl_result_trans.begin());
+   viennacl::copy(rhs_trans.begin(), rhs_trans.end(), vcl_rhs_trans.begin());
+   viennacl::copy(result_trans.begin(), result_trans.end(), vcl_result_trans.begin());
 
    std::cout << "Transposed Matrix-Vector product" << std::endl;
    result_trans     = alpha * viennacl::linalg::prod(trans(matrix), rhs_trans);  
@@ -284,8 +295,8 @@ int test(Epsilon const& epsilon)
    for (unsigned int i = 0; i < matrix.size1(); ++i)
       matrix(i,i) = static_cast<NumericT>(3) + random<NumericT>();
 
-   copy(matrix, vcl_matrix);
-   copy(rhs, vcl_rhs);
+   viennacl::copy(matrix, vcl_matrix);
+   viennacl::copy(rhs, vcl_rhs);
 
    //upper triangular:
    std::cout << "Upper triangular solver" << std::endl;
@@ -300,7 +311,7 @@ int test(Epsilon const& epsilon)
 
    //upper unit triangular:
    std::cout << "Upper unit triangular solver" << std::endl;
-   copy(rhs, vcl_rhs);
+   viennacl::copy(rhs, vcl_rhs);
    result = ublas::solve(matrix, rhs, ublas::unit_upper_tag());
    vcl_result = viennacl::linalg::solve(vcl_matrix, vcl_rhs, viennacl::linalg::unit_upper_tag());
    if( fabs(diff(result, vcl_result)) > epsilon )
@@ -312,7 +323,7 @@ int test(Epsilon const& epsilon)
 
    //lower triangular:
    std::cout << "Lower triangular solver" << std::endl;
-   copy(rhs, vcl_rhs);
+   viennacl::copy(rhs, vcl_rhs);
    result = ublas::solve(matrix, rhs, ublas::lower_tag());
    vcl_result = viennacl::linalg::solve(vcl_matrix, vcl_rhs, viennacl::linalg::lower_tag());
    if( fabs(diff(result, vcl_result)) > epsilon )
@@ -324,7 +335,7 @@ int test(Epsilon const& epsilon)
 
    //lower unit triangular:
    std::cout << "Lower unit triangular solver" << std::endl;
-   copy(rhs, vcl_rhs);
+   viennacl::copy(rhs, vcl_rhs);
    result = ublas::solve(matrix, rhs, ublas::unit_lower_tag());
    vcl_result = viennacl::linalg::solve(vcl_matrix, vcl_rhs, viennacl::linalg::unit_lower_tag());
    if( fabs(diff(result, vcl_result)) > epsilon )
@@ -340,7 +351,7 @@ int test(Epsilon const& epsilon)
 
    //transposed upper triangular:
    std::cout << "Transposed upper triangular solver" << std::endl;
-   copy(rhs, vcl_rhs);
+   viennacl::copy(rhs, vcl_rhs);
    result = ublas::solve(trans(matrix), rhs, ublas::upper_tag());
    vcl_result = viennacl::linalg::solve(trans(vcl_matrix), vcl_rhs, viennacl::linalg::upper_tag());
    if( fabs(diff(result, vcl_result)) > epsilon )
@@ -352,7 +363,7 @@ int test(Epsilon const& epsilon)
 
    //transposed upper unit triangular:
    std::cout << "Transposed unit upper triangular solver" << std::endl;
-   copy(rhs, vcl_rhs);
+   viennacl::copy(rhs, vcl_rhs);
    result = ublas::solve(trans(matrix), rhs, ublas::unit_upper_tag());
    vcl_result = viennacl::linalg::solve(trans(vcl_matrix), vcl_rhs, viennacl::linalg::unit_upper_tag());
    if( fabs(diff(result, vcl_result)) > epsilon )
@@ -364,7 +375,7 @@ int test(Epsilon const& epsilon)
 
    //transposed lower triangular:
    std::cout << "Transposed lower triangular solver" << std::endl;
-   copy(rhs, vcl_rhs);
+   viennacl::copy(rhs, vcl_rhs);
    result = ublas::solve(trans(matrix), rhs, ublas::lower_tag());
    vcl_result = viennacl::linalg::solve(trans(vcl_matrix), vcl_rhs, viennacl::linalg::lower_tag());
    if( fabs(diff(result, vcl_result)) > epsilon )
@@ -376,7 +387,7 @@ int test(Epsilon const& epsilon)
 
    //transposed lower unit triangular:
    std::cout << "Transposed unit lower triangular solver" << std::endl;
-   copy(rhs, vcl_rhs);
+   viennacl::copy(rhs, vcl_rhs);
    result = ublas::solve(trans(matrix), rhs, ublas::unit_lower_tag());
    vcl_result = viennacl::linalg::solve(trans(vcl_matrix), vcl_rhs, viennacl::linalg::unit_lower_tag());
    if( fabs(diff(result, vcl_result)) > epsilon )
@@ -395,19 +406,19 @@ int test(Epsilon const& epsilon)
    viennacl::matrix<NumericT, F> vcl_square_matrix(lu_dim, lu_dim);
    viennacl::vector<NumericT> vcl_lu_rhs(lu_dim);
 
-   for (size_t i=0; i<lu_dim; ++i)
-     for (size_t j=0; j<lu_dim; ++j)
-       square_matrix(i,j) = -0.5 * random<NumericT>();
+   for (std::size_t i=0; i<lu_dim; ++i)
+     for (std::size_t j=0; j<lu_dim; ++j)
+       square_matrix(i,j) = -static_cast<NumericT>(0.5) * random<NumericT>();
 
    //put some more weight on diagonal elements:
-   for (size_t j=0; j<lu_dim; ++j)
+   for (std::size_t j=0; j<lu_dim; ++j)
    {
-     square_matrix(j,j) = 20.0 + random<NumericT>();
+     square_matrix(j,j) = static_cast<NumericT>(20.0) + random<NumericT>();
      lu_rhs(j) = random<NumericT>();
    }
    
-   copy(square_matrix, vcl_square_matrix);
-   copy(lu_rhs, vcl_lu_rhs);
+   viennacl::copy(square_matrix, vcl_square_matrix);
+   viennacl::copy(lu_rhs, vcl_lu_rhs);
    
    //ublas::
    ublas::lu_factorize(square_matrix);
diff --git a/tests/src/matrix_range.cpp b/tests/src/matrix_range.cpp
new file mode 100644
index 0000000..4c1e816
--- /dev/null
+++ b/tests/src/matrix_range.cpp
@@ -0,0 +1,297 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#define VIENNACL_HAVE_UBLAS
+//#define NDEBUG
+//#define VIENNACL_BUILD_INFO
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cmath>
+#include <algorithm>
+#include <stdio.h>
+#include <time.h>
+//#include "../benchmarks/benchmark-utils.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+/*#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/linalg/norm_2.hpp"
+#include "viennacl/io/matrix_market.hpp"*/
+#include "viennacl/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/io.hpp"
+
+
+
+template <typename MatrixType, typename VCLMatrixType>
+bool check_for_equality(MatrixType const & ublas_A, VCLMatrixType const & vcl_A)
+{
+  typedef typename MatrixType::value_type   value_type;
+  
+  boost::numeric::ublas::matrix<value_type> vcl_A_cpu(vcl_A.size1(), vcl_A.size2());
+  viennacl::copy(vcl_A, vcl_A_cpu);
+  
+  for (std::size_t i=0; i<ublas_A.size1(); ++i)
+  {
+    for (std::size_t j=0; j<ublas_A.size2(); ++j)
+    {
+      if (ublas_A(i,j) != vcl_A_cpu(i,j))
+      {
+        std::cout << "Error at index (" << i << ", " << j << "): " << ublas_A(i,j) << " vs " << vcl_A_cpu(i,j) << std::endl;
+      }
+    }
+  }
+  return true;
+}
+
+
+           
+template <typename T, typename ScalarType>
+int run_test()
+{
+    //typedef float               ScalarType;
+    typedef boost::numeric::ublas::matrix<ScalarType>       MatrixType;
+    
+    typedef viennacl::matrix<ScalarType, viennacl::row_major>    VCLMatrixType;
+    
+    std::size_t dim_large = 51;
+    std::size_t dim_small = 37;
+    
+    //setup ublas objects:
+    MatrixType ublas_A(dim_large, dim_large);
+    for (std::size_t i=0; i<ublas_A.size1(); ++i)
+      for (std::size_t j=0; j<ublas_A.size2(); ++j)
+        ublas_A(i,j) = (i+1) + (j+1)*(i+1);
+
+    MatrixType ublas_B(dim_small, dim_small);
+    for (std::size_t i=0; i<ublas_B.size1(); ++i)
+      for (std::size_t j=0; j<ublas_B.size2(); ++j)
+        ublas_B(i,j) = (i+1) + (j+1)*(i+1);
+
+    MatrixType ublas_C(dim_large, dim_small);
+    for (std::size_t i=0; i<ublas_C.size1(); ++i)
+      for (std::size_t j=0; j<ublas_C.size2(); ++j)
+        ublas_C(i,j) = (j+2) + (j+1)*(i+1);
+
+    MatrixType ublas_D(dim_small, dim_large);
+    for (std::size_t i=0; i<ublas_D.size1(); ++i)
+      for (std::size_t j=0; j<ublas_D.size2(); ++j)
+        ublas_D(i,j) = (j+2) + (j+1)*(i+1);
+      
+    boost::numeric::ublas::range ublas_r1(0, dim_small);
+    boost::numeric::ublas::range ublas_r2(dim_large - dim_small, dim_large);
+    boost::numeric::ublas::matrix_range<MatrixType> ublas_A_sub1(ublas_A, ublas_r1, ublas_r1);
+    boost::numeric::ublas::matrix_range<MatrixType> ublas_A_sub2(ublas_A, ublas_r2, ublas_r2);
+
+    boost::numeric::ublas::matrix_range<MatrixType> ublas_C_sub(ublas_C, ublas_r1, ublas_r1);
+    boost::numeric::ublas::matrix_range<MatrixType> ublas_D_sub(ublas_D, ublas_r1, ublas_r1);
+
+    //Setup ViennaCL objects    
+    VCLMatrixType vcl_A(dim_large, dim_large);
+    viennacl::copy(ublas_A, vcl_A);
+    VCLMatrixType vcl_B(dim_small, dim_small);
+    viennacl::copy(ublas_B, vcl_B);
+    VCLMatrixType vcl_C(dim_large, dim_small);
+    viennacl::copy(ublas_C, vcl_C);
+    VCLMatrixType vcl_D(dim_small, dim_large);
+    viennacl::copy(ublas_D, vcl_D);
+    
+    viennacl::range vcl_r1(0, dim_small);
+    viennacl::range vcl_r2(dim_large - dim_small, dim_large);
+    viennacl::matrix_range<VCLMatrixType>   vcl_A_sub1(vcl_A, vcl_r1, vcl_r1);
+    viennacl::matrix_range<VCLMatrixType>   vcl_A_sub2(vcl_A, vcl_r2, vcl_r2);
+    
+    viennacl::matrix_range<VCLMatrixType>   vcl_C_sub(vcl_C, vcl_r1, vcl_r1);
+    viennacl::matrix_range<VCLMatrixType>   vcl_D_sub(vcl_D, vcl_r1, vcl_r1);
+    
+    std::cout << std::endl;
+    std::cout << "//" << std::endl;
+    std::cout << "////////// Test 1: Copy to GPU //////////" << std::endl;
+    std::cout << "//" << std::endl;
+    
+    ublas_A_sub1 = ublas_B;
+    viennacl::copy(ublas_B, vcl_A_sub1);
+    std::cout << "Testing upper left copy to A... ";
+    if (check_for_equality(ublas_A, vcl_A))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+    
+    
+    ublas_A_sub2 = ublas_B;
+    viennacl::copy(ublas_B, vcl_A_sub2);
+    std::cout << "Testing lower right copy to A... ";
+    if (check_for_equality(ublas_A, vcl_A))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+    
+    
+    
+    ublas_C_sub = ublas_B;
+    viennacl::copy(ublas_B, vcl_C_sub);
+    std::cout << "Testing upper copy to C... ";
+    if (check_for_equality(ublas_C, vcl_C))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+
+    
+    ublas_D_sub = ublas_B;
+    viennacl::copy(ublas_B, vcl_D_sub);
+    std::cout << "Testing left copy to D... ";
+    if (check_for_equality(ublas_D, vcl_D))
+      std::cout << "PASSED!" << std::endl;
+    else
+      std::cout << std::endl << "TEST failed!";
+    
+    std::cout << std::endl;
+    std::cout << "//" << std::endl;
+    std::cout << "////////// Test 2: Copy from GPU //////////" << std::endl;
+    std::cout << "//" << std::endl;
+    
+    std::cout << "Testing upper left copy to A... ";
+    if (check_for_equality(ublas_A_sub1, vcl_A_sub1))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+    
+    std::cout << "Testing lower right copy to A... ";
+    if (check_for_equality(ublas_A_sub2, vcl_A_sub2))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+    
+    std::cout << "Testing upper copy to C... ";
+    if (check_for_equality(ublas_C_sub, vcl_C_sub))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+
+    std::cout << "Testing left copy to D... ";
+    if (check_for_equality(ublas_D_sub, vcl_D_sub))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+    
+    
+    std::cout << "//" << std::endl;
+    std::cout << "////////// Test 2: Inplace add //////////" << std::endl;
+    std::cout << "//" << std::endl;
+    viennacl::copy(ublas_A_sub2, vcl_A_sub2);
+    
+    ublas_A_sub2 += ublas_A_sub2;
+    vcl_A_sub2 += vcl_A_sub2;
+
+    if (check_for_equality(ublas_A_sub2, vcl_A_sub2))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+
+    std::cout << "Inplace add to matrix: ";
+    ublas_B += ublas_A_sub2;
+    vcl_B += vcl_A_sub2;
+
+    if (check_for_equality(ublas_A, vcl_A))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+
+    std::cout << "Inplace add of prod(): ";
+    ublas_A_sub1 += prod(ublas_C_sub, ublas_D_sub);
+    vcl_A_sub1 += viennacl::linalg::prod(vcl_C_sub, vcl_D_sub);
+
+    if (check_for_equality(ublas_A, vcl_A))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+
+
+    return EXIT_SUCCESS;
+}    
+
+int main (int argc, const char * argv[])
+{
+  std::cout << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << "## Test :: Matrix Range" << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << std::endl;
+   
+  std::cout << "# Testing setup:" << std::endl;
+  std::cout << "  eps:     " << 0 << std::endl;
+  std::cout << "  numeric: float" << std::endl;
+  if (run_test<viennacl::row_major, float>() != EXIT_SUCCESS)
+    return EXIT_FAILURE;
+  if (run_test<viennacl::column_major, float>() != EXIT_SUCCESS)
+    return EXIT_FAILURE;
+  
+  
+  if( viennacl::ocl::current_device().double_support() )
+  {
+    std::cout << "# Testing setup:" << std::endl;
+    std::cout << "  eps:     " << 0 << std::endl;
+    std::cout << "  numeric: double" << std::endl;
+    
+    if (run_test<viennacl::row_major, double>() != EXIT_SUCCESS)
+      return EXIT_FAILURE;
+    if (run_test<viennacl::column_major, double>() != EXIT_SUCCESS)
+      return EXIT_FAILURE;
+  }
+
+  return EXIT_SUCCESS;
+}
+
diff --git a/tests/src/scalar.cpp b/tests/src/scalar.cpp
index b884429..5475d37 100644
--- a/tests/src/scalar.cpp
+++ b/tests/src/scalar.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // *** System
diff --git a/tests/src/sparse.cpp b/tests/src/sparse.cpp
index 4a23b41..85298c5 100644
--- a/tests/src/sparse.cpp
+++ b/tests/src/sparse.cpp
@@ -1,18 +1,22 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#define NDEBUG
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
 
 //
 // *** System
diff --git a/tests/src/structured-matrices.cpp b/tests/src/structured-matrices.cpp
new file mode 100644
index 0000000..2b240b8
--- /dev/null
+++ b/tests/src/structured-matrices.cpp
@@ -0,0 +1,613 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <iostream>
+#include <vector>
+#include <cmath>
+#include <complex>
+#include <fstream>
+
+//#define VIENNACL_BUILD_INFO
+
+#include "viennacl/toeplitz_matrix.hpp"
+#include "viennacl/circulant_matrix.hpp"
+#include "viennacl/vandermonde_matrix.hpp"
+#include "viennacl/hankel_matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+
+#include "viennacl/fft.hpp"
+
+//
+// A simple dense matrix class (in order to avoid an unnecessary boost dependency)
+//
+template <typename T>
+class dense_matrix
+{
+  public:
+    dense_matrix(std::size_t rows, std::size_t cols) : elements_(rows * cols), rows_(rows), cols_(cols) {}
+    
+    T & operator()(std::size_t i, std::size_t j) { return elements_[i*cols_ + j]; }
+    T const & operator()(std::size_t i, std::size_t j) const { return elements_[i*cols_ + j]; }
+    
+    std::size_t size1() const { return rows_; }
+    std::size_t size2() const { return cols_; }
+
+    dense_matrix & operator+=(dense_matrix const & other)
+    {
+      for(std::size_t i = 0; i < other.size1(); i++) 
+        for(std::size_t j = 0; j < other.size2(); j++) 
+          elements_[i*cols_ + j] = other.elements_[i*cols_+j];
+      return *this;
+    }
+
+  private:
+    std::vector<T> elements_;
+    std::size_t rows_;
+    std::size_t cols_;
+};
+
+template <typename T>
+std::ostream & operator<<(std::ostream & os, dense_matrix<T> const & mat)
+{
+  std::cout << "[" << mat.size1() << "," << mat.size2() << "](";
+  for (std::size_t i=0; i<mat.size1(); ++i)
+  {
+    std::cout << "(";
+    for (std::size_t j=0; j<mat.size2(); ++j)
+      std::cout << mat(i,j) << ",";
+    std::cout << ")";
+  }
+  
+  return os;
+}
+
+
+template <typename ScalarType>
+ScalarType diff(dense_matrix<ScalarType> const & m1, dense_matrix<ScalarType> const & m2) 
+{
+    ScalarType df = 0.0;
+    ScalarType d1 = 0;
+    ScalarType d2 = 0;
+
+    for(std::size_t i = 0; i < m1.size1(); i++) 
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+      {
+        df += (m1(i,j) - m2(i,j)) * (m1(i,j) - m2(i,j));
+        d1 += m1(i,j) * m1(i,j);
+        d2 += m2(i,j) * m2(i,j);
+      }
+
+    if ( (d1 == 0) && (d2 == 0) )
+      return 0;
+    
+    return sqrt(df / fmax(d1, d2));
+}
+
+
+template <typename ScalarType>
+ScalarType diff(std::vector<ScalarType>& vec, std::vector<ScalarType>& ref) 
+{
+    ScalarType df = 0.0;
+    ScalarType norm_ref = 0;
+
+    for(std::size_t i = 0; i < vec.size(); i++) 
+    {
+        df = df + pow(vec[i] - ref[i], 2);
+        norm_ref += ref[i] * ref[i];
+    }
+
+    return sqrt(df / norm_ref) ;
+}
+
+template <typename ScalarType>
+ScalarType diff_max(std::vector<ScalarType>& vec, std::vector<ScalarType>& ref) 
+{
+  ScalarType df = 0.0;
+  ScalarType mx = 0.0;
+  ScalarType norm_max = 0;
+  
+  for (std::size_t i = 0; i < vec.size(); i++) 
+  {
+    df = fmax(fabs(vec[i] - ref[i]), df);
+    mx = fmax(fabs(vec[i]), mx);
+    
+    if (mx > 0)
+    {
+      if (norm_max < df / mx)
+        norm_max = df / mx;
+    }
+  }
+  
+  return norm_max;
+}
+
+
+template <typename ScalarType>
+void transpose_test()
+{
+    int w = 5, h = 7;
+    std::vector<ScalarType> s_normal(2 * w * h);
+    viennacl::matrix<ScalarType> normal(w, 2 * h);
+    viennacl::matrix<ScalarType> transp(h, 2 * w);
+
+    for(unsigned int i = 0; i < s_normal.size(); i+=2) {
+        s_normal[i] = i;
+        s_normal[i+1] = i;
+    }
+    viennacl::fast_copy(&s_normal[0], &s_normal[0] + s_normal.size(), normal);
+    std::cout << normal << std::endl;
+    viennacl::detail::fft::transpose(normal);
+    std::cout << normal << std::endl;
+}
+
+
+
+template <typename ScalarType>
+int toeplitz_test(ScalarType epsilon) 
+{
+    std::size_t TOEPLITZ_SIZE = 47;
+    viennacl::toeplitz_matrix<ScalarType> vcl_toeplitz1(TOEPLITZ_SIZE, TOEPLITZ_SIZE);
+    viennacl::toeplitz_matrix<ScalarType> vcl_toeplitz2(TOEPLITZ_SIZE, TOEPLITZ_SIZE);
+
+    viennacl::vector<ScalarType> vcl_input(TOEPLITZ_SIZE);
+    viennacl::vector<ScalarType> vcl_result(TOEPLITZ_SIZE);
+
+    std::vector<ScalarType> input_ref(TOEPLITZ_SIZE);
+    std::vector<ScalarType> result_ref(TOEPLITZ_SIZE);
+    
+    dense_matrix<ScalarType> m1(TOEPLITZ_SIZE, TOEPLITZ_SIZE);
+    dense_matrix<ScalarType> m2(TOEPLITZ_SIZE, TOEPLITZ_SIZE);
+
+    for(std::size_t i = 0; i < TOEPLITZ_SIZE; i++) 
+      for(std::size_t j = 0; j < TOEPLITZ_SIZE; j++) 
+      {
+        m1(i,j) = static_cast<ScalarType>(i) - static_cast<ScalarType>(j);
+        m2(i,j) = m1(i,j) * m1(i,j) + 1;
+      }
+
+    for(std::size_t i = 0; i < TOEPLITZ_SIZE; i++)
+      input_ref[i] = ScalarType(i);
+
+    // Copy to ViennaCL
+    viennacl::copy(m1, vcl_toeplitz1);
+    viennacl::copy(m2, vcl_toeplitz2);
+    viennacl::copy(input_ref, vcl_input);
+    
+    //
+    // Matrix-Vector product:
+    //
+    vcl_result = viennacl::linalg::prod(vcl_toeplitz1, vcl_input);
+    
+    for(std::size_t i = 0; i < m1.size1(); i++)     //reference calculation
+    {
+      ScalarType entry = 0;
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+        entry += m1(i,j) * input_ref[j];
+      
+      result_ref[i] = entry;
+    }
+    
+    viennacl::copy(vcl_result, input_ref);
+    std::cout << "Matrix-Vector Product: " << diff_max(input_ref, result_ref);
+    if (diff_max(input_ref, result_ref) < epsilon)
+      std::cout << " [OK]" << std::endl;
+    else
+    {
+      for (std::size_t i=0; i<input_ref.size(); ++i)
+        std::cout << "Should: " << result_ref[i] << ", is: " << input_ref[i] << std::endl;
+      std::cout << " [FAILED]" << std::endl;
+      return EXIT_FAILURE;
+    }
+    
+    
+    //
+    // Matrix addition:
+    //
+    vcl_toeplitz1 += vcl_toeplitz2;
+
+    for(std::size_t i = 0; i < m1.size1(); i++)    //reference calculation
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+        m1(i,j) += m2(i,j);
+    
+    viennacl::copy(vcl_toeplitz1, m2);
+    std::cout << "Matrix Addition: " << diff(m1, m2);
+    if (diff(m1, m2) < epsilon)
+      std::cout << " [OK]" << std::endl;
+    else
+    {
+      std::cout << " [FAILED]" << std::endl;
+      return EXIT_FAILURE;
+    }
+    
+    //
+    // Per-Element access:
+    //
+    vcl_toeplitz1(2,4) = 42;
+    
+    for (std::size_t i=0; i<m1.size1(); ++i)    //reference calculation
+    {
+      if (i + 2 < m1.size2())
+        m1(i, i+2) = 42;
+    }
+
+    viennacl::copy(vcl_toeplitz1, m2);
+    std::cout << "Element manipulation: " << diff(m1, m2);
+    if (diff(m1, m2) < epsilon)
+      std::cout << " [OK]" << std::endl;
+    else
+    {
+      std::cout << " [FAILED]" << std::endl;
+      return EXIT_FAILURE;
+    }
+    
+    return EXIT_SUCCESS;
+}
+
+template <typename ScalarType>
+int circulant_test(ScalarType epsilon) 
+{
+    std::size_t CIRCULANT_SIZE = 53;
+    viennacl::circulant_matrix<ScalarType> vcl_circulant1(CIRCULANT_SIZE, CIRCULANT_SIZE);
+    viennacl::circulant_matrix<ScalarType> vcl_circulant2(CIRCULANT_SIZE, CIRCULANT_SIZE);
+
+    viennacl::vector<ScalarType> vcl_input(CIRCULANT_SIZE);
+    viennacl::vector<ScalarType> vcl_result(CIRCULANT_SIZE);
+
+    std::vector<ScalarType> input_ref(CIRCULANT_SIZE);
+    std::vector<ScalarType> result_ref(CIRCULANT_SIZE);
+    
+    dense_matrix<ScalarType> m1(vcl_circulant1.size1(), vcl_circulant1.size2());
+    dense_matrix<ScalarType> m2(vcl_circulant1.size1(), vcl_circulant1.size2());
+
+    for(std::size_t i = 0; i < m1.size1(); i++) 
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+      {
+        m1(i,j) = static_cast<ScalarType>((i - j + m1.size1()) % m1.size1());
+        m2(i,j) = m1(i,j) * m1(i,j) + ScalarType(1);
+      }
+
+    for(std::size_t i = 0; i < input_ref.size(); i++)
+      input_ref[i] = ScalarType(i);
+    
+    // Copy to ViennaCL
+    viennacl::copy(m1, vcl_circulant1);
+    viennacl::copy(m2, vcl_circulant2);
+    viennacl::copy(input_ref, vcl_input);
+    
+    //
+    // Matrix-Vector product:
+    //
+    vcl_result = viennacl::linalg::prod(vcl_circulant1, vcl_input);
+    
+    for(std::size_t i = 0; i < m1.size1(); i++)     //reference calculation
+    {
+      ScalarType entry = 0;
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+        entry += m1(i,j) * input_ref[j];
+      
+      result_ref[i] = entry;
+    }
+    
+    viennacl::copy(vcl_result, input_ref);
+    std::cout << "Matrix-Vector Product: " << diff_max(input_ref, result_ref);
+    if (diff_max(input_ref, result_ref) < epsilon)
+      std::cout << " [OK]" << std::endl;
+    else
+    {
+      for (std::size_t i=0; i<input_ref.size(); ++i)
+        std::cout << "Should: " << result_ref[i] << ", is: " << input_ref[i] << std::endl;
+      std::cout << " [FAILED]" << std::endl;
+      return EXIT_FAILURE;
+    }
+    
+    
+    //
+    // Matrix addition:
+    //
+    vcl_circulant1 += vcl_circulant2;
+
+    for(std::size_t i = 0; i < m1.size1(); i++)    //reference calculation
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+        m1(i,j) += m2(i,j);
+    
+    viennacl::copy(vcl_circulant1, m2);
+    std::cout << "Matrix Addition: " << diff(m1, m2);
+    if (diff(m1, m2) < epsilon)
+      std::cout << " [OK]" << std::endl;
+    else
+    {
+      std::cout << " [FAILED]" << std::endl;
+      return EXIT_FAILURE;
+    }
+    
+    //
+    // Per-Element access:
+    //
+    vcl_circulant1(4,2) = 42;
+    
+    for(std::size_t i = 0; i < m1.size1(); i++)    //reference calculation
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+      {
+        if ((i - j + m1.size1()) % m1.size1() == 2)
+          m1(i, j) = 42;
+      }
+
+    viennacl::copy(vcl_circulant1, m2);
+    std::cout << "Element manipulation: " << diff(m1, m2);
+    if (diff(m1, m2) < epsilon)
+      std::cout << " [OK]" << std::endl;
+    else
+    {
+      std::cout << " [FAILED]" << std::endl;
+      return EXIT_FAILURE;
+    }
+    
+    return EXIT_SUCCESS;
+}
+
+template <typename ScalarType>
+int vandermonde_test(ScalarType epsilon) 
+{
+    std::size_t VANDERMONDE_SIZE = 61;
+
+    viennacl::vandermonde_matrix<ScalarType> vcl_vandermonde1(VANDERMONDE_SIZE, VANDERMONDE_SIZE);
+    viennacl::vandermonde_matrix<ScalarType> vcl_vandermonde2(VANDERMONDE_SIZE, VANDERMONDE_SIZE);
+
+    viennacl::vector<ScalarType> vcl_input(VANDERMONDE_SIZE);
+    viennacl::vector<ScalarType> vcl_result(VANDERMONDE_SIZE);
+
+    std::vector<ScalarType> input_ref(VANDERMONDE_SIZE);
+    std::vector<ScalarType> result_ref(VANDERMONDE_SIZE);
+    
+    dense_matrix<ScalarType> m1(vcl_vandermonde1.size1(), vcl_vandermonde1.size2());
+    dense_matrix<ScalarType> m2(m1.size1(), m1.size2());
+
+    for(std::size_t i = 0; i < m1.size1(); i++) 
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+      {
+        m1(i,j) = pow(ScalarType(1.0 + i/1000.0), ScalarType(j));
+        m2(i,j) = pow(ScalarType(1.0 - i/2000.0), ScalarType(j));
+      }
+
+    for(std::size_t i = 0; i < input_ref.size(); i++)
+      input_ref[i] = ScalarType(i);
+    
+    // Copy to ViennaCL
+    viennacl::copy(m1, vcl_vandermonde1);
+    viennacl::copy(m2, vcl_vandermonde2);
+    viennacl::copy(input_ref, vcl_input);
+    
+    //
+    // Matrix-Vector product:
+    //
+    vcl_result = viennacl::linalg::prod(vcl_vandermonde1, vcl_input);
+    
+    for(std::size_t i = 0; i < m1.size1(); i++)     //reference calculation
+    {
+      ScalarType entry = 0;
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+        entry += m1(i,j) * input_ref[j];
+      
+      result_ref[i] = entry;
+    }
+    
+    viennacl::copy(vcl_result, input_ref);
+    std::cout << "Matrix-Vector Product: " << diff_max(input_ref, result_ref);
+    if (diff_max(input_ref, result_ref) < epsilon)
+      std::cout << " [OK]" << std::endl;
+    else
+    {
+      for (std::size_t i=0; i<input_ref.size(); ++i)
+        std::cout << "Should: " << result_ref[i] << ", is: " << input_ref[i] << std::endl;
+      std::cout << " [FAILED]" << std::endl;
+      return EXIT_FAILURE;
+    }
+    
+    
+    //
+    // Note: Matrix addition does not make sense for a Vandermonde matrix
+    //
+
+    
+    //
+    // Per-Element access:
+    //
+    vcl_vandermonde1(4) = 1.0001;
+    
+    for(std::size_t j = 0; j < m1.size2(); j++) 
+    {
+      m1(4, j) = pow(ScalarType(1.0001), ScalarType(j));
+    }
+
+    viennacl::copy(vcl_vandermonde1, m2);
+    std::cout << "Element manipulation: " << diff(m1, m2);
+    if (diff(m1, m2) < epsilon)
+      std::cout << " [OK]" << std::endl;
+    else
+    {
+      std::cout << " [FAILED]" << std::endl;
+      return EXIT_FAILURE;
+    }
+    
+    return EXIT_SUCCESS;
+}
+
+template <typename ScalarType>
+int hankel_test(ScalarType epsilon)
+{
+    std::size_t HANKEL_SIZE = 7;
+    viennacl::hankel_matrix<ScalarType> vcl_hankel1(HANKEL_SIZE, HANKEL_SIZE);
+    viennacl::hankel_matrix<ScalarType> vcl_hankel2(HANKEL_SIZE, HANKEL_SIZE);
+
+    viennacl::vector<ScalarType> vcl_input(HANKEL_SIZE);
+    viennacl::vector<ScalarType> vcl_result(HANKEL_SIZE);
+
+    std::vector<ScalarType> input_ref(HANKEL_SIZE);
+    std::vector<ScalarType> result_ref(HANKEL_SIZE);
+    
+    dense_matrix<ScalarType> m1(vcl_hankel1.size1(), vcl_hankel1.size2());
+    dense_matrix<ScalarType> m2(m1.size1(), m1.size2());
+
+    for(std::size_t i = 0; i < m1.size1(); i++) 
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+      {
+        m1(i,j) = static_cast<ScalarType>((i + j) % (2 * m1.size1()));
+        m2(i,j) = m1(i,j) * m1(i,j) + ScalarType(1);
+      }
+
+    for(std::size_t i = 0; i < input_ref.size(); i++)
+      input_ref[i] = ScalarType(i);
+    
+    // Copy to ViennaCL
+    viennacl::copy(m1, vcl_hankel1);
+    viennacl::copy(m2, vcl_hankel2);
+    viennacl::copy(input_ref, vcl_input);
+    
+    //
+    // Matrix-Vector product:
+    //
+    vcl_result = viennacl::linalg::prod(vcl_hankel1, vcl_input);
+    
+    for(std::size_t i = 0; i < m1.size1(); i++)     //reference calculation
+    {
+      ScalarType entry = 0;
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+        entry += m1(i,j) * input_ref[j];
+      
+      result_ref[i] = entry;
+    }
+    
+    viennacl::copy(vcl_result, input_ref);
+    std::cout << "Matrix-Vector Product: " << diff_max(input_ref, result_ref);
+    if (diff_max(input_ref, result_ref) < epsilon)
+      std::cout << " [OK]" << std::endl;
+    else
+    {
+      for (std::size_t i=0; i<input_ref.size(); ++i)
+        std::cout << "Should: " << result_ref[i] << ", is: " << input_ref[i] << std::endl;
+      std::cout << " [FAILED]" << std::endl;
+      return EXIT_FAILURE;
+    }
+    
+    
+    //
+    // Matrix addition:
+    //
+    vcl_hankel1 += vcl_hankel2;
+
+    for(std::size_t i = 0; i < m1.size1(); i++)    //reference calculation
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+        m1(i,j) += m2(i,j);
+    
+    viennacl::copy(vcl_hankel1, m2);
+    std::cout << "Matrix Addition: " << diff(m1, m2);
+    if (diff(m1, m2) < epsilon)
+      std::cout << " [OK]" << std::endl;
+    else
+    {
+      std::cout << " [FAILED]" << std::endl;
+      return EXIT_FAILURE;
+    }
+    
+    //
+    // Per-Element access:
+    //
+    vcl_hankel1(4,2) = 42;
+    
+    for(std::size_t i = 0; i < m1.size1(); i++)    //reference calculation
+      for(std::size_t j = 0; j < m1.size2(); j++) 
+      {
+        if ((i + j) % (2*m1.size1()) == 6)
+          m1(i, j) = 42;
+      }
+
+    viennacl::copy(vcl_hankel1, m2);
+    std::cout << "Element manipulation: " << diff(m1, m2);
+    if (diff(m1, m2) < epsilon)
+      std::cout << " [OK]" << std::endl;
+    else
+    {
+      std::cout << " [FAILED]" << std::endl;
+      return EXIT_FAILURE;
+    }
+    
+    return EXIT_SUCCESS;
+}
+
+int main() 
+{
+  std::cout << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << "## Test :: Structured Matrices" << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << std::endl;
+
+  double eps = 1e-3;
+  
+  std::cout << "# Testing setup:" << std::endl;
+  std::cout << "  eps:     " << eps << std::endl;
+  std::cout << "  numeric: float" << std::endl;
+  std::cout << std::endl;
+  std::cout << " -- Vandermonde matrix -- " << std::endl;
+  if (vandermonde_test<float>(static_cast<float>(eps)) == EXIT_FAILURE)
+    return EXIT_FAILURE;
+  
+  std::cout << " -- Circulant matrix -- " << std::endl;
+  if (circulant_test<float>(static_cast<float>(eps)) == EXIT_FAILURE)
+    return EXIT_FAILURE;
+  
+  std::cout << " -- Toeplitz matrix -- " << std::endl;
+  if (toeplitz_test<float>(static_cast<float>(eps)) == EXIT_FAILURE)
+    return EXIT_FAILURE;
+  
+  std::cout << " -- Hankel matrix -- " << std::endl;
+  if (hankel_test<float>(static_cast<float>(eps)) == EXIT_FAILURE)
+    return EXIT_FAILURE;
+  
+  
+  std::cout << std::endl;
+
+  if( viennacl::ocl::current_device().double_support() )
+  {
+    eps = 1e-10;
+    
+    std::cout << std::endl;
+    std::cout << "# Testing setup:" << std::endl;
+    std::cout << "  eps:     " << eps << std::endl;
+    std::cout << "  numeric: double" << std::endl;
+    std::cout << std::endl;
+    
+    std::cout << " -- Vandermonde matrix -- " << std::endl;
+    if (vandermonde_test<double>(eps) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    
+    std::cout << " -- Circulant matrix -- " << std::endl;
+    if (circulant_test<double>(eps) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    
+    std::cout << " -- Toeplitz matrix -- " << std::endl;
+    if (toeplitz_test<double>(eps) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+    
+    std::cout << " -- Hankel matrix -- " << std::endl;
+    if (hankel_test<double>(eps) == EXIT_FAILURE)
+      return EXIT_FAILURE;
+  }
+
+  return EXIT_SUCCESS;
+}
diff --git a/tests/src/vector.cpp b/tests/src/vector.cpp
index 78ef3af..091f361 100644
--- a/tests/src/vector.cpp
+++ b/tests/src/vector.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 //
 // *** System
@@ -50,8 +52,8 @@ bool readVectorFromFile(const std::string & filename, boost::numeric::ublas::vec
 	unsigned int size;
 	file >> size;
   
-  if (size > 20000)  //keep execution times short
-    size = 20000;
+  if (size > 30000)  //keep execution times short
+    size = 30000;
 	vec.resize(size);
 
 	for (unsigned int i = 0; i < size; ++i)
@@ -257,7 +259,11 @@ int test(Epsilon const& epsilon, std::string rhsfile, std::string resultfile)
       std::cout << "  diff: " << fabs(diff(val, vcl_rhs(0))) << std::endl;
       retval = EXIT_FAILURE;
    }
-   // --------------------------------------------------------------------------   
+   
+   
+   //
+   // multiplication and division of vectors by scalars
+   //
    copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
    rhs2 = rhs;
 
@@ -311,25 +317,118 @@ int test(Epsilon const& epsilon, std::string rhsfile, std::string resultfile)
       std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
       retval = EXIT_FAILURE;
    }    
-   // --------------------------------------------------------------------------   
-   rhs2 = rhs;
+   
+
+
+   //
+   // add and inplace_add of vectors
+   //
+   std::cout << "Testing add on vector..." << std::endl;
+   rhs2 = 42.0 * rhs;
+   copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+   copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+   rhs     = rhs + rhs2;
+   vcl_rhs = vcl_rhs + vcl_rhs2;
+
+   if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+   {
+      std::cout << "# Error at operation: add on vector" << std::endl;
+      std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+      retval = EXIT_FAILURE;
+   }       
+
+   std::cout << "Testing inplace-add on vector..." << std::endl;
+   rhs2 = 42.0 * rhs;
+   copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+   copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+   rhs     += rhs2;
+   vcl_rhs += vcl_rhs2;
+
+   if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+   {
+      std::cout << "# Error at operation: inplace-add on vector" << std::endl;
+      std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+      retval = EXIT_FAILURE;
+   }       
+
+   //
+   // subtract and inplace_subtract of vectors
+   //
+   std::cout << "Testing sub on vector..." << std::endl;
+   rhs2 = 42.0 * rhs;
+   copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+   copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+   rhs     = rhs - rhs2;
+   vcl_rhs = vcl_rhs - vcl_rhs2;
+
+   if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+   {
+      std::cout << "# Error at operation: sub on vector" << std::endl;
+      std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+      retval = EXIT_FAILURE;
+   }       
+
+   std::cout << "Testing inplace-sub on vector..." << std::endl;
+   rhs2 = 42.0 * rhs;
    copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
    copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
 
+   rhs     += rhs2;
+   vcl_rhs += vcl_rhs2;
+
+   if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+   {
+      std::cout << "# Error at operation: inplace-sub on vector" << std::endl;
+      std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+      retval = EXIT_FAILURE;
+   }       
+
+
+   
+   //
+   // multiply-add and multiply-subtract
+   //
    std::cout << "Testing multiply-add on vector with CPU scalar..." << std::endl;
+   rhs2 = 42.0 * rhs;
+   copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+   copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+   rhs     = rhs + alpha * rhs2;
+   vcl_rhs = vcl_rhs + alpha * vcl_rhs2;
+
+   if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+   {
+      std::cout << "# Error at operation: multiply add with CPU scalar" << std::endl;
+      std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+      retval = EXIT_FAILURE;
+   }       
+
+
+   std::cout << "Testing inplace multiply-add on vector with CPU scalar..." << std::endl;
+   rhs2 = 42.0 * rhs;
+   copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+   copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
    rhs     += alpha * rhs2;
    vcl_rhs += alpha * vcl_rhs2;
 
    if( fabs(diff(rhs, vcl_rhs)) > epsilon )
    {
-      std::cout << "# Error at operation: multiply add with CPU scalar" << std::endl;
+      std::cout << "# Error at operation: inplace multiply add with CPU scalar" << std::endl;
       std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
       retval = EXIT_FAILURE;
    }       
-   
+
    std::cout << "Testing multiply-add on vector with GPU scalar..." << std::endl;
-   copy(rhs2.begin(), rhs2.end(), vcl_rhs.begin());
-   vcl_rhs += gpu_alpha * vcl_rhs2;
+   rhs2 = 42.0 * rhs;
+   copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+   copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+   
+   rhs = rhs + alpha * rhs2;
+   vcl_rhs = vcl_rhs + gpu_alpha * vcl_rhs2;
 
    if( fabs(diff(rhs, vcl_rhs)) > epsilon )
    {
@@ -338,40 +437,99 @@ int test(Epsilon const& epsilon, std::string rhsfile, std::string resultfile)
       retval = EXIT_FAILURE;
    }       
    
-   // --------------------------------------------------------------------------      
+   std::cout << "Testing inplace multiply-add on vector with GPU scalar..." << std::endl;
+   rhs2 = 42.0 * rhs;
    copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
-   rhs2 = rhs;
-  
-   std::cout << "Testing multiply-sub on vector with CPU scalar..." << std::endl;
-   rhs     -= alpha * rhs;
-   vcl_rhs -= alpha * vcl_rhs;   
+   copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+   
+   rhs += alpha * rhs2;
+   vcl_rhs += gpu_alpha * vcl_rhs2;
 
-   if( fabs(diff(cpu_result, gpu_result)) > epsilon )
+   if( fabs(diff(rhs, vcl_rhs)) > epsilon )
    {
-      std::cout << "# Error at operation: multiply sub with CPU scalar" << std::endl;
+      std::cout << "# Error at operation: inplace multiply add with GPU scalar" << std::endl;
       std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
       retval = EXIT_FAILURE;
    }       
    
-   std::cout << "Testing multiply-sub on vector with GPU scalar..." << std::endl;
-   copy(rhs2.begin(), rhs2.end(), vcl_rhs.begin());
-   vcl_rhs -= gpu_alpha * vcl_rhs;
+
+
+   //
+   // multiply-subtract
+   //
+   std::cout << "Testing multiply-subtract on vector with CPU scalar..." << std::endl;
+   rhs2 = 42.0 * rhs;
+   copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+   copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+   rhs     = rhs - alpha * rhs2;
+   vcl_rhs = vcl_rhs - alpha * vcl_rhs2;
 
    if( fabs(diff(rhs, vcl_rhs)) > epsilon )
    {
-      std::cout << "# Error at operation: multiply sub with GPU scalar" << std::endl;
+      std::cout << "# Error at operation: multiply-subtract with CPU scalar" << std::endl;
       std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
       retval = EXIT_FAILURE;
    }       
+
+
+   std::cout << "Testing inplace multiply-subtract on vector with CPU scalar..." << std::endl;
+   rhs2 = 42.0 * rhs;
+   copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+   copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+   rhs     -= alpha * rhs2;
+   vcl_rhs -= alpha * vcl_rhs2;
+
+   if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+   {
+      std::cout << "# Error at operation: inplace multiply subtract with CPU scalar" << std::endl;
+      std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+      retval = EXIT_FAILURE;
+   }       
+
+   std::cout << "Testing multiply-subtract on vector with GPU scalar..." << std::endl;
+   rhs2 = 42.0 * rhs;
+   copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+   copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
    
-   // --------------------------------------------------------------------------      
+   rhs     = rhs - alpha * rhs2;
+   vcl_rhs = vcl_rhs - gpu_alpha * vcl_rhs2;
+
+   if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+   {
+      std::cout << "# Error at operation: multiply subtract with GPU scalar" << std::endl;
+      std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+      retval = EXIT_FAILURE;
+   }       
+   
+   std::cout << "Testing inplace multiply-subtract on vector with GPU scalar..." << std::endl;
+   rhs2 = 42.0 * rhs;
+   copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+   copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+   
+   rhs -= alpha * rhs2;
+   vcl_rhs -= gpu_alpha * vcl_rhs2;
+
+   if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+   {
+      std::cout << "# Error at operation: inplace multiply subtract with GPU scalar" << std::endl;
+      std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+      retval = EXIT_FAILURE;
+   }       
+   
+   
+   
+   //
+   // Misc stuff
+   //
    rhs2 = rhs;
    copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
    copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
 
    std::cout << "Testing several vector additions..." << std::endl;
-   rhs     = rhs2 + rhs2 + rhs;
-   vcl_rhs = vcl_rhs2 + vcl_rhs2 + vcl_rhs;
+   rhs     = rhs2 + rhs + rhs2;
+   vcl_rhs = vcl_rhs2 + vcl_rhs + vcl_rhs2;
    
    if( fabs(diff(rhs, vcl_rhs)) > epsilon )
    {
@@ -379,7 +537,12 @@ int test(Epsilon const& epsilon, std::string rhsfile, std::string resultfile)
       std::cout << "  diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
       retval = EXIT_FAILURE;
    }          
-   // --------------------------------------------------------------------------      
+   
+   
+   
+   //
+   // Complicated expressions (for ensuring the operator overloads work correctly)
+   //
    copy(vcl_rhs.begin(), vcl_rhs.end(), rhs2.begin());
    copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
    copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
diff --git a/tests/src/vector_range.cpp b/tests/src/vector_range.cpp
new file mode 100644
index 0000000..80c4eea
--- /dev/null
+++ b/tests/src/vector_range.cpp
@@ -0,0 +1,255 @@
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#define VIENNACL_HAVE_UBLAS
+//#define NDEBUG
+//#define VIENNACL_BUILD_INFO
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cmath>
+#include <algorithm>
+#include <stdio.h>
+#include <sys/time.h>
+#include <time.h>
+//#include "../benchmarks/benchmark-utils.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+/*#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/linalg/norm_2.hpp"
+#include "viennacl/io/matrix_market.hpp"*/
+#include "viennacl/vector_proxy.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/io.hpp"
+
+
+template <typename VectorType, typename VCLVectorType>
+bool check_for_equality(VectorType const & ublas_v, VCLVectorType const & vcl_v)
+{
+  typedef typename VectorType::value_type   value_type;
+  
+  std::vector<value_type> vcl_v_cpu(vcl_v.size());
+  viennacl::copy(vcl_v, vcl_v_cpu);
+  
+  for (size_t i=0; i<ublas_v.size(); ++i)
+  {
+    if (ublas_v[i] != vcl_v_cpu[i])
+    {
+      std::cout << "Error at index (" << i << "): " << ublas_v[i] << " vs " << vcl_v_cpu[i] << std::endl;
+    }
+  }
+  return true;
+}
+
+
+           
+template <typename T>
+int run_test()
+{
+    typedef float               ScalarType;
+    typedef boost::numeric::ublas::vector<ScalarType>       VectorType;
+    
+    typedef viennacl::vector<ScalarType>                    VCLVectorType;
+    
+    std::size_t dim_large = 70;
+    std::size_t dim_small = 27;
+    
+    //setup ublas objects:
+    VectorType ublas_v1(dim_large);
+    for (std::size_t i=0; i<ublas_v1.size(); ++i)
+      ublas_v1(i) = i+1;
+
+    VectorType ublas_v2(dim_small);
+    for (std::size_t i=0; i<ublas_v2.size(); ++i)
+      ublas_v2(i) = dim_large + i;
+      
+    boost::numeric::ublas::range ublas_r1(0, dim_small);
+    boost::numeric::ublas::range ublas_r2(dim_small - 1, 2*dim_small - 1);
+    boost::numeric::ublas::range ublas_r3(dim_large - dim_small, dim_large);
+    boost::numeric::ublas::vector_range<VectorType> ublas_v1_sub1(ublas_v1, ublas_r1);
+    boost::numeric::ublas::vector_range<VectorType> ublas_v1_sub2(ublas_v1, ublas_r2);
+    boost::numeric::ublas::vector_range<VectorType> ublas_v1_sub3(ublas_v1, ublas_r3);
+
+    //Setup ViennaCL objects    
+    VCLVectorType vcl_v1(dim_large);
+    viennacl::copy(ublas_v1, vcl_v1);
+    VCLVectorType vcl_v2(dim_small);
+    viennacl::copy(ublas_v2, vcl_v2);
+    
+    viennacl::range vcl_r1(0, dim_small);
+    viennacl::range vcl_r2(dim_small - 1, 2*dim_small - 1);
+    viennacl::range vcl_r3(dim_large - dim_small, dim_large);
+    viennacl::vector_range<VCLVectorType>   vcl_v1_sub1(vcl_v1, vcl_r1);
+    viennacl::vector_range<VCLVectorType>   vcl_v1_sub2(vcl_v1, vcl_r2);
+    viennacl::vector_range<VCLVectorType>   vcl_v1_sub3(vcl_v1, vcl_r3);
+    
+    std::cout << std::endl;
+    std::cout << "//" << std::endl;
+    std::cout << "////////// Test 1: Copy to GPU //////////" << std::endl;
+    std::cout << "//" << std::endl;
+    
+    ublas_v1_sub1 = ublas_v2;
+    viennacl::copy(ublas_v2, vcl_v1_sub1);
+    std::cout << "Testing copy to begin of v1... ";
+    if (check_for_equality(ublas_v1, vcl_v1))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+    
+    
+    ublas_v1_sub2 = ublas_v2;
+    viennacl::copy(ublas_v2, vcl_v1_sub2);
+    std::cout << "Testing copy to middle of v1... ";
+    if (check_for_equality(ublas_v1, vcl_v1))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+    
+    
+    
+    ublas_v1_sub3 = ublas_v2;
+    viennacl::copy(ublas_v2, vcl_v1_sub3);
+    std::cout << "Testing copy to bottom of v1... ";
+    if (check_for_equality(ublas_v1, vcl_v1))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+
+    
+    std::cout << std::endl;
+    std::cout << "//" << std::endl;
+    std::cout << "////////// Test 2: Copy from GPU //////////" << std::endl;
+    std::cout << "//" << std::endl;
+    
+    std::cout << "Testing beginning of v1... ";
+    if (check_for_equality(ublas_v1_sub1, vcl_v1_sub1))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+    
+    std::cout << "Testing middle of v1... ";
+    if (check_for_equality(ublas_v1_sub2, vcl_v1_sub2))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+    
+    std::cout << "Testing bottom of v1... ";
+    if (check_for_equality(ublas_v1_sub3, vcl_v1_sub3))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+
+    std::cout << "//" << std::endl;
+    std::cout << "////////// Test 3: Inplace add //////////" << std::endl;
+    std::cout << "//" << std::endl;
+    viennacl::copy(ublas_v1_sub1, vcl_v1_sub1);
+    
+    std::cout << "Testing inplace add at beginning of v1: ";
+    ublas_v1_sub1 += ublas_v1_sub1;
+    vcl_v1_sub1 += vcl_v1_sub1;
+
+    if (check_for_equality(ublas_v1, vcl_v1))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+    
+
+    std::cout << "Testing inplace add at middle of v1: ";
+    ublas_v1_sub2 += ublas_v1_sub2;
+    vcl_v1_sub2 += vcl_v1_sub2;
+
+    if (check_for_equality(ublas_v1, vcl_v1))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+
+
+    std::cout << "Testing inplace add at end of v1: ";
+    ublas_v1_sub3 += ublas_v1_sub3;
+    vcl_v1_sub3 += vcl_v1_sub3;
+
+    if (check_for_equality(ublas_v1, vcl_v1))
+      std::cout << "PASSED!" << std::endl;
+    else
+    {
+      std::cout << std::endl << "TEST failed!";
+      return EXIT_FAILURE;
+    }
+
+    return EXIT_SUCCESS;
+}    
+
+int main (int argc, const char * argv[])
+{
+  std::cout << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << "## Test :: Vector Range" << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << "----------------------------------------------" << std::endl;
+  std::cout << std::endl;
+   
+  std::cout << "# Testing setup:" << std::endl;
+  std::cout << "  eps:     " << 0 << std::endl;
+  std::cout << "  numeric: float" << std::endl;
+  if (run_test<float>() != EXIT_SUCCESS)
+    return EXIT_FAILURE;
+  
+  if( viennacl::ocl::current_device().double_support() )
+  {
+    std::cout << "# Testing setup:" << std::endl;
+    std::cout << "  eps:     " << 0 << std::endl;
+    std::cout << "  numeric: double" << std::endl;
+    
+    if (run_test<double>() != EXIT_SUCCESS)
+      return EXIT_FAILURE;
+  }
+  
+  return EXIT_SUCCESS;
+}
+
diff --git a/viennacl/circulant_matrix.hpp b/viennacl/circulant_matrix.hpp
new file mode 100644
index 0000000..9033170
--- /dev/null
+++ b/viennacl/circulant_matrix.hpp
@@ -0,0 +1,258 @@
+#ifndef _VIENNACL_CIRCULANT_MATRIX_HPP
+#define _VIENNACL_CIRCULANT_MATRIX_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file circulant_matrix.hpp
+    @brief Implementation of the circulant_matrix class for efficient manipulation of circulant matrices.  Experimental in 1.2.x.
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/vector.hpp"
+#include "viennacl/ocl/context.hpp"
+
+#include "viennacl/linalg/circulant_matrix_operations.hpp"
+
+#include "viennacl/fft.hpp"
+
+namespace viennacl 
+{
+    /** @brief A Circulant matrix class
+    *
+    * @tparam SCALARTYPE  The underlying scalar type (either float or double)
+    * @tparam ALIGNMENT   The internal memory size is given by (size()/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory.
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT>
+    class circulant_matrix
+    {
+      public:     
+        /**
+         * @brief The default constructor. Does not allocate any memory.
+         *
+         */
+        explicit circulant_matrix()
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+        }
+
+        /**
+         * @brief         Creates the matrix with the given size
+         *
+         * @param rows      Number of rows of the matrix
+         * @param cols      Number of columns of the matrix
+         */
+        explicit circulant_matrix(std::size_t rows, std::size_t cols) : elements_(rows)
+        {
+          assert(rows == cols && "Circulant matrix must be square!");
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+        }
+
+        /** @brief Resizes the matrix.
+        *   Existing entries can be preserved
+        *
+        * @param sz         New size of matrix
+        * @param preserve   If true, existing values are preserved.
+        */
+        void resize(size_t sz, bool preserve = true)
+        {
+            elements_.resize(sz, preserve);
+        }
+
+        /** @brief Returns the OpenCL handle
+        *
+        *   @return OpenCL handle
+        */
+        viennacl::ocl::handle<cl_mem> handle() const { return elements_.handle(); }
+
+        /**
+         * @brief Returns an internal viennacl::vector, which represents a circulant matrix elements
+         *
+         */
+        viennacl::vector<SCALARTYPE, ALIGNMENT> & elements() { return elements_; }
+        viennacl::vector<SCALARTYPE, ALIGNMENT> const & elements() const { return elements_; }
+
+        /**
+         * @brief Returns the number of rows of the matrix
+         */
+        std::size_t size1() const { return elements_.size(); }
+        
+        /**
+         * @brief Returns the number of columns of the matrix
+         */
+        std::size_t size2() const { return elements_.size(); }
+
+        /** @brief Returns the internal size of matrix representtion.
+        *   Usually required for launching OpenCL kernels only
+        *
+        *   @return Internal size of matrix representation
+        */
+        std::size_t internal_size() const { return elements_.internal_size(); }
+
+        /**
+         * @brief Read-write access to a single element of the matrix
+         *
+         * @param row_index  Row index of accessed element
+         * @param col_index  Column index of accessed element
+         * @return Proxy for matrix entry
+         */
+        entry_proxy<SCALARTYPE> operator()(std::size_t row_index, std::size_t col_index)
+        {
+            int index = static_cast<int>(row_index) - static_cast<int>(col_index);
+
+            assert(row_index < size1() && col_index < size2() && "Invalid access");
+            
+            while (index < 0)
+              index += size1();
+            return elements_[index];
+        }
+
+        /**
+         * @brief += operation for circulant matrices
+         *
+         * @param that Matrix which will be added
+         * @return Result of addition
+         */
+        circulant_matrix<SCALARTYPE, ALIGNMENT>& operator +=(circulant_matrix<SCALARTYPE, ALIGNMENT>& that)
+        {
+            elements_ += that.elements();
+            return *this;
+        }
+
+    private:
+        circulant_matrix(circulant_matrix const & t) {}
+        circulant_matrix & operator=(circulant_matrix const & t) {}
+      
+        viennacl::vector<SCALARTYPE, ALIGNMENT> elements_;
+    };
+
+    /** @brief Copies a circulant matrix from the std::vector to the OpenCL device (either GPU or multi-core CPU)
+    *
+    *
+    * @param cpu_vec   A std::vector on the host.
+    * @param gpu_mat   A circulant_matrix from ViennaCL
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    void copy(std::vector<SCALARTYPE>& cpu_vec, circulant_matrix<SCALARTYPE, ALIGNMENT>& gpu_mat)
+    {
+        assert(cpu_vec.size() == gpu_mat.size1() && "Size mismatch");
+        copy(cpu_vec, gpu_mat.elements());
+    }
+
+    /** @brief Copies a circulant matrix from the OpenCL device (either GPU or multi-core CPU) to the std::vector
+    *
+    *
+    * @param gpu_mat   A circulant_matrix from ViennaCL
+    * @param cpu_vec   A std::vector on the host.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    void copy(circulant_matrix<SCALARTYPE, ALIGNMENT>& gpu_mat, std::vector<SCALARTYPE>& cpu_vec)
+    {
+        assert(cpu_vec.size() == gpu_mat.size1() && "Size mismatch");
+        copy(gpu_mat.elements(), cpu_vec);
+    }
+
+    /** @brief Copies a circulant matrix from the OpenCL device (either GPU or multi-core CPU) to the matrix-like object
+    *
+    *
+    * @param circ_src   A circulant_matrix from ViennaCL
+    * @param com_dst   A matrix-like object
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+    void copy(circulant_matrix<SCALARTYPE, ALIGNMENT>& circ_src, MATRIXTYPE& com_dst) {
+        std::size_t size = circ_src.size1();
+        assert(size == com_dst.size1() && "Size mismatch");
+        assert(size == com_dst.size2() && "Size mismatch");
+        std::vector<SCALARTYPE> tmp(size);
+        copy(circ_src, tmp);
+
+        for (std::size_t i = 0; i < size; i++) {
+            for (std::size_t j = 0; j < size; j++) {
+                int index = static_cast<int>(i) - static_cast<int>(j);
+                if (index < 0)
+                  index = size + index;
+                com_dst(i, j) = tmp[index];
+            }
+        }
+    }
+
+    /** @brief Copies a the matrix-like object to the circulant matrix from the OpenCL device (either GPU or multi-core CPU)
+    *
+    *
+    * @param com_src   A std::vector on the host
+    * @param circ_dst   A circulant_matrix from ViennaCL
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+    void copy(MATRIXTYPE& com_src, circulant_matrix<SCALARTYPE, ALIGNMENT>& circ_dst) {
+        std::size_t size = circ_dst.size1();
+        assert(size == com_src.size1() && "Size mismatch");
+        assert(size == com_src.size2() && "Size mismatch");
+
+        std::vector<SCALARTYPE> tmp(size);
+
+        for(std::size_t i = 0; i < size; i++) tmp[i] = com_src(i, 0);
+
+        copy(tmp, circ_dst);
+    }
+
+    /*namespace linalg
+    {
+      template <typename SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+      void prod_impl(circulant_matrix<SCALARTYPE, ALIGNMENT> const & mat,
+                      vector<SCALARTYPE, VECTOR_ALIGNMENT> const & vec,
+                      vector<SCALARTYPE, VECTOR_ALIGNMENT>& result) {
+          viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> circ(mat.elements().size() * 2);
+          fft::real_to_complex(mat.elements(), circ, mat.elements().size());
+
+          viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp(vec.size() * 2);
+          viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp2(vec.size() * 2);
+
+          fft::real_to_complex(vec, tmp, vec.size());
+          fft::convolve(circ, tmp, tmp2);
+          fft::complex_to_real(tmp2, result, vec.size());
+      }
+    }*/
+
+    /** @brief Prints the matrix. Output is compatible to boost::numeric::ublas
+    *
+    * @param s            STL output stream
+    * @param gpu_matrix   A ViennaCL circulant matrix
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT>
+    std::ostream & operator<<(std::ostream& s, circulant_matrix<SCALARTYPE, ALIGNMENT>& gpu_matrix)
+    {
+        std::size_t size = gpu_matrix.size1();
+        std::vector<SCALARTYPE> tmp(size);
+        copy(gpu_matrix, tmp);
+        s << "[" << size << "," << size << "](";
+
+        for(std::size_t i = 0; i < size; i++) {
+            s << "(";
+            for(std::size_t j = 0; j < size; j++) {
+                int index = (int)i - (int)j;
+                if(index < 0) index = size + index;
+                s << tmp[index];
+                //s << index;
+                if(j < (size - 1)) s << ",";
+            }
+            s << ")";
+        }
+        s << ")";
+        return s;
+    }
+}
+
+#endif // _VIENNACL_CIRCULANT_MATRIX_HPP
diff --git a/viennacl/compressed_matrix.hpp b/viennacl/compressed_matrix.hpp
index 91219f6..d74b0a3 100644
--- a/viennacl/compressed_matrix.hpp
+++ b/viennacl/compressed_matrix.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_COMPRESSED_MATRIX_HPP_
+#define VIENNACL_COMPRESSED_MATRIX_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_COMPRESSED_MATRIX_HPP_
-#define _VIENNACL_COMPRESSED_MATRIX_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file compressed_matrix.hpp
     @brief Implementation of the compressed_matrix class
@@ -63,14 +65,14 @@ namespace viennacl
               row_it != cpu_matrix.end1();
               ++row_it)
         {
-          unsigned int entries_per_row = 0;
+          std::size_t entries_per_row = 0;
           for (typename CPU_MATRIX::const_iterator2 col_it = row_it.begin();
                 col_it != row_it.end();
                 ++col_it)
           {
             ++entries_per_row;
           }
-          num_entries += viennacl::tools::roundUpToNextMultiple<unsigned int>(entries_per_row, ALIGNMENT);
+          num_entries += viennacl::tools::roundUpToNextMultiple<std::size_t>(entries_per_row, ALIGNMENT);
         }
         
         if (num_entries == 0) //we copy an empty matrix
@@ -79,12 +81,12 @@ namespace viennacl
         }
         
         //set up matrix entries:
-        std::vector<unsigned int> row_buffer(cpu_matrix.size1() + 1);
-        std::vector<unsigned int> col_buffer(num_entries);
+        std::vector<cl_uint> row_buffer(cpu_matrix.size1() + 1);
+        std::vector<cl_uint> col_buffer(num_entries);
         std::vector<SCALARTYPE> elements(num_entries);
         
-        unsigned int row_index = 0;
-        unsigned int data_index = 0;
+        std::size_t row_index = 0;
+        std::size_t data_index = 0;
         
         for (typename CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
               row_it != cpu_matrix.end1();
@@ -97,15 +99,20 @@ namespace viennacl
                 col_it != row_it.end();
                 ++col_it)
           {
-            col_buffer[data_index] = static_cast<unsigned int>(col_it.index2());
+            col_buffer[data_index] = static_cast<std::size_t>(col_it.index2());
             elements[data_index] = *col_it;
             ++data_index;
           }
-          data_index = viennacl::tools::roundUpToNextMultiple<unsigned int>(data_index, ALIGNMENT); //take care of alignment
+          data_index = viennacl::tools::roundUpToNextMultiple<std::size_t>(data_index, ALIGNMENT); //take care of alignment
         }
         row_buffer[row_index] = data_index;
         
-        gpu_matrix.set(&row_buffer[0], &col_buffer[0], &elements[0], static_cast<unsigned int>(cpu_matrix.size1()), num_entries);
+        gpu_matrix.set(&row_buffer[0],
+                       &col_buffer[0],
+                       &elements[0], 
+                       cpu_matrix.size1(),
+                       cpu_matrix.size2(),
+                       num_entries);
       }
     }
     
@@ -202,24 +209,24 @@ namespace viennacl
         cpu_matrix.resize(gpu_matrix.size1(), gpu_matrix.size2(), false);
         
         //get raw data from memory:
-        std::vector<unsigned int> row_buffer(gpu_matrix.size1() + 1);
-        std::vector<unsigned int> col_buffer(gpu_matrix.nnz());
+        std::vector<cl_uint> row_buffer(gpu_matrix.size1() + 1);
+        std::vector<cl_uint> col_buffer(gpu_matrix.nnz());
         std::vector<SCALARTYPE> elements(gpu_matrix.nnz());
         
         //std::cout << "GPU->CPU, nonzeros: " << gpu_matrix.nnz() << std::endl;
         
         cl_int err;
-        err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle1(), CL_TRUE, 0, sizeof(unsigned int)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
+        err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle1(), CL_TRUE, 0, sizeof(cl_uint)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
         VIENNACL_ERR_CHECK(err);
-        err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle2(), CL_TRUE, 0, sizeof(unsigned int)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
+        err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle2(), CL_TRUE, 0, sizeof(cl_uint)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
         VIENNACL_ERR_CHECK(err);
         err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle(), CL_TRUE, 0, sizeof(SCALARTYPE)*gpu_matrix.nnz(), &(elements[0]), 0, NULL, NULL);
         VIENNACL_ERR_CHECK(err);
         viennacl::ocl::get_queue().finish();
         
         //fill the cpu_matrix:
-        unsigned int data_index = 0;
-        for (unsigned int row = 1; row <= gpu_matrix.size1(); ++row)
+        std::size_t data_index = 0;
+        for (std::size_t row = 1; row <= gpu_matrix.size1(); ++row)
         {
           while (data_index < row_buffer[row])
           {
@@ -264,16 +271,16 @@ namespace viennacl
                && "Provided Eigen compressed matrix is too small!");
         
         //get raw data from memory:
-        std::vector<unsigned int> row_buffer(gpu_matrix.size1() + 1);
-        std::vector<unsigned int> col_buffer(gpu_matrix.nnz());
+        std::vector<cl_uint> row_buffer(gpu_matrix.size1() + 1);
+        std::vector<cl_uint> col_buffer(gpu_matrix.nnz());
         std::vector<SCALARTYPE> elements(gpu_matrix.nnz());
         
         cl_int err;
         err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle1(),
-                                  CL_TRUE, 0, sizeof(unsigned int)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
+                                  CL_TRUE, 0, sizeof(cl_uint)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
         VIENNACL_ERR_CHECK(err);
         err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle2(),
-                                  CL_TRUE, 0, sizeof(unsigned int)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
+                                  CL_TRUE, 0, sizeof(cl_uint)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
         VIENNACL_ERR_CHECK(err);
         err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle(),
                                   CL_TRUE, 0, sizeof(SCALARTYPE)*gpu_matrix.nnz(), &(elements[0]), 0, NULL, NULL);
@@ -282,8 +289,8 @@ namespace viennacl
         
         eigen_matrix.setZero();
         eigen_matrix.startFill();
-        unsigned int data_index = 0;
-        for (unsigned int row = 1; row <= gpu_matrix.size1(); ++row)
+        std::size_t data_index = 0;
+        for (std::size_t row = 1; row <= gpu_matrix.size1(); ++row)
         {
           while (data_index < row_buffer[row])
           {
@@ -318,10 +325,10 @@ namespace viennacl
         
         cl_int err;
         err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle1(),
-                                  CL_TRUE, 0, sizeof(unsigned int)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
+                                  CL_TRUE, 0, sizeof(cl_uint)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
         VIENNACL_ERR_CHECK(err);
         err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle2(),
-                                  CL_TRUE, 0, sizeof(unsigned int)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
+                                  CL_TRUE, 0, sizeof(cl_uint)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
         VIENNACL_ERR_CHECK(err);
         err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle(),
                                   CL_TRUE, 0, sizeof(SCALARTYPE)*gpu_matrix.nnz(), &(elements[0]), 0, NULL, NULL);
@@ -332,8 +339,8 @@ namespace viennacl
         //mtl4_matrix.change_dim(gpu_matrix.size1(), gpu_matrix.size2());
         
         mtl::matrix::inserter< mtl::compressed2D<SCALARTYPE> >  ins(mtl4_matrix);
-        unsigned int data_index = 0;
-        for (unsigned int row = 1; row <= gpu_matrix.size1(); ++row)
+        std::size_t data_index = 0;
+        for (std::size_t row = 1; row <= gpu_matrix.size1(); ++row)
         {
           while (data_index < row_buffer[row])
           {
@@ -372,21 +379,22 @@ namespace viennacl
       * @param cols     Number of columns
       * @param nonzeros Optional number of nonzeros for memory preallocation
       */
-      explicit compressed_matrix(unsigned int rows, unsigned int cols, unsigned int nonzeros = 0) : 
+      explicit compressed_matrix(std::size_t rows, std::size_t cols, std::size_t nonzeros = 0) : 
         _rows(rows), _cols(cols), _nonzeros(nonzeros)
       {
         viennacl::linalg::kernels::compressed_matrix<SCALARTYPE, ALIGNMENT>::init();
         
         if (rows > 0)
-          _row_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(unsigned int) * rows);
+          _row_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(cl_uint) * rows);
         if (nonzeros > 0)
         {
-          _col_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(unsigned int) * nonzeros);
+          _col_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(cl_uint) * nonzeros);
           _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE) * nonzeros);
         }
       }
       
-      explicit compressed_matrix(cl_mem mem_row_buffer, cl_mem mem_col_buffer, cl_mem mem_elements, unsigned int rows, unsigned int cols, unsigned int nonzeros) : 
+      explicit compressed_matrix(cl_mem mem_row_buffer, cl_mem mem_col_buffer, cl_mem mem_elements, 
+                                 std::size_t rows, std::size_t cols, std::size_t nonzeros) : 
         _rows(rows), _cols(cols), _nonzeros(nonzeros)
       {
           _row_buffer = mem_row_buffer;
@@ -403,34 +411,40 @@ namespace viennacl
       * @param row_jumper     Pointer to an array holding the indices of the first element of each row (starting with zero). E.g. row_jumper[10] returns the index of the first entry of the 11th row. The array length is 'cols + 1'
       * @param col_buffer     Pointer to an array holding the column index of each entry. The array length is 'nonzeros'
       * @param elements       Pointer to an array holding the entries of the sparse matrix. The array length is 'elements'
-      * @param cols           Number of columns (and rows) of the sparse matrix
+      * @param rows           Number of rows of the sparse matrix
+      * @param cols           Number of columns of the sparse matrix
       * @param nonzeros       Number of nonzeros
       */
-      void set(unsigned int * row_jumper, unsigned int * col_buffer, SCALARTYPE * elements, unsigned int cols, unsigned int nonzeros)
+      void set(cl_uint * row_jumper, 
+               cl_uint * col_buffer,
+               SCALARTYPE * elements, 
+               std::size_t rows,
+               std::size_t cols,
+               std::size_t nonzeros)
       {
         assert(cols > 0);
         assert(nonzeros > 0);
         //std::cout << "Setting memory: " << cols + 1 << ", " << nonzeros << std::endl;
-        _row_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(unsigned int) * (cols + 1), row_jumper);
-        _col_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(unsigned int) * nonzeros, col_buffer);
+        _row_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(cl_uint) * (rows + 1), row_jumper);
+        _col_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(cl_uint) * nonzeros, col_buffer);
         _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE) * nonzeros, elements);
         _nonzeros = nonzeros;
-        _rows = cols;
+        _rows = rows;
         _cols = cols;
       }
         
       /** @brief Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved. */
-      void reserve(unsigned int new_nonzeros)
+      void reserve(std::size_t new_nonzeros)
       {
         if (new_nonzeros > _nonzeros)
         {
           viennacl::ocl::handle<cl_mem> _col_buffer_old = _col_buffer;
           viennacl::ocl::handle<cl_mem> _elements_old = _elements;
-          _col_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(unsigned int) * new_nonzeros);
+          _col_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(cl_uint) * new_nonzeros);
           _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE) * new_nonzeros);
           
           cl_int err;
-          err = clEnqueueCopyBuffer(viennacl::ocl::get_queue().handle(), _col_buffer_old, _col_buffer, 0, 0, sizeof(unsigned int)*_nonzeros, 0, NULL, NULL);
+          err = clEnqueueCopyBuffer(viennacl::ocl::get_queue().handle(), _col_buffer_old, _col_buffer, 0, 0, sizeof(cl_uint)*_nonzeros, 0, NULL, NULL);
           VIENNACL_ERR_CHECK(err);
           err = clEnqueueCopyBuffer(viennacl::ocl::get_queue().handle(), _elements_old, _elements, 0, 0, sizeof(SCALARTYPE)*_nonzeros, 0, NULL, NULL);
           VIENNACL_ERR_CHECK(err);
@@ -445,7 +459,7 @@ namespace viennacl
       * @param new_size2    New number of columns
       * @param preserve     If true, the old values are preserved. At present, old values are always discarded.
       */
-      void resize(unsigned int new_size1, unsigned int new_size2, bool preserve = true)
+      void resize(std::size_t new_size1, std::size_t new_size2, bool preserve = true)
       {
         assert(new_size1 > 0 && new_size2 > 0);
         //std::cout << "Resizing from (" << _rows << ", " << _cols << ") to (" << new_size1 << ", " << new_size2 << ")" << std::endl;
@@ -488,11 +502,11 @@ namespace viennacl
       }
 
       /** @brief  Returns the number of rows */
-      const unsigned int & size1() const { return _rows; }
+      const std::size_t & size1() const { return _rows; }
       /** @brief  Returns the number of columns */
-      const unsigned int & size2() const { return _cols; }
+      const std::size_t & size2() const { return _cols; }
       /** @brief  Returns the number of nonzero entries */
-      const unsigned int & nnz() const { return _nonzeros; }
+      const std::size_t & nnz() const { return _nonzeros; }
       
       /** @brief  Returns the OpenCL handle to the row index array */
       const viennacl::ocl::handle<cl_mem> & handle1() const { return _row_buffer; }
@@ -502,16 +516,16 @@ namespace viennacl
       const viennacl::ocl::handle<cl_mem> & handle() const { return _elements; }
       
     private:
-      /** @brief Copy constructor is by now not available. */
-      compressed_matrix(compressed_matrix const &);
+      // /** @brief Copy constructor is by now not available. */
+      //compressed_matrix(compressed_matrix const &);
       
       /** @brief Assignment is by now not available. */
       compressed_matrix & operator=(compressed_matrix const &);
       
       
-      unsigned int _rows;
-      unsigned int _cols;
-      unsigned int _nonzeros;
+      std::size_t _rows;
+      std::size_t _cols;
+      std::size_t _nonzeros;
       viennacl::ocl::handle<cl_mem> _row_buffer;
       viennacl::ocl::handle<cl_mem> _col_buffer;
       viennacl::ocl::handle<cl_mem> _elements;
diff --git a/viennacl/coordinate_matrix.hpp b/viennacl/coordinate_matrix.hpp
index 2a82a88..14f0b96 100644
--- a/viennacl/coordinate_matrix.hpp
+++ b/viennacl/coordinate_matrix.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_COORDINATE_MATRIX_HPP_
+#define VIENNACL_COORDINATE_MATRIX_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_COORDINATE_MATRIX_HPP_
-#define _VIENNACL_COORDINATE_MATRIX_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file coordinate_matrix.hpp
     @brief Implementation of the coordinate_matrix class
@@ -50,7 +52,7 @@ namespace viennacl
       // Step 1: Determine nonzeros:
       if ( cpu_matrix.size1() > 0 && cpu_matrix.size2() > 0 )
       {
-        unsigned int num_entries = 0;
+        std::size_t num_entries = 0;
         for (typename CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
               row_it != cpu_matrix.end1();
               ++row_it)
@@ -73,8 +75,8 @@ namespace viennacl
         std::vector<cl_uint> group_boundaries(group_num + 1);
         std::vector<SCALARTYPE> elements(gpu_matrix.internal_nnz());
         
-        unsigned int data_index = 0;
-        unsigned int current_fraction = 0;
+        std::size_t data_index = 0;
+        std::size_t current_fraction = 0;
         
         for (typename CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
               row_it != cpu_matrix.end1();
@@ -84,8 +86,8 @@ namespace viennacl
                 col_it != row_it.end();
                 ++col_it)
           {
-            coord_buffer[2*data_index] = static_cast<unsigned int>(col_it.index1());
-            coord_buffer[2*data_index + 1] = static_cast<unsigned int>(col_it.index2());
+            coord_buffer[2*data_index] = static_cast<cl_uint>(col_it.index1());
+            coord_buffer[2*data_index + 1] = static_cast<cl_uint>(col_it.index2());
             elements[data_index] = *col_it;
             ++data_index;
           }
@@ -139,20 +141,20 @@ namespace viennacl
         cpu_matrix.resize(gpu_matrix.size1(), gpu_matrix.size2(), false);
         
         //get raw data from memory:
-        std::vector<unsigned int> coord_buffer(2*gpu_matrix.nnz());
+        std::vector<cl_uint> coord_buffer(2*gpu_matrix.nnz());
         std::vector<SCALARTYPE> elements(gpu_matrix.nnz());
         
         //std::cout << "GPU nonzeros: " << gpu_matrix.nnz() << std::endl;
         
         cl_int err;
-        err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle12(), CL_TRUE, 0, sizeof(unsigned int)* 2 *gpu_matrix.nnz(), &(coord_buffer[0]), 0, NULL, NULL);
+        err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle12(), CL_TRUE, 0, sizeof(cl_uint)* 2 *gpu_matrix.nnz(), &(coord_buffer[0]), 0, NULL, NULL);
         VIENNACL_ERR_CHECK(err);
         err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle(), CL_TRUE, 0, sizeof(SCALARTYPE)*gpu_matrix.nnz(), &(elements[0]), 0, NULL, NULL);
         VIENNACL_ERR_CHECK(err);
         viennacl::ocl::get_queue().finish();
         
         //fill the cpu_matrix:
-        for (unsigned int index = 0; index < gpu_matrix.nnz(); ++index)
+        for (std::size_t index = 0; index < gpu_matrix.nnz(); ++index)
         {
           cpu_matrix(coord_buffer[2*index], coord_buffer[2*index+1]) = elements[index];
         }
@@ -196,7 +198,7 @@ namespace viennacl
       * @param cols     Number of columns
       * @param nonzeros Optional number of nonzeros for memory preallocation
       */
-      coordinate_matrix(unsigned int rows, unsigned int cols, unsigned int nonzeros = 0) : 
+      coordinate_matrix(std::size_t rows, std::size_t cols, std::size_t nonzeros = 0) : 
         rows_(rows), cols_(cols), nonzeros_(nonzeros)
       {
         viennacl::linalg::kernels::coordinate_matrix<SCALARTYPE, ALIGNMENT>::init();
@@ -209,7 +211,7 @@ namespace viennacl
       }
         
       /** @brief Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved. */
-      void reserve(unsigned int new_nonzeros)
+      void reserve(std::size_t new_nonzeros)
       {
         if (new_nonzeros > nonzeros_)
         {
@@ -239,7 +241,7 @@ namespace viennacl
       * @param new_size2    New number of columns
       * @param preserve     If true, the old values are preserved. At present, old values are always discarded.
       */
-      void resize(unsigned int new_size1, unsigned int new_size2, bool preserve = true)
+      void resize(std::size_t new_size1, std::size_t new_size2, bool preserve = true)
       {
         assert (new_size1 > 0 && new_size2 > 0);
                 
@@ -257,7 +259,7 @@ namespace viennacl
           std::cout << "Cropping STL matrix of size " << stl_sparse_matrix.size() << std::endl;
           if (new_size2 < cols_ && rows_ > 0)
           {
-            for (size_t i=0; i<stl_sparse_matrix.size(); ++i)
+            for (std::size_t i=0; i<stl_sparse_matrix.size(); ++i)
             {
               std::list<unsigned int> to_delete;
               for (typename std::map<unsigned int, SCALARTYPE>::iterator it = stl_sparse_matrix[i].begin();
@@ -271,7 +273,7 @@ namespace viennacl
               for (std::list<unsigned int>::iterator it = to_delete.begin(); it != to_delete.end(); ++it)
                 stl_sparse_matrix[i].erase(*it);
             }
-          std::cout << "Cropping done..." << std::endl;
+            std::cout << "Cropping done..." << std::endl;
           }
           
           rows_ = new_size1;
@@ -285,13 +287,13 @@ namespace viennacl
 
 
       /** @brief  Returns the number of rows */
-      unsigned int size1() const { return rows_; }
+      std::size_t size1() const { return rows_; }
       /** @brief  Returns the number of columns */
-      unsigned int size2() const { return cols_; }
+      std::size_t size2() const { return cols_; }
       /** @brief  Returns the number of nonzero entries */
-      unsigned int nnz() const { return nonzeros_; }
+      std::size_t nnz() const { return nonzeros_; }
       /** @brief  Returns the number of internal nonzero entries */
-      unsigned int internal_nnz() const { return viennacl::tools::roundUpToNextMultiple<unsigned int>(nonzeros_, ALIGNMENT);; }
+      std::size_t internal_nnz() const { return viennacl::tools::roundUpToNextMultiple<std::size_t>(nonzeros_, ALIGNMENT);; }
       
       /** @brief  Returns the OpenCL handle to the (row, column) index array */
       const viennacl::ocl::handle<cl_mem> & handle12() const { return coord_buffer_; }
@@ -316,9 +318,9 @@ namespace viennacl
       coordinate_matrix & operator=(coordinate_matrix const &);
       
       
-      unsigned int rows_;
-      unsigned int cols_;
-      unsigned int nonzeros_;
+      std::size_t rows_;
+      std::size_t cols_;
+      std::size_t nonzeros_;
       viennacl::ocl::handle<cl_mem> coord_buffer_;
       viennacl::ocl::handle<cl_mem> elements_;
       viennacl::ocl::handle<cl_mem> group_boundaries_;
diff --git a/viennacl/fft.hpp b/viennacl/fft.hpp
new file mode 100644
index 0000000..9706431
--- /dev/null
+++ b/viennacl/fft.hpp
@@ -0,0 +1,640 @@
+#ifndef VIENNACL_FFT_HPP
+#define VIENNACL_FFT_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file fft.hpp
+    @brief All routines related to the Fast Fourier Transform. Experimental in 1.2.x.
+*/
+
+#include <viennacl/vector.hpp>
+#include <viennacl/matrix.hpp>
+
+#include "viennacl/linalg/kernels/fft_kernels.h"
+
+#include <cmath>
+
+#include <stdexcept>
+
+namespace viennacl 
+{
+  namespace detail
+  {
+    namespace fft
+    {
+        const std::size_t MAX_LOCAL_POINTS_NUM = 512;
+
+        namespace FFT_DATA_ORDER {
+            enum DATA_ORDER {
+                ROW_MAJOR,
+                COL_MAJOR
+            };
+        }
+    }
+  }
+}
+
+/// @cond
+namespace viennacl {
+  namespace detail {
+    namespace fft {
+
+        inline bool is_radix2(std::size_t data_size) {
+            return !((data_size > 2) && (data_size & (data_size - 1)));
+
+        }
+
+        inline std::size_t next_power_2(std::size_t n) {
+            n = n - 1;
+
+            std::size_t power = 1;
+
+            while(power < sizeof(std::size_t) * 8) {
+                n = n | (n >> power);
+                power *= 2;
+            }
+
+            return n + 1;
+        }
+
+        inline std::size_t num_bits(std::size_t size)
+        {
+            std::size_t bits_datasize = 0;
+            std::size_t ds = 1;
+
+            while(ds < size)
+            {
+                ds = ds << 1;
+                bits_datasize++;
+            }
+
+            return bits_datasize;
+        }
+
+
+        /**
+         * @brief Direct algorithm for computing Fourier transformation.
+         *
+         * Works on any sizes of data.
+         * Serial implementation has o(n^2) complexity
+        */
+        template<class SCALARTYPE>
+        void direct(const viennacl::ocl::handle<cl_mem>& in,
+                    const viennacl::ocl::handle<cl_mem>& out,
+                    std::size_t size,
+                    std::size_t stride,
+                    std::size_t batch_num,
+                    SCALARTYPE sign = -1.0f,
+                    FFT_DATA_ORDER::DATA_ORDER data_order = FFT_DATA_ORDER::ROW_MAJOR
+                    )
+        {
+          viennacl::linalg::kernels::matrix_row<SCALARTYPE, 1>::init();
+          std::string program_string = viennacl::linalg::kernels::matrix_row<SCALARTYPE, 1>::program_name();
+          if (data_order == FFT_DATA_ORDER::COL_MAJOR)
+          {
+            viennacl::linalg::kernels::matrix_col<SCALARTYPE, 1>::init();
+            program_string = viennacl::linalg::kernels::matrix_col<SCALARTYPE, 1>::program_name();
+          }
+          viennacl::ocl::kernel& kernel = viennacl::ocl::current_context().get_program(program_string).get_kernel("fft_direct");
+          viennacl::ocl::enqueue(kernel(in, out, static_cast<cl_uint>(size), static_cast<cl_uint>(stride), static_cast<cl_uint>(batch_num), sign));
+        }
+
+        /*
+        * This function performs reorder of input data. Indexes are sorted in bit-reversal order.
+        * Such reordering should be done before in-place FFT.
+        */
+        template <typename SCALARTYPE>
+        void reorder(const viennacl::ocl::handle<cl_mem>& in,
+                     std::size_t size,
+                     std::size_t stride,
+                     std::size_t bits_datasize,
+                     std::size_t batch_num,
+                     FFT_DATA_ORDER::DATA_ORDER data_order = FFT_DATA_ORDER::ROW_MAJOR
+                     )
+        {
+          viennacl::linalg::kernels::matrix_row<SCALARTYPE, 1>::init();
+          std::string program_string = viennacl::linalg::kernels::matrix_row<SCALARTYPE, 1>::program_name();
+          if (data_order == FFT_DATA_ORDER::COL_MAJOR)
+          {
+            viennacl::linalg::kernels::matrix_col<SCALARTYPE, 1>::init();
+            program_string = viennacl::linalg::kernels::matrix_col<SCALARTYPE, 1>::program_name();
+          }
+          
+          viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                              .get_program(program_string)
+                                              .get_kernel("fft_reorder");
+          viennacl::ocl::enqueue(kernel(in, 
+                                        static_cast<cl_uint>(bits_datasize),
+                                        static_cast<cl_uint>(size),
+                                        static_cast<cl_uint>(stride),
+                                        static_cast<cl_uint>(batch_num)
+                                       )
+                                );
+        }
+
+        /**
+         * @brief Radix-2 algorithm for computing Fourier transformation.
+         *
+         * Works only on power-of-two sizes of data.
+         * Serial implementation has o(n * lg n) complexity.
+         * This is a Cooley-Tukey algorithm
+        */
+        template<class SCALARTYPE>
+        void radix2(const viennacl::ocl::handle<cl_mem>& in,
+                    std::size_t size,
+                    std::size_t stride,
+                    std::size_t batch_num,
+                    SCALARTYPE sign = -1.0f,
+                    FFT_DATA_ORDER::DATA_ORDER data_order = FFT_DATA_ORDER::ROW_MAJOR
+                    )
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+
+            assert(batch_num != 0);
+            assert(is_radix2(size));
+
+            viennacl::linalg::kernels::matrix_row<SCALARTYPE, 1>::init();
+            std::string program_string = viennacl::linalg::kernels::matrix_row<SCALARTYPE, 1>::program_name();
+            if (data_order == FFT_DATA_ORDER::COL_MAJOR)
+            {
+              viennacl::linalg::kernels::matrix_col<SCALARTYPE, 1>::init();
+              program_string = viennacl::linalg::kernels::matrix_col<SCALARTYPE, 1>::program_name();
+            }
+
+            std::size_t bits_datasize = num_bits(size);
+
+            if(size <= MAX_LOCAL_POINTS_NUM) 
+            {
+                viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                                 .get_program(program_string)
+                                                 .get_kernel("fft_radix2_local");
+                viennacl::ocl::enqueue(kernel(in,
+                                              viennacl::ocl::local_mem((size * 4) * sizeof(SCALARTYPE)),
+                                              static_cast<cl_uint>(bits_datasize),
+                                              static_cast<cl_uint>(size),
+                                              static_cast<cl_uint>(stride),
+                                              static_cast<cl_uint>(batch_num),
+                                              sign));
+            } 
+            else
+            {
+                reorder<SCALARTYPE>(in, size, stride, bits_datasize, batch_num);
+
+                for(std::size_t step = 0; step < bits_datasize; step++) 
+                {
+                    viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                                     .get_program(program_string)
+                                                     .get_kernel("fft_radix2");
+                    viennacl::ocl::enqueue(kernel(in,
+                                                  static_cast<cl_uint>(step),
+                                                  static_cast<cl_uint>(bits_datasize),
+                                                  static_cast<cl_uint>(size),
+                                                  static_cast<cl_uint>(stride),
+                                                  static_cast<cl_uint>(batch_num),
+                                                  sign));
+                }
+
+            }
+        }
+
+        /**
+         * @brief Bluestein's algorithm for computing Fourier transformation.
+         *
+         * Currently,  Works only for sizes of input data which less than 2^16.
+         * Uses a lot of additional memory, but should be fast for any size of data.
+         * Serial implementation has something about o(n * lg n) complexity
+        */
+        template<class SCALARTYPE, unsigned int ALIGNMENT>
+        void bluestein(viennacl::vector<SCALARTYPE, ALIGNMENT>& in,
+                       viennacl::vector<SCALARTYPE, ALIGNMENT>& out,
+                       std::size_t batch_num,
+                       SCALARTYPE sign = -1.0
+                       )
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+
+            std::size_t size = in.size() >> 1;
+            std::size_t ext_size = next_power_2(2 * size - 1);
+
+            viennacl::vector<SCALARTYPE, ALIGNMENT> A(ext_size << 1);
+            viennacl::vector<SCALARTYPE, ALIGNMENT> B(ext_size << 1);
+
+            viennacl::vector<SCALARTYPE, ALIGNMENT> Z(ext_size << 1);
+
+            {
+                viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                             .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+                                             .get_kernel("zero2");
+                viennacl::ocl::enqueue(kernel(
+                                            A,
+                                            B,
+                                            static_cast<cl_uint>(ext_size)
+                                            ));
+
+            }
+            {
+                viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                             .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+                                             .get_kernel("bluestein_pre");
+                viennacl::ocl::enqueue(kernel(
+                                           in,
+                                           A,
+                                           B,
+                                           static_cast<cl_uint>(size),
+                                           static_cast<cl_uint>(ext_size)
+                                       ));
+            }
+
+            viennacl::linalg::convolve_i(A, B, Z);
+
+            {
+                viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                                 .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+                                                 .get_kernel("bluestein_post");
+                viennacl::ocl::enqueue(kernel(
+                                            Z,
+                                            out,
+                                            static_cast<cl_uint>(size)
+                                            ));
+            }
+        }
+
+        template<class SCALARTYPE, unsigned int ALIGNMENT>
+        void multiply(viennacl::vector<SCALARTYPE, ALIGNMENT> const & input1,
+                      viennacl::vector<SCALARTYPE, ALIGNMENT> const & input2,
+                      viennacl::vector<SCALARTYPE, ALIGNMENT> & output) 
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+            std::size_t size = input1.size() >> 1;
+            viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                             .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+                                             .get_kernel("fft_mult_vec");
+            viennacl::ocl::enqueue(kernel(input1, input2, output, static_cast<cl_uint>(size)));
+        }
+
+        template<class SCALARTYPE, unsigned int ALIGNMENT>
+        void normalize(viennacl::vector<SCALARTYPE, ALIGNMENT> & input) 
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+            viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                             .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+                                             .get_kernel("fft_div_vec_scalar");
+            std::size_t size = input.size() >> 1;
+            SCALARTYPE norm_factor = static_cast<SCALARTYPE>(size);
+            viennacl::ocl::enqueue(kernel(input, static_cast<cl_uint>(size), norm_factor));
+        }
+
+        template<class SCALARTYPE, unsigned int ALIGNMENT>
+        void transpose(viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> & input) 
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+            viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                             .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+                                             .get_kernel("transpose_inplace");
+            viennacl::ocl::enqueue(kernel(input,
+                                          static_cast<cl_uint>(input.internal_size1()),
+                                          static_cast<cl_uint>(input.internal_size2()) >> 1));
+        }
+
+        template<class SCALARTYPE, unsigned int ALIGNMENT>
+        void transpose(viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> const & input,
+                       viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> & output)
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+          
+            viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                             .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+                                             .get_kernel("transpose");
+            viennacl::ocl::enqueue(kernel(input,
+                                          output,
+                                          static_cast<cl_uint>(input.internal_size1()),
+                                          static_cast<cl_uint>(input.internal_size2() >> 1))
+                                  );
+        }
+        
+        template<class SCALARTYPE, unsigned int ALIGNMENT>
+        void real_to_complex(viennacl::vector<SCALARTYPE, ALIGNMENT> const & in,
+                             viennacl::vector<SCALARTYPE, ALIGNMENT> & out,
+                             std::size_t size) 
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+            viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                             .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+                                             .get_kernel("real_to_complex");
+            viennacl::ocl::enqueue(kernel(in, out, static_cast<cl_uint>(size)));
+        }
+
+        template<class SCALARTYPE, unsigned int ALIGNMENT>
+        void complex_to_real(viennacl::vector<SCALARTYPE, ALIGNMENT> const & in,
+                             viennacl::vector<SCALARTYPE, ALIGNMENT>& out,
+                             std::size_t size)
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+            viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                             .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+                                             .get_kernel("complex_to_real");
+            viennacl::ocl::enqueue(kernel(in, out, static_cast<cl_uint>(size)));
+        }
+
+        template<class SCALARTYPE, unsigned int ALIGNMENT>
+        void reverse(viennacl::vector<SCALARTYPE, ALIGNMENT>& in)
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+            std::size_t size = in.size();
+            viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                             .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+                                             .get_kernel("reverse_inplace");
+            viennacl::ocl::enqueue(kernel(in, static_cast<cl_uint>(size)));
+        }
+
+        
+    } //namespace fft
+  } //namespace detail
+  
+  /**
+    * @brief Generic inplace version of 1-D Fourier transformation.
+    *
+    * @param input       Input vector, result will be stored here.
+    * @param batch_num   Number of items in batch
+    * @param sign        Sign of exponent, default is -1.0
+    */
+  template<class SCALARTYPE, unsigned int ALIGNMENT>
+  void inplace_fft(viennacl::vector<SCALARTYPE, ALIGNMENT>& input,
+            std::size_t batch_num = 1,
+            SCALARTYPE sign = -1.0)
+  {
+      std::size_t size = (input.size() >> 1) / batch_num;
+
+      if(!detail::fft::is_radix2(size)) 
+      {
+          viennacl::vector<SCALARTYPE, ALIGNMENT> output(input.size());
+          detail::fft::direct(input.handle(),
+                              output.handle(),
+                              size,
+                              size,
+                              batch_num,
+                              sign);
+
+          viennacl::copy(output, input);
+      } else {
+          detail::fft::radix2(input.handle(), size, size, batch_num, sign);
+      }
+  }
+
+  /**
+    * @brief Generic version of 1-D Fourier transformation.
+    *
+    * @param input      Input vector.
+    * @param output     Output vector.
+    * @param batch_num  Number of items in batch.
+    * @param sign       Sign of exponent, default is -1.0
+    */
+  template<class SCALARTYPE, unsigned int ALIGNMENT>
+  void fft(viennacl::vector<SCALARTYPE, ALIGNMENT>& input,
+            viennacl::vector<SCALARTYPE, ALIGNMENT>& output,
+            std::size_t batch_num = 1,
+            SCALARTYPE sign = -1.0
+            )
+  {
+      std::size_t size = (input.size() >> 1) / batch_num;
+
+      if(detail::fft::is_radix2(size))
+      {
+          viennacl::copy(input, output);
+          detail::fft::radix2(output.handle(), size, size, batch_num, sign);
+      } else {
+          detail::fft::direct(input.handle(),
+                              output.handle(),
+                              size,
+                              size,
+                              batch_num,
+                              sign);
+      }
+  }
+
+  /**
+    * @brief Generic inplace version of 2-D Fourier transformation.
+    *
+    * @param input       Input matrix, result will be stored here.
+    * @param sign        Sign of exponent, default is -1.0
+    */
+  template<class SCALARTYPE, unsigned int ALIGNMENT>
+  void inplace_fft(viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT>& input,
+            SCALARTYPE sign = -1.0)
+  {
+      std::size_t rows_num = input.size1();
+      std::size_t cols_num = input.size2() >> 1;
+
+      std::size_t cols_int = input.internal_size2() >> 1;
+
+      // batch with rows
+      if(detail::fft::is_radix2(cols_num)) 
+      {
+          detail::fft::radix2(input.handle(), cols_num, cols_int, rows_num, sign, detail::fft::FFT_DATA_ORDER::ROW_MAJOR);
+      } 
+      else
+      {
+          viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> output(input.size1(), input.size2());
+
+          detail::fft::direct(input.handle(),
+                              output.handle(),
+                              cols_num,
+                              cols_int,
+                              rows_num,
+                              sign,
+                              detail::fft::FFT_DATA_ORDER::ROW_MAJOR
+                              );
+
+          input = output;
+      }
+
+      // batch with cols
+      if (detail::fft::is_radix2(rows_num)) {
+          detail::fft::radix2(input.handle(), rows_num, cols_int, cols_num, sign, detail::fft::FFT_DATA_ORDER::COL_MAJOR);
+      } else {
+          viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> output(input.size1(), input.size2());
+
+          detail::fft::direct(input.handle(),
+                              output.handle(),
+                              rows_num,
+                              cols_int,
+                              cols_num,
+                              sign,
+                              detail::fft::FFT_DATA_ORDER::COL_MAJOR);
+
+          input = output;
+      }
+
+  }
+
+  /**
+    * @brief Generic version of 2-D Fourier transformation.
+    *
+    * @param input      Input vector.
+    * @param output     Output vector.
+    * @param sign       Sign of exponent, default is -1.0
+    */
+  template<class SCALARTYPE, unsigned int ALIGNMENT>
+  void fft(viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT>& input,
+            viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT>& output,
+            SCALARTYPE sign = -1.0)
+  {
+      std::size_t rows_num = input.size1();
+      std::size_t cols_num = input.size2() >> 1;
+
+      std::size_t cols_int = input.internal_size2() >> 1;
+
+      // batch with rows
+      if(detail::fft::is_radix2(cols_num))
+      {
+          output = input;
+          detail::fft::radix2(output.handle(), cols_num, cols_int, rows_num, sign, detail::fft::FFT_DATA_ORDER::ROW_MAJOR);
+      } 
+      else
+      {
+          detail::fft::direct(input.handle(),
+                              output.handle(),
+                              cols_num,
+                              cols_int,
+                              rows_num,
+                              sign,
+                              detail::fft::FFT_DATA_ORDER::ROW_MAJOR
+                              );
+      }
+
+      // batch with cols
+      if(detail::fft::is_radix2(rows_num))
+      {
+          detail::fft::radix2(output.handle(), rows_num, cols_int, cols_num, sign, detail::fft::FFT_DATA_ORDER::COL_MAJOR);
+      } 
+      else
+      {
+          viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> tmp(output.size1(), output.size2());
+          tmp = output;
+
+          detail::fft::direct(tmp.handle(),
+                              output.handle(),
+                              rows_num,
+                              cols_int,
+                              cols_num,
+                              sign,
+                              detail::fft::FFT_DATA_ORDER::COL_MAJOR);
+      }
+  }
+
+  /**
+    * @brief Generic inplace version of inverse 1-D Fourier transformation.
+    *
+    * Shorthand function for fft(sign = 1.0)
+    *
+    * @param input      Input vector.
+    * @param batch_num  Number of items in batch.
+    * @param sign       Sign of exponent, default is -1.0
+    */
+  template<class SCALARTYPE, unsigned int ALIGNMENT>
+  void inplace_ifft(viennacl::vector<SCALARTYPE, ALIGNMENT>& input,
+            std::size_t batch_num = 1)
+  {
+      viennacl::inplace_fft(input, batch_num, SCALARTYPE(1.0));
+      detail::fft::normalize(input);
+  }
+
+  /**
+    * @brief Generic version of inverse 1-D Fourier transformation.
+    *
+    * Shorthand function for fft(sign = 1.0)
+    *
+    * @param input      Input vector.
+    * @param output     Output vector.
+    * @param batch_num  Number of items in batch.
+    * @param sign       Sign of exponent, default is -1.0
+    */
+  template<class SCALARTYPE, unsigned int ALIGNMENT>
+  void ifft(viennacl::vector<SCALARTYPE, ALIGNMENT>& input,
+            viennacl::vector<SCALARTYPE, ALIGNMENT>& output,
+            std::size_t batch_num = 1
+            )
+  {
+      viennacl::fft(input, output, batch_num, SCALARTYPE(1.0));
+      detail::fft::normalize(output);
+  }
+
+  namespace linalg
+  {
+    /**
+      * @brief 1-D convolution of two vectors.
+      *
+      * This function does not make any changes to input vectors
+      *
+      * @param input1     Input vector #1.
+      * @param input2     Input vector #2.
+      * @param output     Output vector.
+      */
+    template<class SCALARTYPE, unsigned int ALIGNMENT>
+    void convolve(viennacl::vector<SCALARTYPE, ALIGNMENT>& input1,
+                  viennacl::vector<SCALARTYPE, ALIGNMENT>& input2,
+                  viennacl::vector<SCALARTYPE, ALIGNMENT>& output
+                  )
+    {
+        assert(input1.size() == input2.size());
+        assert(input1.size() == output.size());
+        //temporal arrays
+        viennacl::vector<SCALARTYPE, ALIGNMENT> tmp1(input1.size());
+        viennacl::vector<SCALARTYPE, ALIGNMENT> tmp2(input2.size());
+        viennacl::vector<SCALARTYPE, ALIGNMENT> tmp3(output.size());
+
+        // align input arrays to equal size
+        // FFT of input data
+        viennacl::fft(input1, tmp1);
+        viennacl::fft(input2, tmp2);
+
+        // multiplication of input data
+        viennacl::detail::fft::multiply(tmp1, tmp2, tmp3);
+        // inverse FFT of input data
+        viennacl::ifft(tmp3, output);
+    }
+
+    /**
+      * @brief 1-D convolution of two vectors.
+      *
+      * This function can make changes to input vectors to avoid additional memory allocations.
+      *
+      * @param input1     Input vector #1.
+      * @param input2     Input vector #2.
+      * @param output     Output vector.
+      */
+    template<class SCALARTYPE, unsigned int ALIGNMENT>
+    void convolve_i(viennacl::vector<SCALARTYPE, ALIGNMENT>& input1,
+                    viennacl::vector<SCALARTYPE, ALIGNMENT>& input2,
+                    viennacl::vector<SCALARTYPE, ALIGNMENT>& output
+                    )
+    {
+        assert(input1.size() == input2.size());
+        assert(input1.size() == output.size());
+
+        viennacl::inplace_fft(input1);
+        viennacl::inplace_fft(input2);
+
+        viennacl::detail::fft::multiply(input1, input2, output);
+
+        viennacl::inplace_ifft(output);
+    }
+  }
+} //namespace linalg
+
+/// @endcond
+#endif
diff --git a/viennacl/forwards.h b/viennacl/forwards.h
index 1b20c72..ee41201 100644
--- a/viennacl/forwards.h
+++ b/viennacl/forwards.h
@@ -1,23 +1,29 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+#ifndef VIENNACL_FORWARDS_H
+#define VIENNACL_FORWARDS_H
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
 
 /** @file viennacl/forwards.h
     @brief This file provides the forward declarations for the main types used within ViennaCL
 */
 
 /**
- @mainpage Source Code Documentation for ViennaCL 1.1.2
+ @mainpage Source Code Documentation for ViennaCL 1.2.0
 
  This is the source code documentation of ViennaCL. Detailed information about the functions in ViennaCL can be found here.
  
@@ -25,12 +31,9 @@
 
 */
 
-#ifndef VIENNACL_FORWARDS_H
-#define VIENNACL_FORWARDS_H
-
-//#include <stddef.h>
 #include <cstddef>
 #include "viennacl/ocl/forwards.h"
+#include "viennacl/meta/enable_if.hpp"
 
 namespace viennacl
 {
@@ -112,14 +115,52 @@ namespace viennacl
   template <typename LHS, typename RHS, typename OP>
   class matrix_expression;
 
+  //
+  // Matrix types:
+  //  
   template <class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
   class matrix;
-
+  
   template<class SCALARTYPE, unsigned int ALIGNMENT = 1>
   class compressed_matrix;
   
   template<class SCALARTYPE, unsigned int ALIGNMENT = 128>
   class coordinate_matrix;    
+
+  template<class SCALARTYPE, unsigned int ALIGNMENT = 1>
+  class circulant_matrix;
+    
+  template<class SCALARTYPE, unsigned int ALIGNMENT = 1>
+  class hankel_matrix;
+  
+  template<class SCALARTYPE, unsigned int ALIGNMENT = 1>
+  class toeplitz_matrix;
+  
+  template<class SCALARTYPE, unsigned int ALIGNMENT = 1>
+  class vandermonde_matrix;
+  
+  //
+  // Proxies:
+  //
+  template <typename SizeType = std::size_t, typename DistanceType = std::ptrdiff_t>
+  class basic_range;
+  
+  typedef basic_range<>  range;
+  
+  template <typename MatrixType>
+  class matrix_range;
+
+  template <typename VectorType>
+  class vector_range;
+  
+  template <typename T>
+  struct is_scalar;
+
+  template <typename T>
+  struct is_vector;
+
+  template <typename T>
+  struct is_matrix;
   
   namespace tools
   {
@@ -137,20 +178,36 @@ namespace viennacl
     
   namespace linalg
   {
-    //forward definition of norm_1_impl function
     template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void norm_1_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec,
-                     scalar<SCALARTYPE> & result);
+    void convolve_i(viennacl::vector<SCALARTYPE, ALIGNMENT>& input1,
+                    viennacl::vector<SCALARTYPE, ALIGNMENT>& input2,
+                    viennacl::vector<SCALARTYPE, ALIGNMENT>& output);
+    
+#ifndef _MSC_VER
+    //forward definition of norm_1_impl function
+    template <typename V1, typename S2>
+    void norm_1_impl(V1 const & vec,
+                     S2 & result,
+                      typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                                    && viennacl::is_scalar<S2>::value
+                                                  >::type * dummy = 0);
 
     //forward definition of norm_2_impl function
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void norm_2_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec,
-                     scalar<SCALARTYPE> & result);
+    template <typename V1, typename S2>
+    void norm_2_impl(V1 const & vec,
+                     S2 & result,
+                     typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                                   && viennacl::is_scalar<S2>::value
+                                                 >::type * dummy = 0);
 
     //forward definition of norm_inf_impl function
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void norm_inf_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec,
-                     scalar<SCALARTYPE> & result);
+    template <typename V1, typename S2>
+    void norm_inf_impl(V1 const & vec,
+                       S2 & result,
+                       typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                                     && viennacl::is_scalar<S2>::value
+                                                   >::type * dummy = 0);
+#endif    
     
     //forward definition of prod_impl functions
     template<class SCALARTYPE, typename F, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
@@ -173,17 +230,26 @@ namespace viennacl
 
                                                     
     //forward definition of inner_prod_impl function
-    template<class SCALARTYPE, unsigned int ALIGNMENT1, unsigned int ALIGNMENT2>
-    viennacl::scalar_expression< const viennacl::vector<SCALARTYPE, ALIGNMENT1>, 
-                                 const viennacl::vector<SCALARTYPE, ALIGNMENT2>,
-                                 viennacl::op_inner_prod >
-    inner_prod_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT1> &,
-                    const viennacl::vector<SCALARTYPE, ALIGNMENT2> &);
-                    
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void inner_prod_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-                         const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
-                         scalar<SCALARTYPE> & result);
+    /*template <typename V1, typename V2>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_vector<V2>::value,
+                                  viennacl::scalar_expression< const V1, 
+                                                               const V2,
+                                                               viennacl::op_inner_prod >
+                                >::type
+    inner_prod_impl(V1 const & vec1,
+                    V2 const & vec2);*/
+    
+#ifndef _MSC_VER
+    template <typename V1, typename V2, typename S3>
+    void inner_prod_impl(V1 const & vec1,
+                         V2 const & vec2,
+                         S3 & result,
+                         typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                                       && viennacl::is_vector<V2>::value
+                                                       && viennacl::is_scalar<S3>::value
+                                                     >::type * dummy = 0);
+#endif                                                   
                     
       
     /** @brief A tag class representing a lower triangular matrix */
diff --git a/viennacl/hankel_matrix.hpp b/viennacl/hankel_matrix.hpp
new file mode 100644
index 0000000..8968010
--- /dev/null
+++ b/viennacl/hankel_matrix.hpp
@@ -0,0 +1,241 @@
+#ifndef VIENNACL_HANKEL_MATRIX_HPP
+#define VIENNACL_HANKEL_MATRIX_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+/** @file hankel_matrix.hpp
+    @brief Implementation of the hankel_matrix class for efficient manipulation of Hankel matrices.  Experimental in 1.2.x.
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/vector.hpp"
+#include "viennacl/ocl/context.hpp"
+
+#include "viennacl/toeplitz_matrix.hpp"
+#include "viennacl/fft.hpp"
+
+#include "viennacl/linalg/hankel_matrix_operations.hpp"
+
+namespace viennacl {
+    /** @brief A Hankel matrix class
+    *
+    * @tparam SCALARTYPE   The underlying scalar type (either float or double)
+    * @tparam ALIGNMENT    The internal memory size is given by (size()/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory.
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT>
+    class hankel_matrix 
+    {
+    public:
+        /**
+         * @brief The default constructor. Does not allocate any memory.
+         *
+         */
+        explicit hankel_matrix()
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+        }
+
+        /**
+         * @brief         Creates the matrix with the given size
+         *
+         * @param rows      Number of rows of the matrix
+         * @param cols      Number of columns of the matrix
+         */
+        explicit hankel_matrix(std::size_t rows, std::size_t cols) : elements_(rows, cols)
+        {
+          assert(rows == cols && "Hankel matrix must be square!");
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+        }
+
+        /** @brief Resizes the matrix.
+        *   Existing entries can be preserved
+        *
+        * @param sz         New size of matrix
+        * @param preserve   If true, existing values are preserved.
+        */
+        void resize(size_t sz, bool preserve = true)
+        {
+            elements_.resize(sz, preserve);
+        }
+
+        /** @brief Returns the OpenCL handle
+        *
+        *   @return OpenCL handle
+        */
+        viennacl::ocl::handle<cl_mem> handle() const { return elements_.handle(); }
+
+        /**
+         * @brief Returns an internal viennacl::toeplitz_matrix, which represents a Hankel matrix elements
+         *
+         */
+        toeplitz_matrix<SCALARTYPE, ALIGNMENT> & elements() { return elements_; }
+        toeplitz_matrix<SCALARTYPE, ALIGNMENT> const & elements() const { return elements_; }
+
+        /**
+         * @brief Returns the number of rows of the matrix
+         */
+        std::size_t size1() const { return elements_.size1(); }
+        
+        /**
+         * @brief Returns the number of columns of the matrix
+         */
+        std::size_t size2() const { return elements_.size2(); }
+
+        /** @brief Returns the internal size of matrix representtion.
+        *   Usually required for launching OpenCL kernels only
+        *
+        *   @return Internal size of matrix representation
+        */
+        std::size_t internal_size() const { return elements_.internal_size(); }
+
+        /**
+         * @brief Read-write access to a element of the matrix
+         *
+         * @param row_index  Row index of accessed element
+         * @param col_index  Column index of accessed element
+         * @return Proxy for matrix entry
+         */
+        entry_proxy<SCALARTYPE> operator()(unsigned int row_index, unsigned int col_index)
+        {
+            assert(row_index < size1() && col_index < size2() && "Invalid access");
+            
+            return elements_(size1() - row_index - 1, col_index);
+        }
+
+        /**
+         * @brief += operation for Hankel matrices
+         *
+         * @param that Matrix which will be added
+         * @return Result of addition
+         */
+        hankel_matrix<SCALARTYPE, ALIGNMENT>& operator +=(hankel_matrix<SCALARTYPE, ALIGNMENT>& that)
+        {
+            elements_ += that.elements();
+            return *this;
+        }
+
+    private:
+        hankel_matrix(hankel_matrix const & t) {}
+        hankel_matrix & operator=(hankel_matrix const & t) {}
+      
+        toeplitz_matrix<SCALARTYPE, ALIGNMENT> elements_;
+    };
+
+    /** @brief Copies a Hankel matrix from the std::vector to the OpenCL device (either GPU or multi-core CPU)
+    *
+    *
+    * @param cpu_vec   A std::vector on the host.
+    * @param gpu_mat   A hankel_matrix from ViennaCL
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    void copy(std::vector<SCALARTYPE> const & cpu_vec, hankel_matrix<SCALARTYPE, ALIGNMENT> & gpu_mat)
+    {
+        assert((gpu_mat.size1() * 2 - 1)  == cpu_vec.size() && "Size mismatch");
+
+        copy(cpu_vec, gpu_mat.elements());
+    }
+
+    /** @brief Copies a Hankel matrix from the OpenCL device (either GPU or multi-core CPU) to the std::vector
+    *
+    *
+    * @param gpu_mat   A hankel_matrix from ViennaCL
+    * @param cpu_vec   A std::vector on the host.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    void copy(hankel_matrix<SCALARTYPE, ALIGNMENT> const & gpu_mat, std::vector<SCALARTYPE> & cpu_vec)
+    {
+        assert((gpu_mat.size1() * 2 - 1)  == cpu_vec.size() && "Size mismatch");
+
+        copy(gpu_mat.elements(), cpu_vec);
+    }
+
+    /** @brief Copies a Hankel matrix from the OpenCL device (either GPU or multi-core CPU) to the matrix-like object
+    *
+    *
+    * @param han_src   A hankel_matrix from ViennaCL
+    * @param com_dst   A matrix-like object
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+    void copy(hankel_matrix<SCALARTYPE, ALIGNMENT> const & han_src, MATRIXTYPE& com_dst)
+    {
+        std::size_t size = han_src.size1();
+        assert(size == com_dst.size1() && "Size mismatch");
+        assert(size == com_dst.size2() && "Size mismatch");
+        std::vector<SCALARTYPE> tmp(size * 2 - 1);
+        copy(han_src, tmp);
+
+        for (std::size_t i = 0; i < size; i++)
+            for (std::size_t j = 0; j < size; j++)
+                com_dst(i, j) = tmp[i + j];
+    }
+    
+    /** @brief Copies a the matrix-like object to the Hankel matrix from the OpenCL device (either GPU or multi-core CPU)
+    *
+    *
+    * @param com_src   A std::vector on the host
+    * @param han_dst   A hankel_matrix from ViennaCL
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+    void copy(MATRIXTYPE const & com_src, hankel_matrix<SCALARTYPE, ALIGNMENT>& han_dst)
+    {
+        std::size_t size = han_dst.size1();
+        assert(size == com_src.size1() && "Size mismatch");
+        assert(size == com_src.size2() && "Size mismatch");
+
+        std::vector<SCALARTYPE> tmp(2*size - 1);
+
+        for (std::size_t i = 0; i < size; i++)
+            tmp[i] = com_src(0, i);
+
+        for (std::size_t i = 1; i < size; i++)
+            tmp[size + i - 1] = com_src(size - 1, i);
+
+        viennacl::copy(tmp, han_dst);
+    }
+
+    /*template <typename SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+    void prod_impl(hankel_matrix<SCALARTYPE, ALIGNMENT>& mat,
+                   vector<SCALARTYPE, VECTOR_ALIGNMENT>& vec,
+                   vector<SCALARTYPE, VECTOR_ALIGNMENT>& result)
+    {
+        prod_impl(mat.elements(), vec, result);
+        fft::reverse(result);
+    }*/
+
+    template<class SCALARTYPE, unsigned int ALIGNMENT>
+    std::ostream & operator<<(std::ostream & s, hankel_matrix<SCALARTYPE, ALIGNMENT>& gpu_matrix)
+    {
+        std::size_t size = gpu_matrix.size1();
+        std::vector<SCALARTYPE> tmp(2*size - 1);
+        copy(gpu_matrix, tmp);
+        s << "[" << size << "," << size << "](";
+
+        for(std::size_t i = 0; i < size; i++) {
+            s << "(";
+            for(std::size_t j = 0; j < size; j++) {
+                s << tmp[i + j];
+                //s << (int)i - (int)j;
+                if(j < (size - 1)) s << ",";
+            }
+            s << ")";
+        }
+        s << ")";
+        return s;
+    }
+}
+#endif // _VIENNACL_HANKEL_MATRIX_HPP
diff --git a/viennacl/io/kernel_parameters.hpp b/viennacl/io/kernel_parameters.hpp
index 6ac39f9..6a81f25 100644
--- a/viennacl/io/kernel_parameters.hpp
+++ b/viennacl/io/kernel_parameters.hpp
@@ -1,20 +1,22 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_IO_KERNEL_PARAMETERS_HPP
+#define VIENNACL_IO_KERNEL_PARAMETERS_HPP
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
-#ifndef VIENNACL_IO_KERNEL_PARAMETERS_HPP
-#define VIENNACL_IO_KERNEL_PARAMETERS_HPP
 
 /** @file kernel_parameters.hpp
     @brief This file holds the code necessary for reading kernel parameters from XML files using pugixml
@@ -23,36 +25,38 @@
 #include "viennacl/ocl/backend.hpp"
 #include "pugixml/src/pugixml.hpp"
 
-namespace viennacl {
-  namespace io {
-  
-    namespace tag {
-      std::string root     = "parameters";
-      std::string devices  = "devices";   
-      std::string device   = "device";   
-      std::string name     = "name";
-      std::string driver   = "driver";
-      std::string compun   = "computeunits";      
-      std::string workgrp  = "workgroupsize";            
-      std::string tests    = "tests";
-      std::string test     = "test";                     
-      std::string numeric  = "numeric";
-      std::string kernels  = "kernels";
-      std::string kernel   = "kernel";
-      std::string params   = "params";
-      std::string param    = "param";
-      std::string value    = "value";   
-      std::string alignment = "alignment";   
+namespace viennacl
+{
+  namespace io 
+  {
+    namespace tag 
+    {
+      static std::string root     = "parameters";
+      static std::string devices  = "devices";   
+      static std::string device   = "device";   
+      static std::string name     = "name";
+      static std::string driver   = "driver";
+      static std::string compun   = "computeunits";      
+      static std::string workgrp  = "workgroupsize";            
+      static std::string tests    = "tests";
+      static std::string test     = "test";                     
+      static std::string numeric  = "numeric";
+      static std::string kernels  = "kernels";
+      static std::string kernel   = "kernel";
+      static std::string params   = "params";
+      static std::string param    = "param";
+      static std::string value    = "value";   
+      static std::string alignment = "alignment";   
     } // end namespace tag
 
     namespace val {
-      std::string globsize = "globalsize";
-      std::string locsize  = "localsize";   
-      std::string vec      = "vector";   
-      std::string matrix   = "matrix";   
-      std::string compmat  = "compressed_matrix";
-      std::string fl       = "float";   
-      std::string dbl      = "double";      
+      static std::string globsize = "globalsize";
+      static std::string locsize  = "localsize";   
+      static std::string vec      = "vector";   
+      static std::string matrix   = "matrix";   
+      static std::string compmat  = "compressed_matrix";
+      static std::string fl       = "float";   
+      static std::string dbl      = "double";      
     }
 
     /** @brief  A XML parameter database using PugiXML. Allows to add tests for different devices and the like */
diff --git a/viennacl/io/matrix_market.hpp b/viennacl/io/matrix_market.hpp
index 152e523..8c4b6f4 100644
--- a/viennacl/io/matrix_market.hpp
+++ b/viennacl/io/matrix_market.hpp
@@ -1,20 +1,22 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_IO_MATRIX_MARKET_HPP
+#define VIENNACL_IO_MATRIX_MARKET_HPP
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
-#ifndef _VIENNACL_MATRIX_MARKET_HPP_
-#define _VIENNACL_MATRIX_MARKET_HPP_
 
 /** @file matrix_market.hpp
     @brief A reader and writer for the matrix market format is implemented here
@@ -29,6 +31,8 @@
 #include <map>
 #include <cctype>
 #include "viennacl/tools/adapter.hpp"
+#include "viennacl/traits/size.hpp"
+#include "viennacl/traits/fill.hpp"
 
 namespace viennacl
 {
@@ -218,7 +222,7 @@ namespace viennacl
             }
             
             if (rows > 0 && cols > 0)
-              mat.resize(rows, cols, false);
+              viennacl::traits::resize(mat, rows, cols);
             
             is_header = false;
           }
@@ -229,9 +233,9 @@ namespace viennacl
             {
               double value;
               line >> value;
-              mat(cur_row, cur_col) = value;
+              viennacl::traits::fill(mat, cur_row, cur_col, value);
               
-              if (++cur_row == static_cast<long>(mat.size1()))
+              if (++cur_row == static_cast<long>(viennacl::traits::size1(mat)))
               {
                 //next column
                 ++cur_col;
@@ -273,21 +277,21 @@ namespace viennacl
                 return 0;
               }
               
-              if (row >= static_cast<long>(mat.size1()) || row < 0)
+              if (row >= static_cast<long>(viennacl::traits::size1(mat)) || row < 0)
               {
-                std::cerr << "Error in file " << file << " at line " << linenum << ": Row index out of bounds: " << row << " (matrix dim: " << mat.size1() << " x " << mat.size2() << ")" << std::endl;
+                std::cerr << "Error in file " << file << " at line " << linenum << ": Row index out of bounds: " << row << " (matrix dim: " << viennacl::traits::size1(mat) << " x " << viennacl::traits::size2(mat) << ")" << std::endl;
                 return 0;
               }
                   
-              if (col >= static_cast<long>(mat.size2()) || col < 0)
+              if (col >= static_cast<long>(viennacl::traits::size2(mat)) || col < 0)
               {
-                std::cerr << "Error in file " << file << " at line " << linenum << ": Column index out of bounds: " << col << " (matrix dim: " << mat.size1() << " x " << mat.size2() << ")" << std::endl;
+                std::cerr << "Error in file " << file << " at line " << linenum << ": Column index out of bounds: " << col << " (matrix dim: " << viennacl::traits::size1(mat) << " x " << viennacl::traits::size2(mat) << ")" << std::endl;
                 return 0;
               }
               
-              mat(row, col) = value;
+              viennacl::traits::fill(mat, row, col, value); //basically equivalent to mat(row, col) = value;
               if (symmetric)
-                mat(col, row) = value;
+                viennacl::traits::fill(mat, col, row, value); //basically equivalent to mat(col, row) = value;
               
               if (++valid_entries == nnz)
                 break;
diff --git a/viennacl/linalg/amg.hpp b/viennacl/linalg/amg.hpp
new file mode 100755
index 0000000..f055bed
--- /dev/null
+++ b/viennacl/linalg/amg.hpp
@@ -0,0 +1,768 @@
+#ifndef VIENNACL_LINALG_AMG_HPP_
+#define VIENNACL_LINALG_AMG_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/amg.hpp
+    @brief Main include file for algebraic multigrid (AMG) preconditioners.  Experimental in 1.2.x.
+    
+    Implementation contributed by Markus Wagner
+*/
+
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/lu.hpp>
+#include <boost/numeric/ublas/operation.hpp>
+#include <boost/numeric/ublas/vector_proxy.hpp>
+#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/ublas/vector.hpp>
+#include <boost/numeric/ublas/triangular.hpp> 
+#include <vector>
+#include <cmath>
+#include "viennacl/forwards.h"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/linalg/direct_solve.hpp"
+
+#include "viennacl/linalg/detail/amg/amg_base.hpp"
+#include "viennacl/linalg/detail/amg/amg_coarse.hpp"
+#include "viennacl/linalg/detail/amg/amg_interpol.hpp"
+
+#include <map>
+
+#ifdef _OPENMP
+ #include <omp.h>
+#endif
+
+#include "viennacl/linalg/detail/amg/amg_debug.hpp"
+
+#define VIENNACL_AMG_COARSE_LIMIT 50
+#define VIENNACL_AMG_MAX_LEVELS 100
+
+namespace viennacl
+{
+  namespace linalg
+  {    
+    typedef detail::amg::amg_tag          amg_tag;
+    
+    
+    
+    /** @brief Setup AMG preconditioner
+    *
+    * @param A      Operator matrices on all levels
+    * @param P      Prolongation/Interpolation operators on all levels
+    * @param Pointvector  Vector of points on all levels
+    * @param tag    AMG preconditioner tag 
+    */
+    template <typename InternalType1, typename InternalType2>
+    void amg_setup(InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+    {
+      typedef typename InternalType1::value_type SparseMatrixType;
+      typedef typename InternalType2::value_type PointVectorType;     
+      typedef typename SparseMatrixType::value_type ScalarType;   
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      unsigned int i, iterations, c_points, f_points;
+      detail::amg::amg_slicing<InternalType1,InternalType2> Slicing;
+      
+      // Set number of iterations. If automatic coarse grid construction is chosen (0), then set a maximum size and stop during the process.
+      iterations = tag.get_coarselevels();
+      if (iterations == 0)
+        iterations = VIENNACL_AMG_MAX_LEVELS;
+             
+      // For parallel coarsenings build data structures (number of threads set automatically).
+      if (tag.get_coarse() == VIENNACL_AMG_COARSE_RS0 || tag.get_coarse() == VIENNACL_AMG_COARSE_RS3)
+        Slicing.init(iterations);
+      
+      for (i=0; i<iterations; ++i)
+      {  
+        // Initialize Pointvector on level i and construct points.
+        Pointvector[i] = PointVectorType(A[i].size1());
+        Pointvector[i].init_points();
+        
+        // Construct C and F points on coarse level (i is fine level, i+1 coarse level).
+        detail::amg::amg_coarse (i, A, Pointvector, Slicing, tag);
+
+        // Calculate number of C and F points on level i.
+        c_points = Pointvector[i].get_cpoints();
+        f_points = Pointvector[i].get_fpoints();
+
+        #if defined (DEBUG) //or defined(DEBUGBENCH) 
+        std::cout << "Level " << i << ": ";
+        std::cout << "No of C points = " << c_points << ", ";
+        std::cout << "No of F points = " << f_points << std::endl;
+        #endif
+        
+        // Stop routine when the maximal coarse level is found (no C or F point). Coarsest level is level i.
+        if (c_points == 0 || f_points == 0)
+          break;
+          
+        // Construct interpolation matrix for level i.
+        detail::amg::amg_interpol (i, A, P, Pointvector, tag);
+        
+        // Compute coarse grid operator (A[i+1] = R * A[i] * P) with R = trans(P).
+        detail::amg::amg_galerkin_prod(A[i], P[i], A[i+1]);
+        
+        // Test triple matrix product. Very slow for large matrix sizes (ublas).
+        // test_triplematprod(A[i],P[i],A[i+1]);
+        
+        Pointvector[i].delete_points();
+        
+        #ifdef DEBUG
+        std::cout << "Coarse Grid Operator Matrix:" << std::endl;
+        printmatrix (A[i+1]);
+        #endif  
+        
+        // If Limit of coarse points is reached then stop. Coarsest level is level i+1.
+        if (tag.get_coarselevels() == 0 && c_points <= VIENNACL_AMG_COARSE_LIMIT)
+        {
+          tag.set_coarselevels(i+1);
+          return;
+        }
+      }
+      tag.set_coarselevels(i);  
+    }
+    
+    /** @brief Initialize AMG preconditioner
+    *
+    * @param mat    System matrix
+    * @param A      Operator matrices on all levels
+    * @param P      Prolongation/Interpolation operators on all levels
+    * @param Pointvector  Vector of points on all levels
+    * @param tag    AMG preconditioner tag 
+    */
+    template <typename MatrixType, typename InternalType1, typename InternalType2>
+    void amg_init(MatrixType const & mat, InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+    {
+      typedef typename MatrixType::value_type ScalarType;
+      typedef typename InternalType1::value_type SparseMatrixType;
+      
+      if (tag.get_coarselevels() > 0)
+      {
+        A.resize(tag.get_coarselevels()+1);
+        P.resize(tag.get_coarselevels());
+        Pointvector.resize(tag.get_coarselevels());
+      }
+      else
+      {
+        A.resize(VIENNACL_AMG_MAX_LEVELS+1);
+        P.resize(VIENNACL_AMG_MAX_LEVELS);
+        Pointvector.resize(VIENNACL_AMG_MAX_LEVELS);
+      }
+      
+      // Insert operator matrix as operator for finest level.
+      SparseMatrixType A0 (mat);
+      A.insert_element (0, A0);  
+    }
+    
+    /** @brief Save operators after setup phase for CPU computation.
+    *
+    * @param A      Operator matrices on all levels on the CPU
+    * @param P      Prolongation/Interpolation operators on all levels on the CPU
+    * @param R      Restriction operators on all levels on the CPU
+    * @param A_setup    Operators matrices on all levels from setup phase
+    * @param P_setup    Prolongation/Interpolation operators on all levels from setup phase
+    * @param tag    AMG preconditioner tag 
+    */
+    template <typename InternalType1, typename InternalType2>
+    void amg_transform_cpu (InternalType1 & A, InternalType1 & P, InternalType1 & R, InternalType2 & A_setup, InternalType2 & P_setup, amg_tag & tag)
+    {  
+      typedef typename InternalType1::value_type MatrixType;
+      
+      // Resize internal data structures to actual size.
+      A.resize(tag.get_coarselevels()+1);
+      P.resize(tag.get_coarselevels());
+      R.resize(tag.get_coarselevels());
+      
+      // Transform into matrix type.
+      for (unsigned int i=0; i<tag.get_coarselevels()+1; ++i)
+      {
+        A[i].resize(A_setup[i].size1(),A_setup[i].size2(),false);
+        A[i] = A_setup[i];
+      }
+      for (unsigned int i=0; i<tag.get_coarselevels(); ++i)
+      {
+        P[i].resize(P_setup[i].size1(),P_setup[i].size2(),false);
+        P[i] = P_setup[i];
+      }
+      for (unsigned int i=0; i<tag.get_coarselevels(); ++i)
+      {
+        R[i].resize(P_setup[i].size2(),P_setup[i].size1(),false);
+        P_setup[i].set_trans(true);
+        R[i] = P_setup[i];
+        P_setup[i].set_trans(false);
+      }
+    }
+    
+    /** @brief Save operators after setup phase for GPU computation.
+    *
+    * @param A      Operator matrices on all levels on the GPU
+    * @param P      Prolongation/Interpolation operators on all levels on the GPU
+    * @param R      Restriction operators on all levels on the GPU
+    * @param A_setup    Operators matrices on all levels from setup phase
+    * @param P_setup    Prolongation/Interpolation operators on all levels from setup phase
+    * @param tag    AMG preconditioner tag 
+    */
+    template <typename InternalType1, typename InternalType2>
+    void amg_transform_gpu (InternalType1 & A, InternalType1 & P, InternalType1 & R, InternalType2 & A_setup, InternalType2 & P_setup, amg_tag & tag)
+    {
+      typedef typename InternalType1::value_type MatrixType;
+      typedef typename InternalType2::value_type::value_type ScalarType;
+      
+      // Resize internal data structures to actual size.
+      A.resize(tag.get_coarselevels()+1);
+      P.resize(tag.get_coarselevels());
+      R.resize(tag.get_coarselevels());
+      
+      // Copy to GPU using the internal sparse matrix structure: std::vector<std::map>.
+      for (unsigned int i=0; i<tag.get_coarselevels()+1; ++i)
+      {
+        A[i].resize(A_setup[i].size1(),A_setup[i].size2(),false);
+        viennacl::copy(*(A_setup[i].get_internal_pointer()),A[i]);
+      }
+      for (unsigned int i=0; i<tag.get_coarselevels(); ++i)
+      {
+        P[i].resize(P_setup[i].size1(),P_setup[i].size2(),false);
+        viennacl::copy(*(P_setup[i].get_internal_pointer()),P[i]);
+        //viennacl::copy((boost::numeric::ublas::compressed_matrix<ScalarType>)P_setup[i],P[i]);
+      }
+      for (unsigned int i=0; i<tag.get_coarselevels(); ++i)
+      {
+        R[i].resize(P_setup[i].size2(),P_setup[i].size1(),false);
+        P_setup[i].set_trans(true);
+        viennacl::copy(*(P_setup[i].get_internal_pointer()),R[i]);
+        P_setup[i].set_trans(false);
+      }
+    }
+    
+    /** @brief Setup data structures for precondition phase.
+    *
+    * @param result    Result vector on all levels
+    * @param rhs    RHS vector on all levels
+    * @param residual    Residual vector on all levels
+    * @param A      Operators matrices on all levels from setup phase
+    * @param tag    AMG preconditioner tag 
+    */
+    template <typename InternalVectorType, typename SparseMatrixType>
+    void amg_setup_apply (InternalVectorType & result, InternalVectorType & rhs, InternalVectorType & residual, SparseMatrixType const & A, amg_tag const & tag)
+    {        
+      typedef typename InternalVectorType::value_type VectorType;
+      
+      result.resize(tag.get_coarselevels()+1);
+      rhs.resize(tag.get_coarselevels()+1);
+      residual.resize(tag.get_coarselevels());
+            
+      for (unsigned int level=0; level < tag.get_coarselevels()+1; ++level)
+      {
+        result[level] = VectorType(A[level].size1());
+        result[level].clear();
+        rhs[level] = VectorType(A[level].size1());
+        rhs[level].clear();
+      }
+      for (unsigned int level=0; level < tag.get_coarselevels(); ++level)
+      {
+        residual[level] = VectorType(A[level].size1());
+        residual[level].clear();
+      }
+    }
+    /** @brief Pre-compute LU factorization for direct solve (ublas library).
+     *  @brief Speeds up precondition phase as this is computed only once overall instead of once per iteration.
+    *
+    * @param op      Operator matrix for direct solve
+    * @param Permutation  Permutation matrix which saves the factorization result
+    * @param A      Operator matrix on coarsest level
+    */
+    template <typename ScalarType, typename SparseMatrixType>
+    void amg_lu(boost::numeric::ublas::compressed_matrix<ScalarType> & op, boost::numeric::ublas::permutation_matrix<ScalarType> & Permutation, SparseMatrixType const & A)
+    {
+      typedef typename SparseMatrixType::const_iterator1 ConstRowIterator;
+      typedef typename SparseMatrixType::const_iterator2 ConstColIterator;
+    
+      // Copy to operator matrix. Needed 
+      op.resize(A.size1(),A.size2(),false);
+      for (ConstRowIterator row_iter = A.begin1(); row_iter != A.end1(); ++row_iter)
+        for (ConstColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+          op (col_iter.index1(), col_iter.index2()) = *col_iter;
+      
+      // Permutation matrix has to be reinitialized with actual size. Do not clear() or resize()!
+      Permutation = boost::numeric::ublas::permutation_matrix<ScalarType> (op.size1());
+      boost::numeric::ublas::lu_factorize(op,Permutation);
+    }
+    
+    /** @brief AMG preconditioner class, can be supplied to solve()-routines
+    */
+    template <typename MatrixType>
+    class amg_precond
+    {
+      typedef typename MatrixType::value_type ScalarType;
+      typedef boost::numeric::ublas::vector<ScalarType> VectorType;
+      typedef detail::amg::amg_sparsematrix<ScalarType> SparseMatrixType;
+      typedef detail::amg::amg_pointvector PointVectorType;
+      
+      typedef typename SparseMatrixType::const_iterator1 InternalConstRowIterator;
+      typedef typename SparseMatrixType::const_iterator2 InternalConstColIterator;
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      boost::numeric::ublas::vector <SparseMatrixType> A_setup;
+      boost::numeric::ublas::vector <SparseMatrixType> P_setup;
+      boost::numeric::ublas::vector <MatrixType> A;
+      boost::numeric::ublas::vector <MatrixType> P;
+      boost::numeric::ublas::vector <MatrixType> R;
+      boost::numeric::ublas::vector <PointVectorType> Pointvector;
+       
+      mutable boost::numeric::ublas::compressed_matrix<ScalarType> op;
+      mutable boost::numeric::ublas::permutation_matrix<ScalarType> Permutation;  
+      
+      mutable boost::numeric::ublas::vector <VectorType> result;
+      mutable boost::numeric::ublas::vector <VectorType> rhs;
+      mutable boost::numeric::ublas::vector <VectorType> residual;
+      
+      mutable bool done_init_apply;
+          
+      amg_tag _tag;
+    public:
+    
+      amg_precond(): Permutation(0) {}
+      /** @brief The constructor. Saves system matrix, tag and builds data structures for setup.
+      *
+      * @param mat  System matrix
+      * @param tag  The AMG tag
+      */
+      amg_precond(MatrixType const & mat, amg_tag const & tag): Permutation(0)
+      {
+        _tag = tag;
+        // Initialize data structures.
+        amg_init (mat,A_setup,P_setup,Pointvector,_tag);
+        
+        done_init_apply = false;
+      }
+      
+      /** @brief Start setup phase for this class and copy data structures.
+      */
+      void setup()
+      {
+        // Start setup phase.
+        amg_setup(A_setup,P_setup,Pointvector,_tag);
+        // Transform to CPU-Matrixtype for precondition phase.
+        amg_transform_cpu(A,P,R,A_setup,P_setup,_tag);
+        
+        done_init_apply = false;
+      }
+      
+      /** @brief Prepare data structures for preconditioning:
+       *  Build data structures for precondition phase.
+       *  Do LU factorization on coarsest level.
+      */
+      void init_apply() const
+      {
+        // Setup precondition phase (Data structures).
+        amg_setup_apply(result,rhs,residual,A_setup,_tag);
+        // Do LU factorization for direct solve.
+        amg_lu(op,Permutation,A_setup[_tag.get_coarselevels()]);
+        
+        done_init_apply = true;
+      }
+      
+      /** @brief Returns complexity measures.
+      *
+      * @param avgstencil  Average stencil sizes on all levels
+      * @return     Operator complexity of AMG method
+      */
+      template <typename VectorType>
+      ScalarType calc_complexity(VectorType & avgstencil)
+      {
+        avgstencil = VectorType (_tag.get_coarselevels()+1);
+        unsigned int nonzero=0, systemmat_nonzero=0, level_coefficients=0;
+          
+        for (unsigned int level=0; level < _tag.get_coarselevels()+1; ++level)
+        {
+          level_coefficients = 0;
+          for (InternalRowIterator row_iter = A_setup[level].begin1(); row_iter != A_setup[level].end1(); ++row_iter)
+          { 
+            for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+            {
+              if (level == 0)
+                systemmat_nonzero++;
+              nonzero++;
+              level_coefficients++;
+            }
+          }
+          avgstencil[level] = level_coefficients/(double)A_setup[level].size1();
+        }
+        return nonzero/static_cast<double>(systemmat_nonzero);
+      }
+
+      /** @brief Precondition Operation
+      *
+      * @param vec The vector to which preconditioning is applied to (ublas version)
+      */
+      template <typename VectorType>
+      void apply(VectorType & vec) const
+      {   
+        // Build data structures and do lu factorization before first iteration step.
+        if (!done_init_apply)
+          init_apply();
+        
+        int level;
+        
+        // Precondition operation (Yang, p.3)
+        rhs[0] = vec;
+        for (level=0; level <(signed)_tag.get_coarselevels(); level++)
+        {    
+          result[level].clear();
+          
+          // Apply Smoother _presmooth times.
+          smooth_jacobi (level, _tag.get_presmooth(), result[level], rhs[level]);    
+          
+          #ifdef DEBUG
+          std::cout << "After presmooth:" << std::endl;
+          printvector(result[level]);
+          #endif
+
+          // Compute residual.
+          residual[level] = rhs[level] - boost::numeric::ublas::prod (A[level],result[level]);
+          
+          #ifdef DEBUG          
+          std::cout << "Residual:" << std::endl;
+          printvector(residual[level]);
+          #endif
+          
+          // Restrict to coarse level. Restricted residual is RHS of coarse level.
+          rhs[level+1] = boost::numeric::ublas::prod (R[level],residual[level]);
+          
+          #ifdef DEBUG
+          std::cout << "Restricted Residual: " << std::endl;
+          printvector(rhs[level+1]);
+          #endif
+        }
+          
+        // On highest level use direct solve to solve equation.
+        result[level] = rhs[level];
+        boost::numeric::ublas::lu_substitute(op,Permutation,result[level]);
+
+        #ifdef DEBUG
+        std::cout << "After direct solve: " << std::endl;
+        printvector (result[level]);
+        #endif
+          
+        for (level=_tag.get_coarselevels()-1; level >= 0; level--)
+        {       
+          #ifdef DEBUG
+          std::cout << "Coarse Error: " << std::endl;
+          printvector(result[level+1]);
+          #endif
+          
+          // Interpolate error to fine level. Correct solution by adding error.
+          result[level] += boost::numeric::ublas::prod (P[level], result[level+1]);
+              
+          #ifdef DEBUG
+          std::cout << "Corrected Result: " << std::endl;
+          printvector (result[level]);
+          #endif
+          
+          // Apply Smoother _postsmooth times.
+          smooth_jacobi (level, _tag.get_postsmooth(), result[level], rhs[level]);
+          
+          #ifdef DEBUG
+          std::cout << "After postsmooth: " << std::endl;
+          printvector (result[level]);
+          #endif
+        }    
+        vec = result[0];
+      }
+      
+      /** @brief (Weighted) Jacobi Smoother (CPU version)
+      * @param level    Coarse level to which smoother is applied to
+      * @param iterations  Number of smoother iterations    
+      * @param x     The vector smoothing is applied to
+      * @param rhs    The right hand side of the equation for the smoother
+      */
+      template <typename VectorType>
+      void smooth_jacobi(int level, int const iterations, VectorType & x, VectorType const & rhs) const
+      {
+        VectorType old_result (x.size());
+        unsigned int index;
+        ScalarType sum = 0, diag = 1;
+        
+        for (int i=0; i<iterations; ++i)
+        {
+          old_result = x;
+          x.clear();
+#ifdef _OPENMP
+          #pragma omp parallel for private (sum,diag) shared (rhs,x)
+#endif          
+          for (index=0; index<A_setup[level].size1(); ++index)  
+          {
+            InternalConstRowIterator row_iter = A_setup[level].begin1();
+            row_iter += index; 
+            sum = 0;
+            diag = 1;
+            for (InternalConstColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+            {
+              if (col_iter.index1() == col_iter.index2())
+                diag = *col_iter;
+              else
+                sum += *col_iter * old_result[col_iter.index2()];
+            }
+            x[index]= _tag.get_jacobiweight() * (rhs[index] - sum) / diag + (1-_tag.get_jacobiweight()) * old_result[index];
+          }
+        }
+      }
+      
+      amg_tag & tag() { return _tag; }
+    };
+    
+    /** @brief AMG preconditioner class, can be supplied to solve()-routines.
+    *
+    *  Specialization for compressed_matrix
+    */
+    template <typename ScalarType, unsigned int MAT_ALIGNMENT>
+    class amg_precond< compressed_matrix<ScalarType, MAT_ALIGNMENT> >
+    {
+      typedef viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT> MatrixType;
+      typedef viennacl::vector<ScalarType> VectorType;
+      typedef detail::amg::amg_sparsematrix<ScalarType> SparseMatrixType;
+      typedef detail::amg::amg_pointvector PointVectorType;
+      
+      typedef typename SparseMatrixType::const_iterator1 InternalConstRowIterator;
+      typedef typename SparseMatrixType::const_iterator2 InternalConstColIterator;
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      boost::numeric::ublas::vector <SparseMatrixType> A_setup;
+      boost::numeric::ublas::vector <SparseMatrixType> P_setup;
+      boost::numeric::ublas::vector <MatrixType> A;
+      boost::numeric::ublas::vector <MatrixType> P;
+      boost::numeric::ublas::vector <MatrixType> R;
+      boost::numeric::ublas::vector <PointVectorType> Pointvector;
+      
+      mutable boost::numeric::ublas::compressed_matrix<ScalarType> op;
+      mutable boost::numeric::ublas::permutation_matrix<ScalarType> Permutation;  
+      
+      mutable boost::numeric::ublas::vector <VectorType> result;
+      mutable boost::numeric::ublas::vector <VectorType> rhs;
+      mutable boost::numeric::ublas::vector <VectorType> residual;
+          
+      mutable bool done_init_apply;
+    
+      amg_tag _tag;
+      
+    public:
+      
+      amg_precond(): Permutation(0) {}
+      
+      /** @brief The constructor. Builds data structures.
+      *
+      * @param mat  System matrix
+      * @param tag  The AMG tag
+      */
+      amg_precond(compressed_matrix<ScalarType, MAT_ALIGNMENT> const & mat, amg_tag const & tag): Permutation(0)
+      {
+        _tag = tag;
+        
+        // Copy to CPU. Internal structure of sparse matrix is used for copy operation.
+        std::vector<std::map<unsigned int, ScalarType> > mat2 = std::vector<std::map<unsigned int, ScalarType> >(mat.size1());
+        viennacl::copy(mat, mat2);
+        
+        // Initialize data structures.
+        amg_init (mat2,A_setup,P_setup,Pointvector,_tag);
+          
+        done_init_apply = false;
+      }
+      
+      /** @brief Start setup phase for this class and copy data structures.
+      */
+      void setup()
+      {
+        // Start setup phase.
+        amg_setup(A_setup,P_setup,Pointvector,_tag);  
+        // Transform to GPU-Matrixtype for precondition phase.
+        amg_transform_gpu(A,P,R,A_setup,P_setup,_tag);  
+        
+        done_init_apply = false;
+      }
+      
+      /** @brief Prepare data structures for preconditioning:
+       *  Build data structures for precondition phase.
+       *  Do LU factorization on coarsest level.
+      */
+      void init_apply() const
+      {
+        // Setup precondition phase (Data structures).
+        amg_setup_apply(result,rhs,residual,A_setup,_tag);
+        // Do LU factorization for direct solve.
+        amg_lu(op,Permutation,A_setup[_tag.get_coarselevels()]);
+        
+        done_init_apply = true;
+      }
+
+      /** @brief Returns complexity measures
+      *
+      * @param avgstencil  Average stencil sizes on all levels
+      * @return     Operator complexity of AMG method
+      */
+      template <typename VectorType>
+      ScalarType calc_complexity(VectorType & avgstencil)
+      {
+        avgstencil = VectorType (_tag.get_coarselevels()+1);
+        unsigned int nonzero=0, systemmat_nonzero=0, level_coefficients=0;
+        
+        for (unsigned int level=0; level < _tag.get_coarselevels()+1; ++level)
+        {
+          level_coefficients = 0;
+          for (InternalRowIterator row_iter = A_setup[level].begin1(); row_iter != A_setup[level].end1(); ++row_iter)
+          { 
+            for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+            {
+              if (level == 0)
+                systemmat_nonzero++;
+              nonzero++;
+              level_coefficients++;
+            }
+          }
+          avgstencil[level] = level_coefficients/(double)A[level].size1();
+        }
+        return nonzero/static_cast<double>(systemmat_nonzero);
+      }
+
+      /** @brief Precondition Operation
+      *
+      * @param vec The vector to which preconditioning is applied to 
+      */
+      template <typename VectorType>
+      void apply(VectorType & vec) const
+      {
+        if (!done_init_apply)
+          init_apply();  
+        
+        int level;
+        
+        // Precondition operation (Yang, p.3).
+        rhs[0] = vec;
+        for (level=0; level <(signed)_tag.get_coarselevels(); level++)
+        {    
+          result[level].clear();
+          
+          // Apply Smoother _presmooth times.
+          smooth_jacobi (level, _tag.get_presmooth(), result[level], rhs[level]);
+
+          #ifdef DEBUG
+          std::cout << "After presmooth: " << std::endl;
+          printvector(result[level]);
+          #endif
+          
+          // Compute residual.
+          residual[level] = rhs[level] - viennacl::linalg::prod (A[level],result[level]);
+          
+          #ifdef DEBUG             
+          std::cout << "Residual: " << std::endl;
+          printvector(residual[level]);
+          #endif
+          
+          // Restrict to coarse level. Result is RHS of coarse level equation.
+          //residual_coarse[level] = viennacl::linalg::prod(R[level],residual[level]);
+          rhs[level+1] = viennacl::linalg::prod(R[level],residual[level]);
+          
+          #ifdef DEBUG
+          std::cout << "Restricted Residual: " << std::endl;
+          printvector(rhs[level+1]);
+          #endif
+        }
+          
+        // On highest level use direct solve to solve equation (on the CPU)
+        //TODO: Use GPU direct solve!
+        result[level] = rhs[level];
+        boost::numeric::ublas::vector <ScalarType> result_cpu (result[level].size());
+
+        copy (result[level],result_cpu);
+        boost::numeric::ublas::lu_substitute(op,Permutation,result_cpu);
+        copy (result_cpu, result[level]);
+        
+        #ifdef DEBUG
+        std::cout << "After direct solve: " << std::endl;
+        printvector (result[level]);
+        #endif
+          
+        for (level=_tag.get_coarselevels()-1; level >= 0; level--)
+        {   
+          #ifdef DEBUG
+          std::cout << "Coarse Error: " << std::endl;
+          printvector(result[level+1]);
+          #endif
+          
+          // Interpolate error to fine level and correct solution.
+          result[level] += viennacl::linalg::prod(P[level],result[level+1]);
+              
+          #ifdef DEBUG
+          std::cout << "Corrected Result: " << std::endl;
+          printvector (result[level]);
+          #endif
+          
+          // Apply Smoother _postsmooth times.
+          smooth_jacobi (level, _tag.get_postsmooth(), result[level], rhs[level]);
+          
+          #ifdef DEBUG
+          std::cout << "After postsmooth: " << std::endl;
+          printvector (result[level]);
+          #endif
+        }    
+        vec = result[0];
+      }
+      
+      /** @brief Jacobi Smoother (GPU version)
+      * @param level       Coarse level to which smoother is applied to
+      * @param iterations  Number of smoother iterations    
+      * @param x           The vector smoothing is applied to
+      * @param rhs         The right hand side of the equation for the smoother
+      */
+      template <typename VectorType>
+      void smooth_jacobi(int level, unsigned int iterations, VectorType & x, VectorType const & rhs) const
+      {     
+        VectorType old_result (x.size());
+  
+  //viennacl::ocl::program & p = viennacl::ocl::current_context().add_program
+  //          (viennacl::tools::make_double_kernel(jacobi_kernel,viennacl::ocl::current_device().info()), "jacobi_kernel");
+  //viennacl::ocl::kernel & k = p.add_kernel("jacobi");
+  
+        viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::compressed_matrix<ScalarType, MAT_ALIGNMENT>::program_name(),
+                    "jacobi");
+  
+        for (unsigned int i=0; i<iterations; ++i)
+        {
+          old_result = x;    
+          x.clear();
+          viennacl::ocl::enqueue(k(A[level].handle1(), A[level].handle2(), A[level].handle(),
+                                  static_cast<ScalarType>(_tag.get_jacobiweight()), 
+                                  old_result,
+                                  x,
+                                  rhs,
+                                  static_cast<cl_uint>(rhs.size()))); 
+          
+        }
+      }
+      
+      amg_tag & tag() { return _tag; }
+    };
+
+  }
+}
+
+
+
+#endif
+
diff --git a/viennacl/linalg/bicgstab.hpp b/viennacl/linalg/bicgstab.hpp
index f58e939..5817d34 100644
--- a/viennacl/linalg/bicgstab.hpp
+++ b/viennacl/linalg/bicgstab.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_BICGSTAB_HPP_
-#define _VIENNACL_BICGSTAB_HPP_
+#ifndef VIENNACL_BICGSTAB_HPP_
+#define VIENNACL_BICGSTAB_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file bicgstab.hpp
     @brief The stabilized bi-conjugate gradient method is implemented here
@@ -25,6 +27,9 @@
 #include "viennacl/tools/tools.hpp"
 #include "viennacl/linalg/prod.hpp"
 #include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/traits/clear.hpp"
+#include "viennacl/traits/size.hpp"
+#include "viennacl/meta/result_of.hpp"
 
 namespace viennacl
 {
@@ -79,11 +84,11 @@ namespace viennacl
     template <typename MatrixType, typename VectorType>
     VectorType solve(const MatrixType & matrix, VectorType const & rhs, bicgstab_tag const & tag)
     {
-      typedef typename viennacl::tools::result_of::value_type<VectorType>::type            ScalarType;
-      typedef typename viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType    CPU_ScalarType;
-      unsigned int problem_size = viennacl::tools::traits::size(rhs);
+      typedef typename viennacl::result_of::value_type<VectorType>::type        ScalarType;
+      typedef typename viennacl::result_of::cpu_value_type<ScalarType>::type    CPU_ScalarType;
+      unsigned int problem_size = viennacl::traits::size(rhs);
       VectorType result(problem_size);
-      viennacl::tools::traits::clear(result);
+      viennacl::traits::clear(result);
 
       VectorType residual = rhs;
       VectorType p = rhs;
@@ -112,14 +117,6 @@ namespace viennacl
         s = residual;
         s -= alpha*tmp0;
         
-        //std::cout << "alpha: " << alpha << std::endl;
-        /*std::cout << "s[0]: " << s[0] << std::endl;
-        std::cout << "s[end]: " << s[s.size()-1] << std::endl;
-        for (long k=0; k<10; ++k)
-          std::cout << s[k] << std::endl;
-        exit(0);*/
-        
-        
         tmp1 = viennacl::linalg::prod(matrix, s);
         //omega = viennacl::linalg::inner_prod(tmp1, s) / viennacl::linalg::inner_prod(tmp1, tmp1);
         inner_prod_temp = viennacl::linalg::inner_prod(tmp1, s);
@@ -136,7 +133,7 @@ namespace viennacl
         residual -= omega*tmp1;
         
         new_ip_rr0star = viennacl::linalg::inner_prod(residual,r0star);
-        if (std::fabs( viennacl::linalg::inner_prod(residual, residual) / norm_rhs_host) < tag.tolerance() * tag.tolerance())
+        if (fabs(CPU_ScalarType(viennacl::linalg::inner_prod(residual, residual)) / norm_rhs_host) < tag.tolerance() * tag.tolerance())
           break;
         
         //beta = new_ip_rr0star / ip_rr0star * alpha/omega;
@@ -144,14 +141,16 @@ namespace viennacl
         beta = cpu_temp / ip_rr0star * alpha/omega;
         ip_rr0star = cpu_temp;
 
-        //p = residual + beta * (p - omega*tmp0);
+        // Execution of
+        //  p = residual + beta * (p - omega*tmp0);
+        // without introducing temporary vectors:
         p -= omega * tmp0;
         p *= beta;
         p += residual;
       }
       
       //store last error estimate:
-      tag.error(std::sqrt(std::fabs(viennacl::linalg::inner_prod(residual, residual) / norm_rhs_host)));
+      tag.error(std::sqrt(fabs(CPU_ScalarType(viennacl::linalg::inner_prod(residual, residual)) / norm_rhs_host)));
       
       return result;
     }
@@ -175,9 +174,9 @@ namespace viennacl
     template <typename MatrixType, typename VectorType, typename PreconditionerType>
     VectorType solve(const MatrixType & matrix, VectorType const & rhs, bicgstab_tag const & tag, PreconditionerType const & precond)
     {
-      typedef typename viennacl::tools::result_of::value_type<VectorType>::type    ScalarType;
-      typedef typename viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType    CPU_ScalarType;
-      unsigned int problem_size = viennacl::tools::traits::size(rhs);
+      typedef typename viennacl::result_of::value_type<VectorType>::type        ScalarType;
+      typedef typename viennacl::result_of::cpu_value_type<ScalarType>::type    CPU_ScalarType;
+      unsigned int problem_size = viennacl::traits::size(rhs);
       VectorType result(problem_size);
       result.clear();
 
@@ -227,7 +226,7 @@ namespace viennacl
         residual -= omega*tmp1;
         
         new_ip_rr0star = viennacl::linalg::inner_prod(residual,r0star);
-        if (std::fabs(viennacl::linalg::inner_prod(residual, residual) / norm_rhs_host) < tag.tolerance() * tag.tolerance() )
+        if (fabs(CPU_ScalarType(viennacl::linalg::inner_prod(residual, residual) / norm_rhs_host)) < tag.tolerance() * tag.tolerance() )
           break;
         
         //beta = new_ip_rr0star / ip_rr0star * alpha/omega;
@@ -235,15 +234,18 @@ namespace viennacl
         beta = cpu_temp / ip_rr0star * alpha/omega;
         ip_rr0star = cpu_temp;
 
-        //p = residual + beta * (p - omega*tmp0);
+        // Execution of
+        //  p = residual + beta * (p - omega*tmp0);
+        // without introducing temporary vectors:
         p -= omega * tmp0;
-        //p = residual + beta * p;
         p *= beta;
         p += residual;
+        
+        //std::cout << "Rel. Residual in current step: " << std::sqrt(std::fabs(viennacl::linalg::inner_prod(residual, residual) / norm_rhs_host)) << std::endl;
       }
       
       //store last error estimate:
-      tag.error(std::sqrt(std::fabs(viennacl::linalg::inner_prod(residual, residual) / norm_rhs_host)));
+      tag.error(std::sqrt(fabs(CPU_ScalarType(viennacl::linalg::inner_prod(residual, residual)) / norm_rhs_host)));
       
       return result;
     }
diff --git a/viennacl/linalg/cg.hpp b/viennacl/linalg/cg.hpp
index 44f2d48..11be052 100644
--- a/viennacl/linalg/cg.hpp
+++ b/viennacl/linalg/cg.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_CG_HPP_
-#define _VIENNACL_CG_HPP_
+#ifndef VIENNACL_CG_HPP_
+#define VIENNACL_CG_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file cg.hpp
     @brief The conjugate gradient method is implemented here
@@ -27,6 +29,9 @@
 #include "viennacl/linalg/ilu.hpp"
 #include "viennacl/linalg/prod.hpp"
 #include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/traits/clear.hpp"
+#include "viennacl/traits/size.hpp"
+#include "viennacl/meta/result_of.hpp"
 
 namespace viennacl
 {
@@ -83,12 +88,12 @@ namespace viennacl
     VectorType solve(const MatrixType & matrix, VectorType const & rhs, cg_tag const & tag)
     {
       //typedef typename VectorType::value_type      ScalarType;
-      typedef typename viennacl::tools::result_of::value_type<VectorType>::type    ScalarType;
-      typedef typename viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType    CPU_ScalarType;
-      
-      unsigned int problem_size = viennacl::tools::traits::size(rhs);
+      typedef typename viennacl::result_of::value_type<VectorType>::type        ScalarType;
+      typedef typename viennacl::result_of::cpu_value_type<ScalarType>::type    CPU_ScalarType;
+      //std::cout << "Starting CG" << std::endl;
+      std::size_t problem_size = viennacl::traits::size(rhs);
       VectorType result(problem_size);
-      viennacl::tools::traits::clear(result);
+      viennacl::traits::clear(result);
 
       VectorType residual = rhs;
       VectorType p = rhs;
@@ -102,7 +107,7 @@ namespace viennacl
       CPU_ScalarType beta;
       CPU_ScalarType norm_rhs_squared = ip_rr;
       
-      //std::cout << "Starting CG solver... " << std::endl;
+      //std::cout << "Starting CG solver iterations... " << std::endl;
       
       for (unsigned int i = 0; i < tag.max_iterations(); ++i)
       {
@@ -154,9 +159,9 @@ namespace viennacl
     template <typename MatrixType, typename VectorType, typename PreconditionerType>
     VectorType solve(const MatrixType & matrix, VectorType const & rhs, cg_tag const & tag, PreconditionerType const & precond)
     {
-      typedef typename VectorType::value_type      ScalarType;
-      typedef typename viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType    CPU_ScalarType;
-      unsigned int problem_size = viennacl::tools::traits::size(rhs);
+      typedef typename viennacl::result_of::value_type<VectorType>::type        ScalarType;
+      typedef typename viennacl::result_of::cpu_value_type<ScalarType>::type    CPU_ScalarType;
+      unsigned int problem_size = viennacl::traits::size(rhs);
       
       VectorType result(problem_size);
       result.clear();
diff --git a/viennacl/linalg/circulant_matrix_operations.hpp b/viennacl/linalg/circulant_matrix_operations.hpp
new file mode 100644
index 0000000..d16d040
--- /dev/null
+++ b/viennacl/linalg/circulant_matrix_operations.hpp
@@ -0,0 +1,218 @@
+#ifndef VIENNACL_LINALG_CIRCULANT_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_LINALG_CIRCULANT_MATRIX_OPERATIONS_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file circulant_matrix_operations.hpp
+    @brief Implementations of operations using circulant_matrix
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/ocl/device.hpp"
+#include "viennacl/ocl/handle.hpp"
+#include "viennacl/ocl/kernel.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/vector.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/fft.hpp"
+//#include "viennacl/linalg/kernels/coordinate_matrix_kernels.h"
+
+namespace viennacl
+{
+  namespace linalg
+  {
+    
+    
+    // A * x
+    /** @brief Returns a proxy class that represents matrix-vector multiplication with a compressed_matrix
+    *
+    * This is used for the convenience expression result = prod(mat, vec);
+    *
+    * @param mat    The matrix
+    * @param vec    The vector
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+    vector_expression<const circulant_matrix<SCALARTYPE, ALIGNMENT>,
+                      const vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                      op_prod > prod_impl(const circulant_matrix<SCALARTYPE, ALIGNMENT> & mat, 
+                                     const vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec)
+    {
+      return vector_expression<const circulant_matrix<SCALARTYPE, ALIGNMENT>,
+                               const vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                               op_prod >(mat, vec);
+    }
+    
+    // A * x
+    /** @brief Returns a proxy class that represents matrix-vector multiplication with a circulant_matrix
+    *
+    * This is used for the convenience expression result = prod(mat, vec);
+    *
+    * @param mat    The matrix
+    * @param vec    The vector
+    * @param NUM_THREADS Number of threads per work group. Can be used for fine-tuning.
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+    viennacl::vector_expression<const viennacl::circulant_matrix<SCALARTYPE, ALIGNMENT>,
+                                const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                                viennacl::op_prod > prod_impl(const viennacl::circulant_matrix<SCALARTYPE, ALIGNMENT> & mat, 
+                                                              const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec, 
+                                                              size_t NUM_THREADS)
+    {
+      return viennacl::vector_expression<const viennacl::circulant_matrix<SCALARTYPE, ALIGNMENT>,
+                               const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                               viennacl::op_prod >(mat, vec);
+    }
+    
+    /** @brief Carries out matrix-vector multiplication with a circulant_matrix
+    *
+    * Implementation of the convenience expression result = prod(mat, vec);
+    *
+    * @param mat    The matrix
+    * @param vec    The vector
+    * @param result The result vector
+    */
+      template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+      void prod_impl(const viennacl::circulant_matrix<SCALARTYPE, ALIGNMENT> & mat, 
+                     const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
+                           viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & result)
+      {
+        assert(mat.size1() == result.size());
+        assert(mat.size2() == vec.size());
+        //result.clear();
+        
+        //std::cout << "prod(circulant_matrix" << ALIGNMENT << ", vector) called with internal_nnz=" << mat.internal_nnz() << std::endl;
+        
+        viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> circ(mat.elements().size() * 2);
+        viennacl::detail::fft::real_to_complex(mat.elements(), circ, mat.elements().size());
+
+        viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp(vec.size() * 2);
+        viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp2(vec.size() * 2);
+
+        viennacl::detail::fft::real_to_complex(vec, tmp, vec.size());
+        viennacl::linalg::convolve(circ, tmp, tmp2);
+        viennacl::detail::fft::complex_to_real(tmp2, result, vec.size());
+
+      }
+
+  } //namespace linalg
+
+
+
+    /** @brief Implementation of the operation v1 = A * v2, where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> & 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=(const viennacl::vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                          const viennacl::vector<SCALARTYPE, ALIGNMENT>,
+                                                                                          viennacl::op_prod> & proxy) 
+    {
+      // check for the special case x = A * x
+      if (proxy.rhs().handle() == this->handle())
+      {
+        viennacl::vector<SCALARTYPE, ALIGNMENT> result(proxy.rhs().size());
+        viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+        *this = result;
+        return *this;
+      }
+      else
+      {
+        viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), *this);
+        return *this;
+      }
+      return *this;
+    }
+
+    //v += A * x
+    /** @brief Implementation of the operation v1 += A * v2, where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> & 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                 const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                 op_prod> & proxy) 
+    {
+      vector<SCALARTYPE, ALIGNMENT> result(proxy.lhs().size1());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      *this += result;
+      return *this;
+    }
+
+    /** @brief Implementation of the operation v1 -= A * v2, where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> & 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                 const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                 op_prod> & proxy) 
+    {
+      vector<SCALARTYPE, ALIGNMENT> result(proxy.get_lhs().size1());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      *this -= result;
+      return *this;
+    }
+    
+    
+    //free functions:
+    /** @brief Implementation of the operation 'result = v1 + A * v2', where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                op_prod> & proxy) 
+    {
+      assert(proxy.get_lhs().size1() == size());
+      vector<SCALARTYPE, ALIGNMENT> result(size());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      result += *this;
+      return result;
+    }
+
+    /** @brief Implementation of the operation 'result = v1 - A * v2', where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                op_prod> & proxy) 
+    {
+      assert(proxy.get_lhs().size1() == size());
+      vector<SCALARTYPE, ALIGNMENT> result(size());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      result = *this - result;
+      return result;
+    }
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/linalg/compressed_matrix_operations.hpp b/viennacl/linalg/compressed_matrix_operations.hpp
index c5d4fd1..ada8472 100644
--- a/viennacl/linalg/compressed_matrix_operations.hpp
+++ b/viennacl/linalg/compressed_matrix_operations.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_COMPRESSED_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_COMPRESSED_MATRIX_OPERATIONS_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_COMPRESSED_MATRIX_OPERATIONS_HPP_
-#define _VIENNACL_COMPRESSED_MATRIX_OPERATIONS_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file compressed_matrix_operations.hpp
     @brief Implementations of operations using compressed_matrix
@@ -71,7 +73,7 @@ namespace viennacl
 
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::compressed_matrix<TYPE, ALIGNMENT>::program_name(), "vec_mul");
       
-      viennacl::ocl::enqueue(k(mat.handle1(), mat.handle2(), mat.handle(), vec, result, mat.size1()));        
+      viennacl::ocl::enqueue(k(mat.handle1(), mat.handle2(), mat.handle(), vec, result, static_cast<cl_uint>(mat.size1())));
     }
 
     /** @brief Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU substitutions
diff --git a/viennacl/linalg/coordinate_matrix_operations.hpp b/viennacl/linalg/coordinate_matrix_operations.hpp
index 9e7dcb9..ff5f8ac 100644
--- a/viennacl/linalg/coordinate_matrix_operations.hpp
+++ b/viennacl/linalg/coordinate_matrix_operations.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_COORDINATE_MATRIX_OPERATIONS_HPP_
-#define _VIENNACL_COORDINATE_MATRIX_OPERATIONS_HPP_
+#ifndef VIENNACL_COORDINATE_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_COORDINATE_MATRIX_OPERATIONS_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file coordinate_matrix_operations.hpp
     @brief Implementations of operations using coordinate_matrix
diff --git a/viennacl/linalg/detail/amg/amg_base.hpp b/viennacl/linalg/detail/amg/amg_base.hpp
new file mode 100644
index 0000000..9e58137
--- /dev/null
+++ b/viennacl/linalg/detail/amg/amg_base.hpp
@@ -0,0 +1,1501 @@
+#ifndef VIENNACL_LINALG_DETAIL_AMG_AMG_BASE_HPP_
+#define VIENNACL_LINALG_DETAIL_AMG_AMG_BASE_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file amg_base.hpp
+    @brief Helper classes and functions for the AMG preconditioner. Experimental.
+    
+    AMG code contributed by Markus Wagner
+*/
+
+#include <boost/numeric/ublas/vector.hpp>
+#include <cmath>
+#include <set>
+#include <list>
+#include <algorithm>
+
+#include <map>
+#ifdef _OPENMP
+#include <omp.h>
+#endif
+
+#include "amg_debug.hpp"
+
+#define VIENNACL_AMG_COARSE_RS 1
+#define VIENNACL_AMG_COARSE_ONEPASS 2
+#define VIENNACL_AMG_COARSE_RS0 3
+#define VIENNACL_AMG_COARSE_RS3 4
+#define VIENNACL_AMG_COARSE_AG 5
+#define VIENNACL_AMG_INTERPOL_DIRECT 1
+#define VIENNACL_AMG_INTERPOL_CLASSIC 2
+#define VIENNACL_AMG_INTERPOL_AG 3
+#define VIENNACL_AMG_INTERPOL_SA 4
+
+namespace viennacl
+{
+  namespace linalg
+  {
+    namespace detail
+    {
+      namespace amg
+      {
+        /** @brief A tag for algebraic multigrid (AMG). Used to transport information from the user to the implementation.
+        */
+        class amg_tag
+        {
+          public:
+            /** @brief The constructor.
+            * @param coarse    Coarsening Routine (Default: VIENNACL_AMG_COARSE_CLASSIC)
+            * @param interpol  Interpolation routine (Default: VIENNACL_AMG_INTERPOL_DIRECT)
+            * @param threshold    Strength of dependence threshold for the coarsening process (Default: 0.25)
+            * @param interpolweight  Interpolation parameter for SA interpolation and truncation parameter for direct+classical interpolation
+            * @param jacobiweight  Weight of the weighted Jacobi smoother iteration step (Default: 1 = Regular Jacobi smoother)
+            * @param presmooth    Number of presmoothing operations on every level (Default: 1)
+            * @param postsmooth   Number of postsmoothing operations on every level (Default: 1)
+            * @param coarselevels  Number of coarse levels that are constructed
+            *      (Default: 0 = Optimize coarse levels for direct solver such that coarsest level has a maximum of COARSE_LIMIT points)
+            *      (Note: Coarsening stops when number of coarse points = 0 and overwrites the parameter with actual number of coarse levels)
+            */
+            amg_tag(unsigned int coarse = 1,
+                    unsigned int interpol = 1,
+                    double threshold = 0.25,
+                    double interpolweight = 0.2,
+                    double jacobiweight = 1,
+                    unsigned int presmooth = 1,
+                    unsigned int postsmooth = 1,
+                    unsigned int coarselevels = 0)
+            : _coarse(coarse), _interpol(interpol),
+              _threshold(threshold), _interpolweight(interpolweight), _jacobiweight(jacobiweight), 
+              _presmooth(presmooth), _postsmooth(postsmooth), _coarselevels(coarselevels) {}; 
+
+            // Getter-/Setter-Functions
+            void set_coarse(unsigned int coarse) { if (coarse > 0) _coarse = coarse; }
+            unsigned int get_coarse() const { return _coarse; }
+            
+            void set_interpol(unsigned int interpol) { if (interpol > 0) _interpol = interpol; }
+            unsigned int get_interpol() const { return _interpol; }
+            
+            void set_threshold(double threshold) { if (threshold > 0 && threshold <= 1) _threshold = threshold; }
+            double get_threshold() const{ return _threshold; }
+            
+            void set_as(double jacobiweight) { if (jacobiweight > 0 && jacobiweight <= 2) _jacobiweight = jacobiweight; }
+            double get_interpolweight() const { return _interpolweight; }
+            
+            void set_interpolweight(double interpolweight) { if (interpolweight > 0 && interpolweight <= 2) _interpolweight = interpolweight; }
+            double get_jacobiweight() const { return _jacobiweight; }
+            
+            void set_presmooth(int presmooth) { if (presmooth >= 0) _presmooth = presmooth; }
+            unsigned int get_presmooth() const { return _presmooth; }
+            
+            void set_postsmooth(int postsmooth) { if (postsmooth >= 0) _postsmooth = postsmooth; }
+            unsigned int get_postsmooth() const { return _postsmooth; }
+            
+            void set_coarselevels(int coarselevels)  { if (coarselevels >= 0) _coarselevels = coarselevels; }
+            unsigned int get_coarselevels() const { return _coarselevels; }
+
+          private:
+            unsigned int _coarse, _interpol;
+            double _threshold, _interpolweight, _jacobiweight;
+            unsigned int _presmooth, _postsmooth, _coarselevels;
+        };
+        
+        /** @brief A class for a scalar that can be written to the sparse matrix or sparse vector datatypes.
+        *  @brief Values are only written to those datatypes if non-zero to optimize memory usage and performance.
+        *  @brief Needed for the []- and ()-operators.
+        */
+        template <typename InternalType, typename IteratorType, typename ScalarType>
+        class amg_nonzero_scalar
+        {
+          private:
+            InternalType *_m;
+            IteratorType _iter;
+            unsigned int _i,_j;
+            ScalarType _s;
+
+          public:
+            amg_nonzero_scalar();
+            
+            /** @brief The constructor.
+            *  @param m    Pointer to the sparse vector/matrix the scalar will be written to
+            *  @param iter    Iterator pointing to the respective element in the vector/matrix if available
+            *  @param i    Row index scalar will be written to
+            *  @param j    Col index scalar will be written to
+            *  @param s    Value of the scalar (usually used as dummy here as it will be set by the assignment operator)
+            */
+            amg_nonzero_scalar(InternalType *m,
+                              IteratorType & iter,
+                              unsigned int i,
+                              unsigned int j,
+                              ScalarType s = 0): _m(m), _iter(iter), _i(i), _j(j), _s(s) {}
+            
+            /** @brief Assignment operator. Writes value into matrix at the given position.
+            *  @param value  Value that will be written
+            */
+            ScalarType operator = (const ScalarType value)
+            {
+              _s = value;
+              // Only write if scalar is nonzero
+              if (_s == 0) return _s;
+              // Write to _m using iterator _iter or indices (_i,_j)
+              _m->addscalar (_iter,_i,_j,_s);
+              return _s;
+            }
+            
+            /** @brief Addition operator. Adds a constant.
+            *  @param value  Value that will be written
+            */
+            ScalarType operator += (const ScalarType value)
+            {
+              // If zero is added, then no change necessary
+              if (value == 0)
+                return _s;
+              
+              _s += value;
+              // Remove entry if resulting scalar is zero
+              if (_s == 0)
+              {
+                _m->removescalar(_iter,_i);
+                return _s;
+              }
+              //Write to _m using iterator _iter or indices (_i,_j)
+              _m->addscalar (_iter,_i,_j,_s);
+              return _s;
+            }
+            ScalarType operator ++ (int)
+            {
+              _s++;
+              if (_s == 0)
+                _m->removescalar(_iter,_i);
+              _m->addscalar (_iter,_i,_j,_s);
+              return _s;
+            }
+            ScalarType operator ++ ()
+            {
+              _s++;
+              if (_s == 0)
+                _m->removescalar(_iter,_i);
+              _m->addscalar (_iter,_i,_j,_s);
+              return _s;
+            }
+            operator ScalarType (void) { return _s;  }
+        };
+    
+        /** @brief Defines an iterator for the sparse vector type.
+        */
+        template <typename InternalType>
+        class amg_sparsevector_iterator
+        {
+          private:
+            typedef amg_sparsevector_iterator<InternalType> self_type;  
+            typedef typename InternalType::mapped_type ScalarType;
+            
+            InternalType & internal_vec;
+            typename InternalType::iterator iter;
+              
+          public:
+            
+            /** @brief The constructor.
+            *  @param vec    Internal sparse vector
+            *  @param begin  Whether the iterator starts at the beginning or end of vec
+            */
+            amg_sparsevector_iterator(InternalType & vec, bool begin=true): internal_vec(vec)
+            {
+              if (begin)
+                iter = internal_vec.begin();
+              else
+                iter = internal_vec.end();
+            }
+            
+            bool operator == (self_type other)
+            {
+              if (iter == other.iter)
+                return true;
+              else
+                return false;
+            }
+            bool operator != (self_type other)
+            {
+              if (iter != other.iter)
+                return true;
+              else
+                return false;
+            }
+            
+            self_type & operator ++ () const { iter++; return *this; }
+            self_type & operator ++ () { iter++; return *this; }
+            self_type & operator -- () const { iter--; return *this; }
+            self_type & operator -- () { iter--; return *this; }  
+            ScalarType & operator * () const { return (*iter).second; }
+            ScalarType & operator * () { return (*iter).second; }
+            unsigned int index() const { return (*iter).first; }
+            unsigned int index() { return (*iter).first; }
+        };
+    
+        /** @brief A class for the sparse vector type.
+        */
+        template <typename ScalarType>
+        class amg_sparsevector
+        {
+          public:
+            typedef ScalarType value_type;
+      
+          private:
+            // A map is used internally which saves all non-zero elements with pairs of (index,value)
+            typedef std::map<unsigned int,ScalarType> InternalType;
+            typedef amg_sparsevector<ScalarType> self_type;
+            typedef amg_nonzero_scalar<self_type,typename InternalType::iterator,ScalarType> NonzeroScalarType;
+              
+            // Size is only a dummy variable. Not needed for internal map structure but for compatible vector interface.
+            unsigned int _size;
+            InternalType internal_vector;
+      
+          public:
+            typedef amg_sparsevector_iterator<InternalType> iterator;
+            typedef typename InternalType::const_iterator const_iterator;
+      
+          public:
+            /** @brief The constructor.
+            *  @param size    Size of the vector
+            */
+            amg_sparsevector(unsigned int size = 0): _size(size)
+            {
+              internal_vector = InternalType();
+            }
+            
+            void resize(unsigned int size) { _size = size; }
+            unsigned int size() const { return _size;}
+            
+            // Returns number of non-zero entries in vector equal to the size of the underlying map.
+            unsigned int internal_size() const { return internal_vector.size(); }
+            // Delete underlying map.
+            void clear() { internal_vector.clear();  }
+            // Remove entry at position i.
+            void remove(unsigned int i) { internal_vector.erase(i); }
+            
+            // Add s to the entry at position i
+            void add (unsigned int i, ScalarType s)
+            {
+              typename InternalType::iterator iter = internal_vector.find(i);
+              // If there is no entry at position i, add new entry at that position
+              if (iter == internal_vector.end())
+                addscalar(iter,i,i,s);
+              else
+              {
+                s += (*iter).second;
+                // If new value is zero, then erase the entry, otherwise write new value
+                if (s != 0)
+                  (*iter).second = s;
+                else
+                  internal_vector.erase(iter);
+              }
+            }
+            
+            // Write to the map. Is called from non-zero scalar type.
+            template <typename IteratorType>
+            void addscalar(IteratorType & iter, unsigned int i, unsigned int j, ScalarType s)
+            {
+              // Don't write if value is zero
+              if (s == 0)
+                return;
+              
+              // If entry is already present, overwrite value, otherwise make new entry
+              if (iter != internal_vector.end())  
+                (*iter).second = s;
+              else
+                internal_vector[i] = s;
+            }
+            
+            // Remove value from the map. Is called from non-zero scalar type.
+            template <typename IteratorType>
+            void removescalar(IteratorType & iter, unsigned int i) { internal_vector.erase(iter); }   
+            
+            // Bracket operator. Returns non-zero scalar type with actual values of the respective entry which calls addscalar/removescalar after value is altered.
+            NonzeroScalarType operator [] (unsigned int i)
+            {
+              typename InternalType::iterator it = internal_vector.find(i);
+              // If value is already present then build non-zero scalar with actual value, otherwise 0.
+              if (it != internal_vector.end())
+                return NonzeroScalarType (this,it,i,i,(*it).second);
+              else
+                return NonzeroScalarType (this,it,i,i,0);  
+            }
+            
+            // Use internal data structure directly for read-only access. No need to use non-zero scalar as no write access possible.
+            ScalarType operator [] (unsigned int i) const
+            {
+              const_iterator it = internal_vector.find(i);
+              
+              if (it != internal_vector.end())
+                return (*it).second;
+              else
+                return 0;
+            }
+            
+            // Iterator functions.
+            iterator begin() { return iterator(internal_vector); }
+            const_iterator begin() const { return internal_vector.begin(); }
+            iterator end() { return iterator(internal_vector,false); }
+            const_iterator end() const { return internal_vector.end(); }
+            
+            // checks whether value at index i is nonzero. More efficient than doing [] == 0.
+            bool isnonzero(unsigned int i) const { return internal_vector.find(i) != internal_vector.end();  }
+            
+            // Copies data into a ublas vector type.
+            operator boost::numeric::ublas::vector<ScalarType> (void)
+            {
+              boost::numeric::ublas::vector<ScalarType> vec (_size);    
+              for (iterator iter = begin(); iter != end(); ++iter)
+                vec [iter.index()] = *iter;        
+              return vec;
+            } 
+         };
+    
+        /** @brief A class for the sparse matrix type.
+        *  Uses vector of maps as data structure for higher performance and lower memory usage.
+        *  Uses similar interface as ublas::compressed_matrix.
+        *  Can deal with transposed of matrix internally: Creation, Storage, Iterators, etc.
+        */
+        template <typename ScalarType>
+        class amg_sparsematrix
+        {
+          public:
+            typedef ScalarType value_type;
+          private:
+            typedef std::map<unsigned int,ScalarType> RowType;
+            typedef std::vector<RowType> InternalType;
+            typedef amg_sparsematrix<ScalarType> self_type;
+            
+            // Adapter is used for certain functionality, especially iterators.
+            typedef typename viennacl::tools::sparse_matrix_adapter<ScalarType> AdapterType;
+            typedef typename viennacl::tools::const_sparse_matrix_adapter<ScalarType> ConstAdapterType;
+            
+            // Non-zero scalar is used to write to the matrix.
+            typedef amg_nonzero_scalar<self_type,typename RowType::iterator,ScalarType> NonzeroScalarType;
+
+            // Holds matrix coefficients.
+            InternalType internal_mat;
+            // Holds matrix coefficient of transposed matrix if built. 
+            // Note: Only internal_mat is written using operators and methods while internal_mat_trans is built from internal_mat using do_trans().
+            InternalType internal_mat_trans;
+            // Saves sizes.
+            size_t s1, s2;
+            
+            // True if the transposed of the matrix is used (for calculations, iteration, etc.).
+            bool transposed_mode;
+            // True if the transposed is already built (saved in internal_mat_trans) and also up to date (no changes to internal_mat).
+            bool transposed;
+            
+          public:          
+            typedef typename AdapterType::iterator1 iterator1;
+            typedef typename AdapterType::iterator2 iterator2;
+            typedef typename ConstAdapterType::const_iterator1 const_iterator1;
+            typedef typename ConstAdapterType::const_iterator2 const_iterator2;
+            
+            /** @brief Standard constructor. */
+            amg_sparsematrix ()
+            {
+              transposed_mode = false;
+              transposed = false;
+            }
+            
+            /** @brief Constructor. Builds matrix of size (i,j).
+              * @param i  Size of first dimension
+              * @param j  Size of second dimension
+              */
+            amg_sparsematrix (unsigned int i, unsigned int j)
+            {
+              AdapterType a (internal_mat);
+              a.resize (i,j,false);
+              AdapterType a_trans (internal_mat_trans);
+              a_trans.resize (j,i,false);
+              s1 = i;
+              s2 = j;
+              a.clear();
+              a_trans.clear();
+              transposed_mode = false;
+              transposed = false;
+            }
+            
+            /** @brief Constructor. Builds matrix via std::vector<std::map> by copying memory
+            * (Only necessary feature of this other matrix type is to have const iterators)
+            * @param mat  Vector of maps
+            */
+            amg_sparsematrix (std::vector<std::map<unsigned int, ScalarType> > const & mat)
+            {  
+              AdapterType a (internal_mat);
+              AdapterType a_trans (internal_mat_trans);
+              a.resize(mat.size(), mat.size());
+              a_trans.resize(mat.size(), mat.size());
+              
+              internal_mat = mat;  
+              s1 = s2 = mat.size();
+              
+              transposed_mode = false;
+              transposed = false;
+            }
+            
+            /** @brief Constructor. Builds matrix via another matrix type.
+              * (Only necessary feature of this other matrix type is to have const iterators)
+              * @param mat  Matrix
+              */
+            template <typename MatrixType>
+            amg_sparsematrix (MatrixType const & mat)
+            {  
+              AdapterType a (internal_mat);
+              AdapterType a_trans (internal_mat_trans);
+              a.resize(mat.size1(), mat.size2());
+              a_trans.resize (mat.size2(), mat.size1());
+              s1 = mat.size1();
+              s2 = mat.size2();
+              a.clear();
+              a_trans.clear();
+              
+              for (typename MatrixType::const_iterator1 row_iter = mat.begin1(); row_iter != mat.end1(); ++row_iter)
+              {
+                for (typename MatrixType::const_iterator2 col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+                {
+                  if (*col_iter != 0)
+                  {
+                    unsigned int x = col_iter.index1();
+                    unsigned int y = col_iter.index2();
+                    a (x,y) = *col_iter;
+                    a_trans (y,x) = *col_iter;
+                  }
+                }
+              }
+              transposed_mode = false;
+              transposed = true;
+            }
+                  
+            // Build transposed of the current matrix.
+            void do_trans()
+            {
+              // Do it only once if called in a parallel section
+            #ifdef _OPENMP
+              #pragma omp critical
+            #endif
+              { 
+                // Only build transposed if it is not built or not up to date
+                if (!transposed)
+                {
+                  // Mode has to be set to standard mode temporarily
+                  bool save_mode = transposed_mode;
+                  transposed_mode = false;
+                  
+                  for (iterator1 row_iter = begin1(); row_iter != end1(); ++row_iter)
+                for (iterator2 col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+                  internal_mat_trans[col_iter.index2()][col_iter.index1()] = *col_iter;
+                
+                  transposed_mode = save_mode;
+                  transposed = true;
+                }
+              }
+            } //do_trans()
+            
+            // Set transposed mode (true=transposed, false=regular)
+            void set_trans(bool mode)
+            {
+              transposed_mode = mode;
+              if (mode)
+                do_trans();
+            }
+            
+            bool get_trans() const { return transposed_mode; }     
+                  
+            // Checks whether coefficient (i,j) is non-zero. More efficient than using (i,j) == 0.
+            bool isnonzero (unsigned int i, unsigned int j) const
+            {
+              if (!transposed_mode)
+              {
+                if (internal_mat[i].find(j) != internal_mat[i].end())
+                  return true;
+                else
+                  return false;
+              }
+              else
+              {
+                if (internal_mat[j].find(i) != internal_mat[j].end())
+                  return true;
+                else
+                  return false;
+              }
+            } //isnonzero()
+                
+            // Add s to value at (i,j)
+            void add (unsigned int i, unsigned int j, ScalarType s)
+            {
+              // If zero is added then do nothing.
+              if (s == 0)
+                return;
+              
+              typename RowType::iterator col_iter = internal_mat[i].find(j);
+              // If there is no entry at position (i,j), then make new entry.
+              if (col_iter == internal_mat[i].end())
+                addscalar(col_iter,i,j,s);
+              else
+              {
+                s += (*col_iter).second;
+                // Update value and erase entry if value is zero.
+                if (s != 0)
+                  (*col_iter).second = s;
+                else
+                  internal_mat[i].erase(col_iter);
+              }
+              transposed = false;
+            } //add()
+            
+            // Write to the internal data structure. Is called from non-zero scalar type.
+            template <typename IteratorType>
+            void addscalar(IteratorType & iter, unsigned int i, unsigned int j, ScalarType s)
+            {
+              // Don't write if value is zero
+              if (s == 0)
+                return;
+              
+              if (iter != internal_mat[i].end())  
+                (*iter).second = s;
+              else
+                internal_mat[i][j] = s;
+              
+              transposed = false;
+            }
+            
+            // Remove entry from internal data structure. Is called from non-zero scalar type.
+            template <typename IteratorType>
+            void removescalar(IteratorType & iter, unsigned int i)
+            {
+              internal_mat[i].erase(iter);
+              transposed = false;
+            }   
+            
+            // Return non-zero scalar at position (i,j). Value is written to the non-zero scalar and updated via addscalar()/removescalar().
+            NonzeroScalarType operator()(unsigned int i, unsigned int j)
+            {
+              typename RowType::iterator iter;
+              
+              if (!transposed_mode)
+              {
+                iter = internal_mat[i].find(j);
+                if (iter != internal_mat[i].end())
+                  return NonzeroScalarType (this,iter,i,j,(*iter).second);
+                else
+                  return NonzeroScalarType (this,iter,i,j,0);
+              }
+              else
+              {
+                iter = internal_mat[j].find(i);
+                if (iter != internal_mat[j].end())
+                  return NonzeroScalarType (this,iter,j,i,(*iter).second);
+                else
+                  return NonzeroScalarType (this,iter,j,i,0);
+              }
+            }
+            
+            // For read-only access return the actual value directly. Non-zero datatype not needed as no write access possible.
+            ScalarType operator()(unsigned int i, unsigned int j) const
+            {
+              typename RowType::const_iterator iter;
+              
+              if (!transposed_mode)
+              {
+                iter = internal_mat[i].find(j);
+                if (iter != internal_mat[i].end())
+                  return (*iter).second;
+                else
+                  return 0;
+              }
+              else
+              {
+                iter = internal_mat[j].find(i);
+                if (iter != internal_mat[j].end())
+                  return (*iter).second;
+                else
+                  return 0;
+              }
+            }
+              
+            void resize(unsigned int i, unsigned int j, bool preserve = true)
+            {
+              AdapterType a (internal_mat);
+              a.resize(i,j,preserve);
+              AdapterType a_trans (internal_mat_trans);
+              a_trans.resize(j,i,preserve);
+              s1 = i;
+              s2 = j;
+            }
+            
+            void clear() 
+            {
+              AdapterType a (internal_mat);
+              a.clear();
+              AdapterType a_trans (internal_mat_trans);
+              a_trans.clear();
+              transposed = true;
+            }
+
+            size_t size1()
+            {
+              if (!transposed_mode)
+                return s1;
+              else
+                return s2;
+            }
+            
+            size_t size1() const
+            {
+              if (!transposed_mode)
+                return s1;
+              else
+                return s2;
+            }
+            
+            
+            size_t size2()
+            {
+              if (!transposed_mode)
+                return s2;
+              else
+                return s1;
+            }
+            size_t size2() const
+            {
+              if (!transposed_mode)
+                return s2;
+              else
+                return s1;
+            }
+            
+            iterator1 begin1(bool trans = false)
+            {
+              if (!trans && !transposed_mode)
+              {
+                AdapterType a (internal_mat);
+                return a.begin1();
+              }
+              else
+              {
+                do_trans();
+                AdapterType a_trans (internal_mat_trans);
+                return a_trans.begin1();
+              }
+            }
+            
+            iterator1 end1(bool trans = false)
+            {
+              if (!trans && !transposed_mode)
+              {
+                AdapterType a (internal_mat);
+                return a.end1();
+              }
+              else
+              {
+                //do_trans();
+                AdapterType a_trans (internal_mat_trans);
+                return a_trans.end1();
+              }
+            }
+            
+            iterator2 begin2(bool trans = false)
+            {
+              if (!trans && !transposed_mode)
+              {
+                AdapterType a (internal_mat);
+                return a.begin2();
+              }
+              else
+              {
+                do_trans();
+                AdapterType a_trans (internal_mat_trans);
+                return a_trans.begin2();
+              }
+            }
+            
+            iterator2 end2(bool trans = false)
+            {
+              if (!trans && !transposed_mode)
+              {
+                AdapterType a (internal_mat);
+                return a.end2();
+              }
+              else
+              {
+                //do_trans();
+                AdapterType a_trans (internal_mat_trans);
+                return a_trans.end2();
+              }
+            }
+            
+            const_iterator1 begin1() const
+            {
+              // Const_iterator of transposed can only be used if transposed matrix is already built and up to date.
+              assert((!transposed_mode || (transposed_mode && transposed)) && "Error: Cannot build const_iterator when transposed has not been built yet!");
+                    ConstAdapterType a_const (internal_mat);
+              return a_const.begin1();
+            }
+            
+            const_iterator1 end1(bool trans = false) const
+            {
+              assert((!transposed_mode || (transposed_mode && transposed)) && "Error: Cannot build const_iterator when transposed has not been built yet!");
+              ConstAdapterType a_const (internal_mat);
+              return a_const.end1();
+            }
+            
+            const_iterator2 begin2(bool trans = false) const
+            {
+              assert((!transposed_mode || (transposed_mode && transposed)) && "Error: Cannot build const_iterator when transposed has not been built yet!");
+              ConstAdapterType a_const (internal_mat);
+              return a_const.begin2();
+            }
+            
+            const_iterator2 end2(bool trans = false) const
+            {
+              assert((!transposed_mode || (transposed_mode && transposed)) && "Error: Cannot build const_iterator when transposed has not been built yet!");
+              ConstAdapterType a_const (internal_mat);
+              return a_const.end2();
+            }
+            
+            // Returns pointer to the internal data structure. Improves performance of copy operation to GPU.
+            std::vector<std::map<unsigned int, ScalarType> > * get_internal_pointer()
+            {    
+              if (!transposed_mode)
+                return &internal_mat;
+              
+              if (!transposed)
+                do_trans();
+              return &internal_mat_trans;
+            }
+            operator boost::numeric::ublas::compressed_matrix<ScalarType> (void)
+            {
+              boost::numeric::ublas::compressed_matrix<ScalarType> mat;
+              mat.resize(size1(),size2(),false);
+              mat.clear();
+              
+              for (iterator1 row_iter = begin1(); row_iter != end1(); ++row_iter)
+                  for (iterator2 col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+                    mat (col_iter.index1(), col_iter.index2()) = *col_iter;
+                  
+              return mat;
+            } 
+            operator boost::numeric::ublas::matrix<ScalarType> (void)
+            {
+              boost::numeric::ublas::matrix<ScalarType> mat;
+              mat.resize(size1(),size2(),false);
+              mat.clear();
+              
+              for (iterator1 row_iter = begin1(); row_iter != end1(); ++row_iter)
+                  for (iterator2 col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+                    mat (col_iter.index1(), col_iter.index2()) = *col_iter;
+                  
+              return mat;
+            }
+        };
+          
+        /** @brief A class for the AMG points.
+        *   Saves point index and influence measure
+        *  Holds information whether point is undecided, C or F point.
+        *  Holds lists of points that are influenced by or influencing this point
+        */
+        class amg_point
+        {
+          private:
+            typedef amg_sparsevector<amg_point*> ListType;
+            
+            unsigned int _index;
+            unsigned int _influence;
+            // Determines whether point is undecided.
+            bool _undecided;
+            // Determines wheter point is C point (true) or F point (false).
+            bool _cpoint;
+            unsigned int _coarse_index;
+            // Index offset of parallel coarsening. In that case a point acts as if it had an index of _index-_offset and treats other points as if they had an index of index+_offset
+            unsigned int _offset;
+            // Aggregate the point belongs to.
+            unsigned int _aggregate;
+            
+            // Holds all points influencing this point.
+            ListType influencing_points;
+            // Holds all points that are influenced by this point.
+            ListType influenced_points;
+      
+          public:
+            typedef ListType::iterator iterator;
+            typedef ListType::const_iterator const_iterator;
+            
+            /** @brief The constructor.
+            */
+            amg_point (unsigned int index, unsigned int size): _index(index), _influence(0), _undecided(true), _cpoint(false), _coarse_index(0), _offset(0), _aggregate(0)
+            {
+              influencing_points = ListType(size);
+              influenced_points = ListType(size);
+            }
+            
+            void set_offset(unsigned int offset) { _offset = offset; }
+            unsigned int get_offset() { return _offset; }
+            void set_index(unsigned int index) { _index = index+_offset; }
+            unsigned int get_index() const { return _index-_offset;  }
+            unsigned int get_influence() const { return _influence;  }
+            void set_aggregate(unsigned int aggregate) { _aggregate = aggregate; }
+            unsigned int get_aggregate () { return _aggregate; }
+            
+            bool is_cpoint() const { return _cpoint && !_undecided;  }
+            bool is_fpoint() const { return !_cpoint && !_undecided; }
+            bool is_undecided() const { return _undecided; }
+            
+            // Returns number of influencing points
+            unsigned int number_influencing() const  { return influencing_points.internal_size(); }
+            // Returns true if *point is influencing this point
+            bool is_influencing(amg_point* point) const { return influencing_points.isnonzero(point->get_index()+_offset); }
+            // Add *point to influencing points
+            void add_influencing_point(amg_point* point) { influencing_points[point->get_index()+_offset] = point;  }
+            // Add *point to influenced points
+            void add_influenced_point(amg_point* point) { influenced_points[point->get_index()+_offset] = point; }
+            
+            // Clear influencing points
+            void clear_influencing() { influencing_points.clear(); }
+            // Clear influenced points
+            void clear_influenced() {influenced_points.clear(); }
+            
+            
+            unsigned int get_coarse_index() const { return _coarse_index; }
+            void set_coarse_index(unsigned int index) { _coarse_index = index; }
+            
+            // Calculates the initial influence measure equal to the number of influenced points.
+            void calc_influence() { _influence = influenced_points.internal_size();  }
+            
+            // Add to influence measure.
+            unsigned int add_influence(int add)
+            {
+              _influence += add;
+              return _influence;
+            }
+            // Make this point C point. Only call via amg_pointvector.
+            void make_cpoint() 
+            { 
+              _undecided = false;
+              _cpoint = true; 
+              _influence = 0;
+            }
+            // Make this point F point. Only call via amg_pointvector.
+            void make_fpoint()
+            {
+              _undecided = false;
+              _cpoint = false;
+              _influence = 0;
+            }
+            // Switch point from F to C point. Only call via amg_pointvector.
+            void switch_ftoc() { _cpoint = true; }  
+            
+            // Iterator handling for influencing and influenced points.
+            iterator begin_influencing() { return influencing_points.begin(); }
+            iterator end_influencing() { return influencing_points.end(); }
+            const_iterator begin_influencing() const { return influencing_points.begin(); }
+            const_iterator end_influencing() const { return influencing_points.end(); }
+            iterator begin_influenced() { return influenced_points.begin();  }
+            iterator end_influenced() { return influenced_points.end(); }
+            const_iterator begin_influenced() const { return influenced_points.begin(); }
+            const_iterator end_influenced() const { return influenced_points.end(); }
+        };
+        
+        /** @brief Comparison class for the sorted set of points in amg_pointvector. Set is sorted by influence measure from lower to higher with the point-index as tie-breaker.
+        */
+        struct classcomp
+        {
+          // Function returns true if l comes before r in the ordering.
+          bool operator() (amg_point* l, amg_point* r) const
+          {
+            // Map is sorted by influence number starting with the highest
+            // If influence number is the same then lowest point index comes first
+            return (l->get_influence() < r->get_influence() || (l->get_influence() == r->get_influence() && l->get_index() > r->get_index()));
+          }
+        };
+      
+        /** @brief A class for the AMG points.
+        *  Holds pointers of type amg_point in a vector that can be accessed using [point-index].
+        *  Additional list of pointers sorted by influence number and index to improve coarsening performance (see amg_coarse_classic_onepass() in amg_coarse.hpp)
+        *  Constructs indices for C points on the coarse level, needed for interpolation.
+        */
+        class amg_pointvector
+        {
+          private:
+            // Type for the sorted list
+            typedef std::set<amg_point*,classcomp> ListType;
+            // Type for the vector of pointers
+            typedef std::vector<amg_point*> VectorType;
+            VectorType pointvector;
+            ListType pointlist;
+            unsigned int _size;
+            unsigned int c_points, f_points;
+      
+          public:
+            typedef VectorType::iterator iterator;
+            typedef VectorType::const_iterator const_iterator;
+            
+            /** @brief The constructor.
+            *  @param size    Number of points
+            */
+            amg_pointvector(unsigned int size = 0): _size(size)
+            {
+              pointvector = VectorType(size);
+              c_points = f_points = 0;
+            }
+            
+            // Construct all the points dynamically and save pointers into vector.
+            void init_points()
+            {  
+              for (unsigned int i=0; i<size(); ++i)
+                pointvector[i] = new amg_point(i,size());
+            }
+            // Delete all the points.
+            void delete_points()
+            {  
+              for (unsigned int i=0; i<size(); ++i)
+                delete pointvector[i];
+            }
+            // Add point to the vector. Note: User has to make sure that point at point->get_index() does not exist yet, otherwise it will be overwritten!
+            void add_point(amg_point *point)
+            {
+              pointvector[point->get_index()] = point;
+              if (point->is_cpoint()) c_points++;
+              else if (point->is_fpoint()) f_points++;
+            }
+
+            // Update C and F count for point *point.
+            // Necessary if C and F points were constructed outside this data structure (e.g. by parallel coarsening RS0 or RS3).
+            void update_cf(amg_point *point) 
+            {
+              if (point->is_cpoint()) c_points++;
+              else if (point->is_fpoint()) f_points++;
+            }
+            // Clear the C and F point count.
+            void clear_cf() { c_points = f_points = 0; }
+            
+            // Clear both point lists.
+            void clear_influencelists()
+            {
+              for (iterator iter = pointvector.begin(); iter != pointvector.end(); ++iter)
+              {
+                (*iter)->clear_influencing();
+                (*iter)->clear_influenced();
+              }
+            }
+            
+            amg_point* operator [] (unsigned int i) const { return pointvector[i]; }
+            iterator begin() { return pointvector.begin(); }
+            iterator end() { return pointvector.end(); }
+            const_iterator begin() const { return pointvector.begin(); }
+            const_iterator end() const { return pointvector.end(); }
+            
+            void resize(unsigned int size)
+            {
+              _size = size;
+              pointvector = VectorType(size);
+            }
+            unsigned int size() const { return _size; }
+            
+            // Returns number of C points
+            unsigned int get_cpoints() const { return c_points; }
+            // Returns number of F points
+            unsigned int get_fpoints() const { return f_points; }
+            
+            // Does the initial sorting of points into the list. Sorting is automatically done by the std::set data type.
+            void sort()
+            {
+              for (iterator iter = begin(); iter != end(); ++iter)
+                pointlist.insert(*iter);
+            }
+            // Returns the point with the highest influence measure
+            amg_point* get_nextpoint()
+            {
+              // No points remaining? Return NULL such that coarsening will stop.
+              if (pointlist.size() == 0)
+                return NULL;
+              // If point with highest influence measure (end of the list) has measure of zero, then no further C points can be constructed. Return NULL.
+              if ((*(--pointlist.end()))->get_influence() == 0)
+                return NULL;
+              // Otherwise, return the point with highest influence measure located at the end of the list.
+              else
+                return *(--pointlist.end());
+            }
+            // Add "add" to influence measure for point *point in the sorted list.
+            void add_influence(amg_point* point, unsigned int add)
+            {
+              ListType::iterator iter = pointlist.find(point);
+              // If point is not in the list then stop.
+              if (iter == pointlist.end()) return;
+              
+              // Save iterator and decrement
+              ListType::iterator iter2 = iter;
+              iter2--;
+              
+              // Point has to be erased first as changing the value does not re-order the std::set
+              pointlist.erase(iter);
+              point->add_influence(add);
+              
+              // Insert point back into the list. Using the iterator improves performance. The new position has to be at the same position or to the right of the old.
+              pointlist.insert(iter2,point);
+            }
+            // Make *point to C point and remove from sorted list
+            void make_cpoint(amg_point* point)
+            {
+              pointlist.erase(point);
+              point->make_cpoint();
+              c_points++;
+            }
+            // Make *point to F point and remove from sorted list
+            void make_fpoint(amg_point* point)
+            {
+              pointlist.erase(point);
+              point->make_fpoint();
+              f_points++;
+            }
+            // Swich *point from F to C point
+            void switch_ftoc(amg_point* point)
+            { 
+              point->switch_ftoc();
+              c_points++;
+              f_points--;
+            }
+
+            // Build vector of indices for C point on the coarse level.
+            void build_index()
+            {
+              unsigned int count = 0;
+              // Use simple counter for index creation.
+              for (iterator iter = pointvector.begin(); iter != pointvector.end(); ++iter)
+              {
+                // Set index on coarse level using counter variable
+                if ((*iter)->is_cpoint())
+                {
+                  (*iter)->set_coarse_index(count);
+                  count++;
+                }
+              }
+            }
+            
+            // Return information for debugging purposes
+            template <typename MatrixType>
+            void get_influence_matrix(MatrixType & mat) const
+            {
+              mat = MatrixType(size(),size());
+              mat.clear();
+              
+              for (const_iterator row_iter = begin(); row_iter != end(); ++row_iter)
+                for (amg_point::iterator col_iter = (*row_iter)->begin_influencing(); col_iter != (*row_iter)->end_influencing(); ++col_iter)
+                  mat((*row_iter)->get_index(),(*col_iter)->get_index()) = true;  
+            }
+            template <typename VectorType>
+            void get_influence(VectorType & vec) const
+            {
+              vec = VectorType(_size);
+              vec.clear();
+              
+              for (const_iterator iter = begin(); iter != end(); ++iter)
+                vec[(*iter)->get_index()] = (*iter)->get_influence();
+            }
+            template <typename VectorType>
+            void get_sorting(VectorType & vec) const
+            {
+              vec = VectorType(pointlist.size());
+              vec.clear();
+              unsigned int i=0;
+              
+              for (ListType::const_iterator iter = pointlist.begin(); iter != pointlist.end(); ++iter)
+              {
+                vec[i] = (*iter)->get_index();
+                i++;
+              }
+            }
+            template <typename VectorType>
+            void get_C(VectorType & vec) const
+            {
+              vec = VectorType(_size);
+              vec.clear();
+              
+              for (const_iterator iter = begin(); iter != end(); ++iter)
+              {
+                if ((*iter)->is_cpoint())
+                  vec[(*iter)->get_index()] = true;
+              }
+            }
+            template <typename VectorType>
+            void get_F(VectorType & vec) const
+            {
+              vec = VectorType(_size);
+              vec.clear();
+              
+              for (const_iterator iter = begin(); iter != end(); ++iter)
+              {
+                if ((*iter)->is_fpoint())
+                  vec[(*iter)->get_index()] = true;
+              }
+            }
+            template <typename MatrixType>
+            void get_Aggregates(MatrixType & mat) const
+            {
+              mat = MatrixType(_size,_size);
+              mat.clear();
+              
+              for (const_iterator iter = begin(); iter != end(); ++iter)
+              {
+                if (!(*iter)->is_undecided())
+                  mat((*iter)->get_aggregate(),(*iter)->get_index()) = true;
+              }
+            }
+        };
+        
+        /** @brief A class for the matrix slicing for parallel coarsening schemes (RS0/RS3).
+          * @brief Holds information on a per-processor basis and offers functionality to slice and join the data structures.
+          */
+        template <typename InternalType1, typename InternalType2>
+        class amg_slicing
+        {
+            typedef typename InternalType1::value_type SparseMatrixType;
+            typedef typename InternalType2::value_type PointVectorType;    
+            
+          public:
+            // Data structures on a per-processor basis.
+            boost::numeric::ublas::vector<InternalType1> A_slice;
+            boost::numeric::ublas::vector<InternalType2> Pointvector_slice;
+            // Holds the offsets showing the indices for which a new slice begins.
+            boost::numeric::ublas::vector<boost::numeric::ublas::vector<unsigned int> > Offset;
+            
+            unsigned int _threads;
+            unsigned int _levels;
+            
+            void init(unsigned int levels, unsigned int threads = 0)
+            {
+              // Either use the number of threads chosen by the user or the maximum number of threads available on the processor.
+              if (threads == 0)
+            #ifdef _OPENMP
+                _threads = omp_get_num_procs();
+            #else
+              _threads = 1;
+            #endif   
+              else 
+                _threads = threads;
+              
+              _levels = levels;
+              
+              A_slice.resize(_threads);
+              Pointvector_slice.resize(_threads);
+              // Offset has _threads+1 entries to also hold the total size
+              Offset.resize(_threads+1);
+              
+              for (unsigned int i=0; i<_threads; ++i)
+              {
+                A_slice[i].resize(_levels);
+                Pointvector_slice[i].resize(_levels);
+                // Offset needs one more level for the build-up of the next offset
+                Offset[i].resize(_levels+1);
+              }
+              Offset[_threads].resize(_levels+1);
+            } //init()
+            
+            // Slice matrix A into as many parts as threads are used.
+            void slice (unsigned int level, InternalType1 const & A, InternalType2 const & Pointvector)
+            {
+              // On the finest level, build a new slicing first.
+              if (level == 0)
+                slice_new (level, A);
+              
+              // On coarser levels use the same slicing as on the finest level (Points stay together on the same thread on all levels).
+              // This is necessary as due to interpolation and galerkin product there only exist connections between points on the same thread on coarser levels.
+              // Note: Offset is determined in amg_coarse_rs0() after fine level was built.
+              slice_build (level, A, Pointvector);
+            }
+
+            // Join point data structure into Pointvector
+            void join (unsigned int level, InternalType2 & Pointvector) const
+            {
+              typedef typename InternalType2::value_type PointVectorType;
+              
+              // Reset index offset of all points and update overall C and F point count
+              Pointvector[level].clear_cf();
+              for (typename PointVectorType::iterator iter = Pointvector[level].begin(); iter != Pointvector[level].end(); ++iter)
+              {
+                (*iter)->set_offset(0);
+                Pointvector[level].update_cf(*iter);
+              }
+            }
+              
+          private:     
+            /** @brief Slices mat into this->threads parts of (almost) equal size
+            * @param level    Level for which slicing is requested
+            * @param A     System matrix on all levels
+            */
+            void slice_new (unsigned int level, InternalType1 const & A)
+            {  
+              typedef typename SparseMatrixType::const_iterator1 ConstRowIterator;
+              typedef typename SparseMatrixType::const_iterator2 ConstColIterator;
+              
+              // Determine index offset of all the slices (index of A[level] when the respective slice starts).
+            #ifdef _OPENMP
+              #pragma omp parallel for 
+            #endif
+              for (unsigned int i=0; i<=_threads; ++i)
+              {
+                // Offset of first piece is zero. Pieces 1,...,threads-1 have equal size while the last one might be greater.
+                if (i == 0) Offset[i][level] = 0;
+                else if (i == _threads) Offset[i][level] = A[level].size1();
+                else Offset[i][level] = i*(A[level].size1()/_threads);
+              }
+            }   
+            
+            /** @brief Slices mat into pieces determined by this->Offset
+            * @param level    Level to which Slices are saved
+            * @param A     System matrix on all levels
+            * @param Pointvector  Vector of points on all levels
+            */
+            void slice_build (unsigned int level, InternalType1 const & A, InternalType2 const & Pointvector)
+            {
+              typedef typename SparseMatrixType::const_iterator1 ConstRowIterator;
+              typedef typename SparseMatrixType::const_iterator2 ConstColIterator;
+              
+              unsigned int x, y;
+              amg_point *point;
+              
+            #ifdef _OPENMP
+              #pragma omp parallel for private (x,y,point)
+            #endif
+              for (unsigned int i=0; i<_threads; ++i)
+              {
+                // Allocate space for the matrix slice and the pointvector.
+                A_slice[i][level] = SparseMatrixType(Offset[i+1][level]-Offset[i][level],Offset[i+1][level]-Offset[i][level]);
+                Pointvector_slice[i][level] = PointVectorType(Offset[i+1][level]-Offset[i][level]);
+                
+                // Iterate over the part that belongs to thread i (from Offset[i][level] to Offset[i+1][level]).
+                ConstRowIterator row_iter = A[level].begin1();
+                row_iter += Offset[i][level];
+                x = row_iter.index1();
+                    
+                while (x < Offset[i+1][level] && row_iter != A[level].end1())
+                {
+                  // Set offset for point index and save point for the respective thread
+                  point = Pointvector[level][x];
+                  point->set_offset(Offset[i][level]);
+                  Pointvector_slice[i][level].add_point(point);
+                  
+                  ConstColIterator col_iter = row_iter.begin();
+                  y = col_iter.index2();
+                  
+                  // Save all coefficients from the matrix slice
+                  while (y < Offset[i+1][level] && col_iter != row_iter.end())
+                  {
+                    if (y >= Offset[i][level])
+                A_slice[i][level](x-Offset[i][level],y-Offset[i][level]) = *col_iter;
+                    
+                    ++col_iter;
+                    y = col_iter.index2();
+                  }
+                  
+                  ++row_iter;
+                  x = row_iter.index1();
+                }
+              }
+            }
+        };  
+        
+        /** @brief Sparse matrix product. Calculates RES = A*B.
+          * @param A    Left Matrix
+          * @param B    Right Matrix
+          * @param RES    Result Matrix
+          */
+        template <typename SparseMatrixType>
+        void amg_mat_prod (SparseMatrixType & A, SparseMatrixType & B, SparseMatrixType & RES)
+        {
+          typedef typename SparseMatrixType::value_type ScalarType;
+          typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+          typedef typename SparseMatrixType::iterator2 InternalColIterator;
+          
+          unsigned int x,y,z;
+          ScalarType prod;
+          RES = SparseMatrixType(A.size1(), B.size2());
+          RES.clear();
+          
+    #ifdef _OPENMP
+          #pragma omp parallel for private (x,y,z,prod) shared (A,B,RES)
+    #endif
+          for (x=0; x<A.size1(); ++x)
+          {
+            InternalRowIterator row_iter = A.begin1();
+            row_iter += x;
+            for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+            {
+              y = col_iter.index2(); 
+              InternalRowIterator row_iter2 = B.begin1();
+              row_iter2 += y;
+
+              for(InternalColIterator col_iter2 = row_iter2.begin(); col_iter2 != row_iter2.end(); ++col_iter2)
+              {
+                z = col_iter2.index2();
+                prod = *col_iter * *col_iter2;
+                RES.add(x,z,prod);
+              }
+            }
+          }
+        }
+        
+        /** @brief Sparse Galerkin product: Calculates RES = trans(P)*A*P
+          * @param A    Operator matrix (quadratic)
+          * @param P    Prolongation/Interpolation matrix
+          * @param RES    Result Matrix (Galerkin operator)
+          */
+        template <typename SparseMatrixType>
+        void amg_galerkin_prod (SparseMatrixType & A, SparseMatrixType & P, SparseMatrixType & RES)
+        {
+          typedef typename SparseMatrixType::value_type ScalarType;
+          typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+          typedef typename SparseMatrixType::iterator2 InternalColIterator;
+          
+          unsigned int x,y1,y2,z;
+          amg_sparsevector<ScalarType> row;
+          RES = SparseMatrixType(P.size2(), P.size2());
+          RES.clear();
+          
+    #ifdef _OPENMP
+          #pragma omp parallel for private (x,y1,y2,z,row) shared (A,P,RES)
+    #endif      
+          for (x=0; x<P.size2(); ++x)
+          {
+            row = amg_sparsevector<ScalarType>(A.size2());
+            InternalRowIterator row_iter = P.begin1(true);
+            row_iter += x;
+
+            for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+            {
+              y1 = col_iter.index2(); 
+              InternalRowIterator row_iter2 = A.begin1();
+              row_iter2 += y1;
+              
+              for(InternalColIterator col_iter2 = row_iter2.begin(); col_iter2 != row_iter2.end(); ++col_iter2)
+              {
+                y2 = col_iter2.index2();
+                row.add (y2, *col_iter * *col_iter2);
+              }
+            }
+            for (typename amg_sparsevector<ScalarType>::iterator iter = row.begin(); iter != row.end(); ++iter)
+            {
+              y2 = iter.index();
+              InternalRowIterator row_iter3 = P.begin1();
+              row_iter3 += y2;
+              
+              for (InternalColIterator col_iter3 = row_iter3.begin(); col_iter3 != row_iter3.end(); ++col_iter3)
+              {
+                z = col_iter3.index2();
+                RES.add (x, z, *col_iter3 * *iter);
+              }
+            }
+          }
+          
+          #ifdef DEBUG
+          std::cout << "Galerkin Operator: " << std::endl;
+          printmatrix (RES);
+          #endif
+        }
+        
+        /** @brief Test triple-matrix product by comparing it to ublas functions. Very slow for large matrices!
+          * @param A    Operator matrix (quadratic)
+          * @param P    Prolongation/Interpolation matrix
+          * @param A_i1    Result Matrix
+          */
+        template <typename SparseMatrixType>
+        void test_triplematprod(SparseMatrixType & A, SparseMatrixType & P, SparseMatrixType  & A_i1)
+        {
+          typedef typename SparseMatrixType::value_type ScalarType;
+          
+          boost::numeric::ublas::compressed_matrix<ScalarType> A_temp (A.size1(), A.size2());
+          A_temp = A;
+          boost::numeric::ublas::compressed_matrix<ScalarType> P_temp (P.size1(), P.size2());
+          P_temp = P;
+          P.set_trans(true);
+          boost::numeric::ublas::compressed_matrix<ScalarType> R_temp (P.size1(), P.size2());
+          R_temp = P;
+          P.set_trans(false);
+          
+          boost::numeric::ublas::compressed_matrix<ScalarType> RA (R_temp.size1(),A_temp.size2());
+          RA = boost::numeric::ublas::prod(R_temp,A_temp);
+          boost::numeric::ublas::compressed_matrix<ScalarType> RAP (RA.size1(),P_temp.size2());
+          RAP = boost::numeric::ublas::prod(RA,P_temp);
+          
+          for (unsigned int x=0; x<RAP.size1(); ++x)
+          {
+            for (unsigned int y=0; y<RAP.size2(); ++y)
+            {
+              if (abs((ScalarType)RAP(x,y) - (ScalarType)A_i1(x,y)) > 0.0001)
+                std::cout << x << " " << y << " " << RAP(x,y) << " " << A_i1(x,y) << std::endl;
+            } 
+          }
+        }
+        
+        /** @brief Test if interpolation matrix makes sense. Only vanilla test though! Only checks if basic requirements are met!
+          * @param A    Operator matrix (quadratic)
+          * @param P    Prolongation/Interpolation matrix
+          * @param Pointvector  Vector of points
+          */
+        template <typename SparseMatrixType, typename PointVectorType>
+        void test_interpolation(SparseMatrixType & A, SparseMatrixType & P, PointVectorType & Pointvector)
+        {
+          for (unsigned int i=0; i<P.size1(); ++i)
+          {
+            if (Pointvector.is_cpoint(i))
+            {
+              bool set = false;
+              for (unsigned int j=0; j<P.size2(); ++j)
+              {
+                if (P.isnonzero(i,j))
+                {
+                  if (P(i,j) != 1)
+                    std::cout << "Error 1 in row " << i << std::endl;
+                  if (P(i,j) == 1 && set)
+                    std::cout << "Error 2 in row " << i << std::endl;
+                  if (P(i,j) == 1 && !set)
+                    set = true;
+                }
+              }
+            }
+            
+            if (Pointvector.is_fpoint(i))
+              for (unsigned int j=0; j<P.size2(); ++j)
+              {
+                if (P.isnonzero(i,j) && j> Pointvector.get_cpoints()-1)
+                  std::cout << "Error 3 in row " << i << std::endl;
+                if (P.isnonzero(i,j))
+                {
+                  bool set = false;
+                  for (unsigned int k=0; k<P.size1(); ++k)
+                  {
+                    if (P.isnonzero(k,j))
+                    {
+                      if (Pointvector.is_cpoint(k) && P(k,j) == 1 && A.isnonzero(i,k))
+                        set = true;      
+                    }
+                  }
+                  if (!set)
+                    std::cout << "Error 4 in row " << i << std::endl;
+                }
+              }
+            }
+        }
+        
+        
+      } //namespace amg
+    }
+  }
+}
+
+#endif
diff --git a/viennacl/linalg/detail/amg/amg_coarse.hpp b/viennacl/linalg/detail/amg/amg_coarse.hpp
new file mode 100644
index 0000000..8b56dce
--- /dev/null
+++ b/viennacl/linalg/detail/amg/amg_coarse.hpp
@@ -0,0 +1,697 @@
+#ifndef VIENNACL_LINALG_DETAIL_AMG_AMG_COARSE_HPP
+#define VIENNACL_LINALG_DETAIL_AMG_AMG_COARSE_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file amg_coarse.hpp
+    @brief Implementations of several variants of the AMG coarsening procedure (setup phase). Experimental.
+*/
+
+#include <cmath>
+#include "viennacl/linalg/amg.hpp"
+
+#include <map>
+#ifdef _OPENMP
+#include <omp.h>
+#endif
+
+#include "amg_debug.hpp"
+
+namespace viennacl
+{
+  namespace linalg
+  {    
+    namespace detail
+    {
+      namespace amg
+      {
+    
+    /** @brief Calls the right coarsening procedure
+      * @param level    Coarse level identifier
+      * @param A    Operator matrix on all levels
+      * @param Pointvector   Vector of points on all levels
+      * @param Slicing    Partitioning of the system matrix to different processors (only used in RS0 and RS3)
+      * @param tag    AMG preconditioner tag
+      */
+    template <typename InternalType1, typename InternalType2, typename InternalType3>
+    void amg_coarse(unsigned int level, InternalType1 & A, InternalType2 & Pointvector, InternalType3 & Slicing, amg_tag & tag)
+    {
+  switch (tag.get_coarse())
+  {
+    case VIENNACL_AMG_COARSE_RS: amg_coarse_classic (level, A, Pointvector, tag); break;
+    case VIENNACL_AMG_COARSE_ONEPASS: amg_coarse_classic_onepass (level, A, Pointvector, tag); break;
+    case VIENNACL_AMG_COARSE_RS0: amg_coarse_rs0 (level, A, Pointvector, Slicing, tag); break;
+    case VIENNACL_AMG_COARSE_RS3: amg_coarse_rs3 (level, A, Pointvector, Slicing, tag); break;
+    case VIENNACL_AMG_COARSE_AG:   amg_coarse_ag (level, A, Pointvector, tag); break;
+  }
+    } 
+    
+    /** @brief Determines strong influences in system matrix, classical approach (RS). Multithreaded!
+    * @param level    Coarse level identifier
+    * @param A      Operator matrix on all levels
+    * @param Pointvector   Vector of points on all levels
+    * @param tag    AMG preconditioner tag
+    */
+    template <typename InternalType1, typename InternalType2>
+    void amg_influence(unsigned int level, InternalType1 const & A, InternalType2 & Pointvector, amg_tag & tag)
+    {
+      typedef typename InternalType1::value_type SparseMatrixType;
+      typedef typename InternalType2::value_type PointVectorType;
+      typedef typename SparseMatrixType::value_type ScalarType;
+      typedef typename SparseMatrixType::value_type ScalarType;
+      typedef typename SparseMatrixType::const_iterator1 ConstRowIterator;
+      typedef typename SparseMatrixType::const_iterator2 ConstColIterator;
+      
+      ScalarType max;
+      int diag_sign;
+      //unsigned int i;
+        
+#ifdef _OPENMP
+      #pragma omp parallel for private (max,diag_sign) shared (A,Pointvector)
+#endif      
+      for (unsigned int i=0; i<A[level].size1(); ++i)
+      {  
+  diag_sign = 1;
+  if (A[level](i,i) < 0)
+    diag_sign = -1;
+  
+  ConstRowIterator row_iter = A[level].begin1();
+  row_iter += i;
+  // Find greatest non-diagonal negative value (positive if diagonal is negative) in row
+  max = 0;
+  for (ConstColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+  {
+      if (i == (unsigned int) col_iter.index2()) continue;
+      if (diag_sign == 1)
+        if (max > *col_iter)  max = *col_iter;
+      if (diag_sign == -1)
+        if (max < *col_iter)  max = *col_iter;
+  }
+  
+  // If maximum is 0 then the row is independent of the others
+  if (max == 0)
+    continue;
+  
+  // Find all points that strongly influence current point (Yang, p.5)
+  for (ConstColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+  {
+    unsigned int j = col_iter.index2();  
+    if (i == j) continue;
+    if (diag_sign * (-*col_iter) >= tag.get_threshold() * (diag_sign * (-max)))
+    {
+      // Strong influence from j to i found, save information
+      Pointvector[level][i]->add_influencing_point(Pointvector[level][j]);
+    }
+  }
+      }
+      
+      #ifdef DEBUG
+      std::cout << "Influence Matrix: " << std::endl;
+      boost::numeric::ublas::matrix<bool> mat;
+      Pointvector[level].get_influence_matrix(mat);
+      printmatrix (mat);
+      #endif
+      
+      // Save influenced points
+      for (typename PointVectorType::iterator iter = Pointvector[level].begin(); iter != Pointvector[level].end(); ++iter)
+      {
+  for (typename amg_point::iterator iter2 = (*iter)->begin_influencing(); iter2 != (*iter)->end_influencing(); ++iter2)
+  {
+    (*iter2)->add_influenced_point(*iter);
+  }
+      }
+        
+      #ifdef DEBUG
+      std::cout << "Influence Measures: " << std::endl;
+      boost::numeric::ublas::vector<unsigned int> temp;
+      Pointvector[level].get_influence(temp);
+      printvector (temp);
+      std::cout << "Point Sorting: " << std::endl;
+      Pointvector[level].get_sorting(temp);
+      printvector (temp);
+      #endif 
+    }
+        
+    /** @brief Classical (RS) one-pass coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_CLASSIC_ONEPASS)
+    * @param level     Course level identifier
+    * @param A      Operator matrix on all levels
+    * @param Pointvector   Vector of points on all levels
+    * @param tag    AMG preconditioner tag
+    */
+    template <typename InternalType1, typename InternalType2>
+    void amg_coarse_classic_onepass(unsigned int level, InternalType1 & A, InternalType2 & Pointvector, amg_tag & tag)
+    {
+      typedef typename InternalType1::value_type SparseMatrixType;
+      typedef typename InternalType2::value_type PointVectorType;
+      typedef typename SparseMatrixType::value_type ScalarType;
+      
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      amg_point* c_point, *point1, *point2;
+      unsigned int i;
+        
+      // Check and save all strong influences
+      amg_influence (level, A, Pointvector, tag);    
+      
+      // Traverse through points and calculate initial influence measure
+#ifdef _OPENMP
+      #pragma omp parallel for private (i) shared (Pointvector)
+#endif      
+      for (i=0; i<Pointvector[level].size(); ++i)
+  Pointvector[level][i]->calc_influence();
+      
+       // Do initial sorting
+      Pointvector[level].sort();
+      
+      // Get undecided point with highest influence measure
+      while ((c_point = Pointvector[level].get_nextpoint()) != NULL)
+      {    
+  // Make this point C point
+  Pointvector[level].make_cpoint(c_point);
+  
+  // All strongly influenced points become F points
+  for (typename amg_point::iterator iter = c_point->begin_influenced(); iter != c_point->end_influenced(); ++iter)
+  {
+    point1 = *iter;
+    // Found strong influence from C point (c_point influences point1), check whether point is still undecided, otherwise skip
+    if (!point1->is_undecided()) continue;
+    // Make this point F point if it is still undecided point
+    Pointvector[level].make_fpoint(point1);
+    
+    // Add +1 to influence measure for all undecided points that strongly influence new F point
+    for (typename amg_point::iterator iter2 = point1->begin_influencing(); iter2 != point1->end_influencing(); ++iter2)
+    {
+      point2 = *iter2;
+      // Found strong influence to F point (point2 influences point1)
+      if (point2->is_undecided())
+        Pointvector[level].add_influence(point2,1);
+    }
+  }
+      }
+      
+      // If a point is neither C nor F point but is nevertheless influenced by other points make it F point
+      // (this situation can happen when this point does not influence other points and the points that influence this point became F points already)
+      /*#pragma omp parallel for private (i,point1)
+      for (i=0; i<Pointvector[level].size(); ++i)
+      {
+  point1 = Pointvector[level][i];
+  if (point1->is_undecided())
+  {
+    // Undecided point found. Check whether it is influenced by other point and if so: Make it F point.
+    if (point1->number_influencing() > 0)
+    {
+      #pragma omp critical
+      Pointvector[level].make_fpoint(point1);
+    }
+  }
+      }*/
+
+      #if defined (DEBUG)//  or defined (DEBUGBENCH)
+      unsigned int c_points = Pointvector[level].get_cpoints();
+      unsigned int f_points = Pointvector[level].get_fpoints();
+      std::cout << "1st pass: Level " << level << ": ";
+      std::cout << "No of C points = " << c_points << ", ";
+      std::cout << "No of F points = " << f_points << std::endl;
+      #endif
+
+      #ifdef DEBUG
+      std::cout << "Coarse Points:" << std::endl;
+      boost::numeric::ublas::vector<bool> C;
+      Pointvector[level].get_C(C);
+      printvector (C);
+      std::cout << "Fine Points:" << std::endl;
+      boost::numeric::ublas::vector<bool> F;
+      Pointvector[level].get_F(F);
+      printvector (F);
+      #endif
+    }    
+        
+    /** @brief Classical (RS) two-pass coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_CLASSIC)
+    * @param level    Coarse level identifier
+    * @param A      Operator matrix on all levels
+    * @param Pointvector   Vector of points on all levels
+    * @param tag    AMG preconditioner tag
+    */
+    template <typename InternalType1, typename InternalType2>
+    void amg_coarse_classic(unsigned int level, InternalType1 & A, InternalType2 & Pointvector, amg_tag & tag)
+    {
+      typedef typename InternalType1::value_type SparseMatrixType;
+      typedef typename InternalType2::value_type PointVectorType;
+      typedef typename SparseMatrixType::value_type ScalarType;
+      
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      bool add_C;
+      amg_point *c_point, *point1, *point2;     
+      
+      // Use one-pass-coarsening as first pass.
+      amg_coarse_classic_onepass(level, A, Pointvector, tag);
+    
+      // 2nd pass: Add more C points if F-F connection does not have a common C point.
+      for (typename PointVectorType::iterator iter = Pointvector[level].begin(); iter != Pointvector[level].end(); ++iter)
+      {
+  point1 = *iter;
+  // If point is F point, check for strong connections.
+  if (point1->is_fpoint())
+  {
+    // Check for strong connections from influencing and influenced points.
+    amg_point::iterator iter2 = point1->begin_influencing();
+    amg_point::iterator iter3 = point1->begin_influenced();
+    
+    // Iterate over both lists at once. This makes sure that points are no checked twice when influence relation is symmetric (which is often the case).
+    // Note: Only works because influencing and influenced lists are sorted by point-index.
+    while(iter2 != point1->end_influencing() || iter3 != point1->end_influenced())
+    {     
+      if (iter2 == point1->end_influencing())
+      {
+        point2 = *iter3;
+        ++iter3;
+      }
+      else if (iter3 == point1->end_influenced())
+      {
+        point2 = *iter2;
+        ++iter2;
+      }
+      else
+      {      
+        if ((*iter2)->get_index() == (*iter3)->get_index())   
+        {
+    point2 = *iter2;
+    ++iter2;
+    ++iter3;
+        }
+        else if ((*iter2)->get_index() < (*iter3)->get_index())
+        {
+    point2 = *iter2;
+    ++iter2;
+        }
+        else
+        {
+    point2 = *iter3;
+    ++iter3;
+        }
+      }
+      // Only check points with higher index as points with lower index have been checked already.
+      if (point2->get_index() < point1->get_index())
+        continue;
+      
+      // If there is a strong connection then it has to either be a C point or a F point with common C point.
+      // C point? Then skip as everything is ok.
+      if (point2->is_cpoint())
+        continue;
+      // F point? Then check whether F points point1 and point2 have a common C point.
+      if (point2->is_fpoint())
+      {
+        add_C = true;
+        // C point is common for two F points if they are both strongly influenced by that C point.
+        // Compare strong influences for point1 and point2.
+        for (amg_point::iterator iter3 = point1->begin_influencing(); iter3 != point1 -> end_influencing(); ++iter3)
+        {
+    c_point = *iter3;
+    // Stop search when strong common influence is found via c_point.
+    if (c_point->is_cpoint())
+    {
+      if (point2->is_influencing(c_point))
+      {
+        add_C = false;
+        break;            
+      }
+    }
+        }
+        // No common C point found? Then make second F point to C point.
+        if (add_C == true)
+    Pointvector[level].switch_ftoc(point2);
+      }
+    }
+  }
+      }
+      
+      #ifdef DEBUG
+      std::cout << "After 2nd pass:" << std::endl;
+      std::cout << "Coarse Points:" << std::endl;
+      boost::numeric::ublas::vector<bool> C;
+      Pointvector[level].get_C(C);
+      printvector (C);
+      std::cout << "Fine Points:" << std::endl;
+      boost::numeric::ublas::vector<bool> F;
+      Pointvector[level].get_F(F);
+      printvector (F);
+      #endif
+
+      #ifdef DEBUG
+#ifdef _OPENMP
+      #pragma omp critical
+#endif      
+      {
+      std::cout << "No C and no F point: ";
+      for (typename PointVectorType::iterator iter = Pointvector[level].begin(); iter != Pointvector[level].end(); ++iter)
+  if ((*iter)->is_undecided())
+    std::cout << (*iter)->get_index() << " ";
+      std::cout << std::endl;
+      }
+      #endif
+    }
+
+    /** @brief Parallel classical RS0 coarsening. Multi-Threaded! (VIENNACL_AMG_COARSE_RS0 || VIENNACL_AMG_COARSE_RS3)
+    * @param level    Coarse level identifier
+    * @param A      Operator matrix on all level
+    * @param Pointvector   Vector of points on all levels
+    * @param Slicing    Partitioning of the system matrix and the other data structures to different processors
+    * @param tag    AMG preconditioner tag
+    */
+    template <typename InternalType1, typename InternalType2, typename InternalType3>
+    void amg_coarse_rs0(unsigned int level, InternalType1 & A, InternalType2 & Pointvector, InternalType3 & Slicing, amg_tag & tag)
+    {
+      typedef typename InternalType1::value_type SparseMatrixType;
+      typedef typename InternalType2::value_type PointVectorType;
+      typedef typename SparseMatrixType::value_type ScalarType;
+      
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      unsigned int total_points;
+      
+      // Slice matrix into parts such that points are distributed among threads
+      Slicing.slice(level, A, Pointvector);     
+      
+      // Run classical coarsening in parallel
+      total_points = 0;
+#ifdef _OPENMP
+      #pragma omp parallel for shared (total_points,Slicing,level)
+#endif      
+      for (unsigned int i=0; i<Slicing._threads; ++i)
+      {
+  amg_coarse_classic(level,Slicing.A_slice[i],Slicing.Pointvector_slice[i],tag);
+  
+  // Save C points (using Slicing.Offset on the next level as temporary memory)
+  // Note: Number of C points for point i is saved in i+1!! (makes it easier later to compute offset)
+  Slicing.Offset[i+1][level+1] = Slicing.Pointvector_slice[i][level].get_cpoints();
+#ifdef _OPENMP
+  #pragma omp critical
+#endif  
+  total_points += Slicing.Pointvector_slice[i][level].get_cpoints();
+      }      
+      
+      // If no coarser level can be found on any level then resume and coarsening will stop in amg_coarse()
+      if (total_points != 0)
+      {    
+#ifdef _OPENMP
+  #pragma omp parallel for shared (Slicing)
+#endif  
+  for (unsigned int i=0; i<Slicing._threads; ++i)
+  {
+    // If no higher coarse level can be found on slice i (saved in Slicing.Offset[i+1][level+1]) then pull C point(s) to the next level
+    if (Slicing.Offset[i+1][level+1] == 0)
+    {
+      // All points become C points
+      for (unsigned int j=0; j<Slicing.A_slice[i][level].size1(); ++j)
+        Slicing.Pointvector_slice[i][level].make_cpoint(Slicing.Pointvector_slice[i][level][j]);
+      Slicing.Offset[i+1][level+1] = Slicing.A_slice[i][level].size1();
+    }
+  }
+    
+  // Build slicing offset from number of C points (offset = total sum of C points on threads with lower number)
+  for (unsigned int i=2; i<=Slicing._threads; ++i)
+    Slicing.Offset[i][level+1] += Slicing.Offset[i-1][level+1];
+      
+  // Join C and F points
+  Slicing.join(level, Pointvector);
+      }
+      
+      // Calculate global influence measures for interpolation and/or RS3.
+      amg_influence(level, A, Pointvector, tag); 
+      
+      #if defined(DEBUG)// or defined (DEBUGBENCH)
+      for (unsigned int i=0; i<Slicing._threads; ++i)
+      {
+  unsigned int c_points = Slicing.Pointvector_slice[i][level].get_cpoints();
+  unsigned int f_points = Slicing.Pointvector_slice[i][level].get_fpoints();
+  std::cout << "Thread " << i << ": ";
+  std::cout << "No of C points = " << c_points << ", ";
+  std::cout << "No of F points = " << f_points << std::endl;
+      }
+      #endif
+    }
+    
+    /** @brief RS3 coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_RS3)
+    * @param level    Coarse level identifier
+    * @param A      Operator matrix on all levels
+    * @param Pointvector   Vector of points on all levels
+    * @param Slicing    Partitioning of the system matrix and the other data structures to different processors
+    * @param tag    AMG preconditioner tag
+    */
+    template <typename InternalType1, typename InternalType2, typename InternalType3>
+    void amg_coarse_rs3(unsigned int level, InternalType1 & A, InternalType2 & Pointvector, InternalType3 & Slicing, amg_tag & tag)
+    {
+      typedef typename InternalType1::value_type SparseMatrixType;
+      typedef typename InternalType2::value_type PointVectorType;
+      typedef typename SparseMatrixType::value_type ScalarType;
+      
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      amg_point *c_point, *point1, *point2;
+      bool add_C;
+      unsigned int i, j;
+            
+      // Run RS0 first (parallel).
+      amg_coarse_rs0(level, A, Pointvector, Slicing, tag);
+      
+      // Save slicing offset
+      boost::numeric::ublas::vector<unsigned int> Offset = boost::numeric::ublas::vector<unsigned int> (Slicing.Offset.size());
+      for (i=0; i<Slicing.Offset.size(); ++i)
+  Offset[i] = Slicing.Offset[i][level];
+      
+      // Correct the coarsening with a third pass: Don't allow strong F-F connections without common C point
+      for (i=0; i<Slicing._threads; ++i)
+      {
+  //for (j=Slicing.Offset[i][level]; j<Slicing.Offset[i+1][level]; ++j)
+  for (j=Offset[i]; j<Offset[i+1]; ++j)
+  {
+    point1 = Pointvector[level][j];
+    // If point is F point, check for strong connections.
+    if (point1->is_fpoint())
+    {
+      // Check for strong connections from influencing and influenced points.
+      amg_point::iterator iter2 = point1->begin_influencing();
+      amg_point::iterator iter3 = point1->begin_influenced();
+      
+      // Iterate over both lists at once. This makes sure that points are no checked twice when influence relation is symmetric (which is often the case).
+      // Note: Only works because influencing and influenced lists are sorted by point-index.
+      while(iter2 != point1->end_influencing() || iter3 != point1->end_influenced())
+      {     
+        if (iter2 == point1->end_influencing())
+        {
+    point2 = *iter3;
+    ++iter3;
+        }
+        else if (iter3 == point1->end_influenced())
+        {
+    point2 = *iter2;
+    ++iter2;
+        }
+        else
+        {      
+    if ((*iter2)->get_index() == (*iter3)->get_index())   
+    {
+      point2 = *iter2;
+      ++iter2;
+      ++iter3;
+    }
+    else if ((*iter2)->get_index() < (*iter3)->get_index())
+    {
+      point2 = *iter2;
+      ++iter2;
+    }
+    else
+    {
+      point2 = *iter3;
+      ++iter3;
+    }
+        }
+              
+        // Only check points with higher index as points with lower index have been checked already.
+        if (point2->get_index() < point1->get_index())
+    continue;
+                
+        // Only check points that are outside the slicing boundaries (interior F-F connections have already been checked in second pass)
+        //if (point2->get_index() >= Slicing.Offset[i][level] || point2->get_index() < Slicing.Offset[i+1][level])
+        if (point2->get_index() >= Offset[i] && point2->get_index() < Offset[i+1])
+    continue;
+        
+        // If there is a strong connection then it has to either be a C point or a F point with common C point.
+        // C point? Then skip as everything is ok.
+        if (point2->is_cpoint())
+    continue;
+        // F point? Then check whether F points point1 and point2 have a common C point.
+        if (point2->is_fpoint())
+        {
+    add_C = true;
+    // C point is common for two F points if they are both strongly influenced by that C point.
+    // Compare strong influences for point1 and point2.
+    for (amg_point::iterator iter3 = point1->begin_influencing(); iter3 != point1 -> end_influencing(); ++iter3)
+    {
+      c_point = *iter3;
+      // Stop search when strong common influence is found via c_point.
+      if (c_point->is_cpoint())
+      {
+        if (point2->is_influencing(c_point))
+        {
+          add_C = false;
+          break;            
+        }
+      }
+    }
+    // No common C point found? Then make second F point to C point.
+    if (add_C == true)
+    {
+      Pointvector[level].switch_ftoc(point2);
+      // Add +1 to offsets as one C point has been added.
+      for (unsigned int j=i+1; j<=Slicing._threads; ++j)
+        Slicing.Offset[j][level+1]++;
+    }
+        }
+      }
+    }
+  }
+      }
+      
+      #ifdef DEBUG
+      std::cout << "After 3rd pass:" << std::endl;
+      std::cout << "Coarse Points:" << std::endl;
+      boost::numeric::ublas::vector<bool> C;
+      Pointvector[level].get_C(C);
+      printvector (C);
+      std::cout << "Fine Points:" << std::endl;
+      boost::numeric::ublas::vector<bool> F;
+      Pointvector[level].get_F(F);
+      printvector (F);
+      #endif
+
+      #ifdef DEBUG
+      unsigned int i;
+#ifdef _OPENMP
+      #pragma omp critical
+#endif      
+      {
+      std::cout << "No C and no F point: ";
+      for (typename PointVectorType::iterator iter = Pointvector[level].begin(); iter != Pointvector[level].end(); ++iter)
+  if ((*iter)->is_undecided())
+    std::cout << i << " ";
+      std::cout << std::endl;
+      }
+      #endif
+    }
+    
+    /** @brief AG (aggregation based) coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_SA)
+    *
+    * @param level    Coarse level identifier
+    * @param A      Operator matrix on all levels
+    * @param Pointvector   Vector of points on all levels
+    * @param tag    AMG preconditioner tag
+    */
+    template <typename InternalType1, typename InternalType2>
+    void amg_coarse_ag(unsigned int level, InternalType1 & A, InternalType2 & Pointvector, amg_tag & tag)
+    {
+      typedef typename InternalType1::value_type SparseMatrixType;
+      typedef typename InternalType2::value_type PointVectorType;
+      typedef typename SparseMatrixType::value_type ScalarType;
+      
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      unsigned int x,y;
+      ScalarType diag;
+      amg_point *pointx, *pointy;
+    
+      // Cannot determine aggregates if size == 1 as then a new aggregate would always consist of this point (infinite loop)
+      if (A[level].size1() == 1) return;
+      
+      // SA algorithm (Vanek et al. p.6)     
+      // Build neighborhoods
+#ifdef _OPENMP
+      #pragma omp parallel for private (x,y,diag) shared (A)
+#endif      
+      for (x=0; x<A[level].size1(); ++x)
+      {
+  InternalRowIterator row_iter = A[level].begin1();
+  row_iter += x;
+  diag = A[level](x,x);
+  for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+  {
+    y = col_iter.index2();
+    if (y == x || (std::abs(*col_iter) >= tag.get_threshold()*pow(0.5,level-1) * sqrt(std::abs(diag*A[level](y,y)))))
+    {
+      // Neighborhood x includes point y
+      Pointvector[level][x]->add_influencing_point(Pointvector[level][y]);
+    }
+  }
+      }
+      
+      #ifdef DEBUG
+      std::cout << "Neighborhoods:" << std::endl;
+      boost::numeric::ublas::matrix<bool> mat;
+      Pointvector[level].get_influence_matrix(mat);
+      printmatrix (mat);
+      #endif
+
+      // Build aggregates from neighborhoods  
+      for (typename PointVectorType::iterator iter = Pointvector[level].begin(); iter != Pointvector[level].end(); ++iter)
+      {
+  pointx = (*iter);
+  
+  if (pointx->is_undecided())
+  {
+    // Make center of aggregate to C point and include it to aggregate x.
+    Pointvector[level].make_cpoint(pointx);
+    pointx->set_aggregate (pointx->get_index());
+    for (amg_point::iterator iter2 = pointx->begin_influencing(); iter2 != pointx->end_influencing(); ++iter2)
+    {
+     pointy = (*iter2);
+      
+      if (pointy->is_undecided())
+      {
+        // Make neighbor y to F point and include it to aggregate x.
+        Pointvector[level].make_fpoint(pointy);
+        pointy->set_aggregate (pointx->get_index());
+      }
+    }
+  }
+      }
+      
+      #ifdef DEBUG
+      std::cout << "After aggregation:" << std::endl;
+      std::cout << "Coarse Points:" << std::endl;
+      boost::numeric::ublas::vector<bool> C;
+      Pointvector[level].get_C(C);
+      printvector (C);
+      std::cout << "Fine Points:" << std::endl;
+      boost::numeric::ublas::vector<bool> F;
+      Pointvector[level].get_F(F);
+      printvector (F);
+      std::cout << "Aggregates:" << std::endl;
+      printvector (Aggregates[level]);          
+      #endif
+    }
+      } //namespace amg
+    }
+  }
+}
+
+#endif
diff --git a/viennacl/linalg/detail/amg/amg_debug.hpp b/viennacl/linalg/detail/amg/amg_debug.hpp
new file mode 100644
index 0000000..fe22729
--- /dev/null
+++ b/viennacl/linalg/detail/amg/amg_debug.hpp
@@ -0,0 +1,82 @@
+#ifndef VIENNACL_LINALG_DETAIL_AMG_AMG_DEBUG_HPP
+#define VIENNACL_LINALG_DETAIL_AMG_AMG_DEBUG_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file amg_debug.hpp
+    @brief Debug functionality for AMG. To be removed.
+    
+    AMG code contributed by Markus Wagner
+*/
+
+#include <iostream>
+#include "viennacl/io/matrix_market.hpp"
+
+#ifdef SMALL_SIZE
+#define VIENNACL_AMG_MATRIXTYPE boost::numeric::ublas::matrix<ScalarType>
+#else
+#define VIENNACL_AMG_MATRIXTYPE MatrixType
+#endif
+
+namespace viennacl
+{
+  namespace linalg
+  {    
+    namespace detail
+    {
+      namespace amg
+      {
+
+        template <typename MatrixType>
+        void printmatrix(MatrixType & mat, int const value=-1)
+        {
+          typedef typename MatrixType::value_type ScalarType;  
+          typedef typename VIENNACL_AMG_MATRIXTYPE::iterator1 InternalRowIterator;
+          typedef typename VIENNACL_AMG_MATRIXTYPE::iterator2 InternalColIterator;
+          
+          #ifdef DEBUG
+          VIENNACL_AMG_MATRIXTYPE mat2 = mat;
+          
+          for (InternalRowIterator row_iter = mat2.begin1(); row_iter != mat2.end1(); ++row_iter)
+          {
+            for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+            {     
+              std::cout << *col_iter << " ";
+            }
+            std::cout << std::endl;
+          }
+          std::cout << std::endl;
+          #endif
+        }
+
+        template <typename VectorType>
+        void printvector(VectorType const & vec)
+        {
+          #ifdef DEBUGBENCH
+          for (typename VectorType::const_iterator iter = vec.begin(); iter != vec.end(); ++iter)
+          {
+            std::cout << *iter << " ";
+          }
+          std::cout << std::endl;
+          #endif
+        }
+
+      }
+    }
+  }
+}
+#endif
diff --git a/viennacl/linalg/detail/amg/amg_interpol.hpp b/viennacl/linalg/detail/amg/amg_interpol.hpp
new file mode 100644
index 0000000..d397c15
--- /dev/null
+++ b/viennacl/linalg/detail/amg/amg_interpol.hpp
@@ -0,0 +1,483 @@
+#ifndef VIENNACL_LINALG_DETAIL_AMG_AMG_INTERPOL_HPP
+#define VIENNACL_LINALG_DETAIL_AMG_AMG_INTERPOL_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file amg_interpol.hpp
+    @brief Implementations of several variants of the AMG interpolation operators (setup phase). Experimental.
+*/
+
+#include <boost/numeric/ublas/vector.hpp>
+#include <cmath>
+#include "viennacl/linalg/amg.hpp"
+
+#include <map>
+#ifdef _OPENMP
+#include <omp.h>
+#endif
+
+#include "amg_debug.hpp"
+
+namespace viennacl
+{
+  namespace linalg
+  {
+    namespace detail
+    {
+      namespace amg
+      {
+    
+    /** @brief Calls the right function to build interpolation matrix
+     * @param level    Coarse level identifier
+     * @param A      Operator matrix on all levels
+     * @param P      Prolongation matrices. P[level] is constructed
+     * @param Pointvector  Vector of points on all levels
+     * @param tag    AMG preconditioner tag
+    */
+    template <typename InternalType1, typename InternalType2>
+    void amg_interpol(unsigned int level, InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+    {
+  switch (tag.get_interpol())
+  {
+    case VIENNACL_AMG_INTERPOL_DIRECT: amg_interpol_direct (level, A, P, Pointvector, tag); break;
+    case VIENNACL_AMG_INTERPOL_CLASSIC: amg_interpol_classic (level, A, P, Pointvector, tag); break;
+    case VIENNACL_AMG_INTERPOL_AG: amg_interpol_ag (level, A, P, Pointvector, tag); break;
+    case VIENNACL_AMG_INTERPOL_SA: amg_interpol_sa (level, A, P, Pointvector, tag); break;
+  }
+    } 
+    /** @brief Direct interpolation. Multi-threaded! (VIENNACL_AMG_INTERPOL_DIRECT)
+     * @param level    Coarse level identifier
+     * @param A      Operator matrix on all levels
+     * @param P      Prolongation matrices. P[level] is constructed
+     * @param Pointvector  Vector of points on all levels
+     * @param tag    AMG preconditioner tag
+    */
+    template <typename InternalType1, typename InternalType2>
+    void amg_interpol_direct(unsigned int level, InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+    {
+      typedef typename InternalType1::value_type SparseMatrixType;
+      typedef typename InternalType2::value_type PointVectorType;
+      typedef typename SparseMatrixType::value_type ScalarType;
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      ScalarType temp_res;
+      ScalarType row_sum, c_sum, diag;
+      //int diag_sign;
+      unsigned int x, y;
+      amg_point *pointx, *pointy;
+      unsigned int c_points = Pointvector[level].get_cpoints();
+
+      // Setup Prolongation/Interpolation matrix
+      P[level] = SparseMatrixType(A[level].size1(),c_points);
+      P[level].clear();
+      
+      // Assign indices to C points
+      Pointvector[level].build_index();
+      
+      // Direct Interpolation (Yang, p.14)
+#ifdef _OPENMP
+      #pragma omp parallel for private (pointx,pointy,row_sum,c_sum,temp_res,y,x,diag) shared (P,A,Pointvector,tag)
+#endif      
+      for (x=0; x < Pointvector[level].size(); ++x)
+      {
+  pointx = Pointvector[level][x];
+  /*if (A[level](x,x) > 0) 
+    diag_sign = 1;
+  else
+    diag_sign = -1;*/
+  
+  // When the current line corresponds to a C point then the diagonal coefficient is 1 and the rest 0
+  if (pointx->is_cpoint())
+    P[level](x,pointx->get_coarse_index()) = 1;
+  
+  // When the current line corresponds to a F point then the diagonal is 0 and the rest has to be computed (Yang, p.14)
+  if (pointx->is_fpoint())
+  {
+    // Jump to row x
+    InternalRowIterator row_iter = A[level].begin1();
+    row_iter += x;
+    
+    // Row sum of coefficients (without diagonal) and sum of influencing C point coefficients has to be computed
+    row_sum = c_sum = diag = 0;
+    for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+    {
+      y = col_iter.index2();
+      if (x == y)// || *col_iter * diag_sign > 0)
+      {
+        diag += *col_iter;
+        continue;
+      }
+      
+      // Sum all other coefficients in line x
+      row_sum += *col_iter;
+
+      pointy = Pointvector[level][y];
+      // Sum all coefficients that correspond to a strongly influencing C point
+      if (pointy->is_cpoint())
+        if (pointx->is_influencing(pointy))
+    c_sum += *col_iter;        
+    }
+    temp_res = -row_sum/(c_sum*diag);
+
+    // Iterate over all strongly influencing points of point x
+    for (amg_point::iterator iter = pointx->begin_influencing(); iter != pointx->end_influencing(); ++iter)
+    {    
+      pointy = *iter;
+      // The value is only non-zero for columns that correspond to a C point
+      if (pointy->is_cpoint())
+      {
+        if (temp_res != 0)
+    P[level](x, pointy->get_coarse_index()) = temp_res * A[level](x,pointy->get_index());
+      }
+    }
+    
+    //Truncate interpolation if chosen
+    if (tag.get_interpolweight() != 0)
+      amg_truncate_row(P[level], x, tag);
+  }
+      }
+      
+      // P test
+      //test_interpolation(A[level], P[level], Pointvector[level]);
+      
+      #ifdef DEBUG
+      std::cout << "Prolongation Matrix:" << std::endl;
+      printmatrix (P[level]);
+      #endif  
+    }
+    /** @brief Classical interpolation. Don't use with onepass classical coarsening or RS0 (Yang, p.14)! Multi-threaded! (VIENNACL_AMG_INTERPOL_CLASSIC)
+     * @param level    Coarse level identifier
+     * @param A      Operator matrix on all levels
+     * @param P      Prolongation matrices. P[level] is constructed
+     * @param Pointvector  Vector of points on all levels
+     * @param tag    AMG preconditioner tag
+    */
+    template <typename InternalType1, typename InternalType2>
+    void amg_interpol_classic(unsigned int level, InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+    {
+      typedef typename InternalType1::value_type SparseMatrixType;
+      typedef typename InternalType2::value_type PointVectorType;
+      typedef typename SparseMatrixType::value_type ScalarType;
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      ScalarType temp_res;
+      ScalarType weak_sum, strong_sum;
+      int diag_sign;
+      amg_sparsevector<ScalarType> c_sum_row;
+      amg_point *pointx, *pointy, *pointk, *pointm;
+      unsigned int x, y, k, m;
+      
+      unsigned int c_points = Pointvector[level].get_cpoints();
+      
+      // Setup Prolongation/Interpolation matrix
+      P[level] = SparseMatrixType(A[level].size1(), c_points);
+      P[level].clear();
+      
+      // Assign indices to C points
+      Pointvector[level].build_index();
+      
+      // Classical Interpolation (Yang, p.13-14)
+#ifdef _OPENMP
+      #pragma omp parallel for private (pointx,pointy,pointk,pointm,weak_sum,strong_sum,c_sum_row,temp_res,x,y,k,m,diag_sign) shared (A,P,Pointvector)
+#endif      
+      for (x=0; x < Pointvector[level].size(); ++x)
+      {
+  pointx = Pointvector[level][x];
+  if (A[level](x,x) > 0) 
+    diag_sign = 1;
+  else
+    diag_sign = -1;
+  
+  // When the current line corresponds to a C point then the diagonal coefficient is 1 and the rest 0
+  if (pointx->is_cpoint())
+    P[level](x,pointx->get_coarse_index()) = 1;
+
+  // When the current line corresponds to a F point then the diagonal is 0 and the rest has to be computed (Yang, p.14)
+  if (pointx->is_fpoint())
+  {  
+    // Jump to row x
+    InternalRowIterator row_iter = A[level].begin1();
+    row_iter += x;
+    
+    weak_sum = 0;
+    c_sum_row = amg_sparsevector<ScalarType>(A[level].size1());
+    c_sum_row.clear();
+    for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+    {
+      k = col_iter.index2();
+      pointk = Pointvector[level][k];
+      
+      // Sum of weakly influencing neighbors + diagonal coefficient
+      if (x == k || !pointx->is_influencing(pointk))// || *col_iter * diag_sign > 0)
+      {
+        weak_sum += *col_iter;
+        continue;
+      }
+        
+      // Sums of coefficients in row k (strongly influening F neighbors) of C point neighbors of x are calculated
+      if (pointk->is_fpoint() && pointx->is_influencing(pointk))
+      {
+        for (amg_point::iterator iter = pointx->begin_influencing(); iter != pointx->end_influencing(); ++iter)
+        {
+    pointm = *iter;
+    m = pointm->get_index();
+    
+    if (pointm->is_cpoint())
+      // Only use coefficients that have opposite sign of diagonal.
+      if (A[level](k,m) * diag_sign < 0)
+        c_sum_row[k] += A[level](k,m);
+        }
+        continue;
+      }
+    }
+    
+    // Iterate over all strongly influencing points of point x
+    for (amg_point::iterator iter = pointx->begin_influencing(); iter != pointx->end_influencing(); ++iter)
+    {    
+      pointy = *iter;
+      y = pointy->get_index();
+      
+      // The value is only non-zero for columns that correspond to a C point
+      if (pointy->is_cpoint())
+      {
+        strong_sum = 0;
+        // Calculate term for strongly influencing F neighbors
+        for (typename amg_sparsevector<ScalarType>::iterator iter2 = c_sum_row.begin(); iter2 != c_sum_row.end(); ++iter2)
+        {
+    k = iter2.index();
+    // Only use coefficients that have opposite sign of diagonal.
+    if (A[level](k,y) * diag_sign < 0)
+      strong_sum += (A[level](x,k) * A[level](k,y)) / (*iter2);
+        }
+        
+        // Calculate coefficient
+        temp_res = - (A[level](x,y) + strong_sum) / (weak_sum);
+        if (temp_res != 0)
+    P[level](x,pointy->get_coarse_index()) = temp_res;   
+      }
+    }
+    
+    //Truncate iteration if chosen
+    if (tag.get_interpolweight() != 0)
+      amg_truncate_row(P[level], x, tag);
+  }
+      }
+      
+      #ifdef DEBUG
+      std::cout << "Prolongation Matrix:" << std::endl;
+      printmatrix (P[level]);
+      #endif  
+    }
+    
+    /** @brief Interpolation truncation (for VIENNACL_AMG_INTERPOL_DIRECT and VIENNACL_AMG_INTERPOL_CLASSIC)
+    *
+    * @param P    Interpolation matrix
+    * @param row  Row which has to be truncated
+    * @param tag  AMG preconditioner tag
+    */
+    template <typename SparseMatrixType>
+    void amg_truncate_row(SparseMatrixType & P, unsigned int row, amg_tag & tag)
+    {
+      typedef typename SparseMatrixType::value_type ScalarType;
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      ScalarType row_max, row_min, row_sum_pos, row_sum_neg, row_sum_pos_scale, row_sum_neg_scale;
+      
+      InternalRowIterator row_iter = P.begin1();
+      row_iter += row;
+      
+      row_max = 0;
+      row_min = 0;
+      row_sum_pos = 0;
+      row_sum_neg = 0;
+      
+      // Truncate interpolation by making values to zero that are a lot smaller than the biggest value in a row
+      // Determine max entry and sum of row (seperately for negative and positive entries)
+      for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+      {
+  if (*col_iter > row_max)
+    row_max = *col_iter;
+  if (*col_iter < row_min)
+    row_min = *col_iter;
+  if (*col_iter > 0)
+    row_sum_pos += *col_iter;
+  if (*col_iter < 0)
+    row_sum_neg += *col_iter;
+      }
+      
+      row_sum_pos_scale = row_sum_pos;
+      row_sum_neg_scale = row_sum_neg;
+      
+      // Make certain values to zero (seperately for negative and positive entries)
+      for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+      {
+  if (*col_iter > 0 && *col_iter < tag.get_interpolweight() * row_max)
+  {
+    row_sum_pos_scale -= *col_iter;
+    *col_iter = 0;
+  }
+  if (*col_iter < 0 && *col_iter > tag.get_interpolweight() * row_min)
+  {
+    row_sum_pos_scale -= *col_iter;
+    *col_iter = 0;
+  }
+      }
+      
+      // Scale remaining values such that row sum is unchanged
+      for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+      {
+  if (*col_iter > 0)
+    *col_iter = *col_iter *(row_sum_pos/row_sum_pos_scale);
+  if (*col_iter < 0)
+    *col_iter = *col_iter *(row_sum_neg/row_sum_neg_scale);
+      }
+    }
+    
+    /** @brief AG (aggregation based) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA)
+     * @param level    Coarse level identifier
+     * @param A      Operator matrix on all levels
+     * @param P      Prolongation matrices. P[level] is constructed
+     * @param Pointvector  Vector of points on all levels
+     * @param tag    AMG preconditioner tag
+    */
+    template <typename InternalType1, typename InternalType2>
+    void amg_interpol_ag(unsigned int level, InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+    {
+      typedef typename InternalType1::value_type SparseMatrixType;
+      typedef typename InternalType2::value_type PointVectorType;
+      typedef typename SparseMatrixType::value_type ScalarType;
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      unsigned int x;
+      amg_point *pointx, *pointy;
+      unsigned int c_points = Pointvector[level].get_cpoints();
+      
+      P[level] = SparseMatrixType(A[level].size1(), c_points);
+      P[level].clear();
+      
+      // Assign indices to C points
+      Pointvector[level].build_index();
+      
+      // Set prolongation such that F point is interpolated (weight=1) by the aggregate it belongs to (Vanek et al p.6)
+#ifdef _OPENMP
+      #pragma omp parallel for private (x,pointx) shared (P)
+#endif      
+      for (x=0; x<Pointvector[level].size(); ++x)
+      {
+  pointx = Pointvector[level][x];
+  pointy = Pointvector[level][pointx->get_aggregate()];
+  // Point x belongs to aggregate y.
+  P[level](x,pointy->get_coarse_index()) = 1;
+      }
+      
+      #ifdef DEBUG
+      std::cout << "Aggregation based Prolongation:" << std::endl;
+      printmatrix(P[level]);
+      #endif
+    }
+      
+    /** @brief SA (smoothed aggregate) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA)
+     * @param level    Coarse level identifier
+     * @param A      Operator matrix on all levels
+     * @param P      Prolongation matrices. P[level] is constructed
+     * @param Pointvector  Vector of points on all levels
+     * @param tag    AMG preconditioner tag
+    */
+    template <typename InternalType1, typename InternalType2>
+    void amg_interpol_sa(unsigned int level, InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+    {
+      typedef typename InternalType1::value_type SparseMatrixType;
+      typedef typename InternalType2::value_type PointVectorType;
+      typedef typename SparseMatrixType::value_type ScalarType;
+      typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+      typedef typename SparseMatrixType::iterator2 InternalColIterator;
+      
+      unsigned int x,y;
+      ScalarType diag;
+      unsigned int c_points = Pointvector[level].get_cpoints();
+           
+      InternalType1 P_tentative = InternalType1(P.size());
+      SparseMatrixType Jacobi = SparseMatrixType(A[level].size1(), A[level].size2());
+      Jacobi.clear();
+      P[level] = SparseMatrixType(A[level].size1(), c_points);
+      P[level].clear();      
+           
+      // Build Jacobi Matrix via filtered A matrix (Vanek et al. p.6)
+#ifdef _OPENMP
+      #pragma omp parallel for private (x,y,diag) shared (A,Pointvector)
+#endif      
+      for (x=0; x<A[level].size1(); ++x)
+      {
+  diag = 0;
+  InternalRowIterator row_iter = A[level].begin1();
+  row_iter += x;
+  for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+  {
+    y = col_iter.index2();
+    // Determine the structure of the Jacobi matrix by using a filtered matrix of A:
+    // The diagonal consists of the diagonal coefficient minus all coefficients of points not in the neighborhood of x.
+    // All other coefficients are the same as in A.
+    // Already use Jacobi matrix to save filtered A matrix to speed up computation.
+    if (x == y)
+      diag += *col_iter;
+    else if (!Pointvector[level][x]->is_influencing(Pointvector[level][y]))
+      diag += -*col_iter;
+    else
+      Jacobi (x,y) = *col_iter;      
+  }
+  InternalRowIterator row_iter2 = Jacobi.begin1();
+  row_iter2 += x;
+  // Traverse through filtered A matrix and compute the Jacobi filtering
+  for (InternalColIterator col_iter2 = row_iter2.begin(); col_iter2 != row_iter2.end(); ++col_iter2)
+  {
+      *col_iter2 = - tag.get_interpolweight()/diag * *col_iter2;
+  }
+  // Diagonal can be computed seperately.
+  Jacobi (x,x) = 1 - tag.get_interpolweight();
+      }
+          
+      #ifdef DEBUG
+      std::cout << "Jacobi Matrix:" << std::endl;
+      printmatrix(Jacobi);
+      #endif
+      
+      // Use AG interpolation as tentative prolongation
+      amg_interpol_ag(level, A, P_tentative, Pointvector, tag);
+      
+      #ifdef DEBUG
+      std::cout << "Tentative Prolongation:" << std::endl;
+      printmatrix(P_tentative[level]);
+      #endif
+      
+      // Multiply Jacobi matrix with tentative prolongation to get actual prolongation
+      amg_mat_prod(Jacobi,P_tentative[level],P[level]);
+      
+      #ifdef DEBUG
+      std::cout << "Prolongation Matrix:" << std::endl;
+      printmatrix (P[level]);
+      #endif    
+    }
+      } //namespace amg
+    }
+  }
+}
+
+#endif
diff --git a/viennacl/linalg/detail/spai/block_matrix.hpp b/viennacl/linalg/detail/spai/block_matrix.hpp
new file mode 100644
index 0000000..2e35ff8
--- /dev/null
+++ b/viennacl/linalg/detail/spai/block_matrix.hpp
@@ -0,0 +1,90 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_BLOCK_MATRIX_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_BLOCK_MATRIX_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include "viennacl/ocl/backend.hpp"
+#include "viennacl/tools/tools.hpp"
+
+/** @file viennacl/linalg/detail/spai/block_matrix.hpp
+    @brief Implementation of a bunch of (small) matrices on GPU. Experimental.
+    
+    SPAI code contributed by Nikolay Lukash
+*/
+
+namespace viennacl
+{
+    namespace linalg
+    {
+      namespace detail
+      {
+        namespace spai
+        {
+          
+          /**
+          * @brief Represents a contigious matrices on GPU
+          */
+          
+          class block_matrix{
+          public:
+              block_matrix(){
+                  
+              }
+              /**
+              * @brief Returns a handle to the elements
+              */
+              viennacl::ocl::handle<cl_mem>& handle(){ return _elements; }
+              /**
+              * @brief Returns a handle to the matrix dimensions
+              */
+              viennacl::ocl::handle<cl_mem>& handle1() { return _matrix_dimensions; }
+              /**
+              * @brief Returns a handle to the start indices of matrix
+              */
+              viennacl::ocl::handle<cl_mem>& handle2() { return _start_block_inds; }
+              
+              /**
+              * @brief Returns a handle to the const elements
+              */
+              const viennacl::ocl::handle<cl_mem>& handle() const { return _elements; }
+              /**
+              * @brief Returns a handle to the const matrix dimensions
+              */
+              const viennacl::ocl::handle<cl_mem>& handle1() const { return _matrix_dimensions; }
+              /**
+              * @brief Returns a handle to the const start indices of matrix
+              */
+              const viennacl::ocl::handle<cl_mem>& handle2() const { return _start_block_inds; }
+          private:
+              //unsigned int _vectorIndex;
+              viennacl::ocl::handle<cl_mem> _elements;
+              viennacl::ocl::handle<cl_mem> _matrix_dimensions;
+              viennacl::ocl::handle<cl_mem> _start_block_inds;
+          };
+        
+        
+        }
+      }
+    }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/block_vector.hpp b/viennacl/linalg/detail/spai/block_vector.hpp
new file mode 100644
index 0000000..6d78cea
--- /dev/null
+++ b/viennacl/linalg/detail/spai/block_vector.hpp
@@ -0,0 +1,78 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_BLOCK_VECTOR_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_BLOCK_VECTOR_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include "viennacl/ocl/backend.hpp"
+#include "viennacl/tools/tools.hpp"
+
+/** @file viennacl/linalg/detail/spai/block_vector.hpp
+    @brief Implementation of a bunch of vectors on GPU. Experimental.
+    
+    SPAI code contributed by Nikolay Lukash
+*/
+
+namespace viennacl
+{
+    namespace linalg
+    {
+      namespace detail
+      {
+        namespace spai
+        {
+        
+          /**
+          * @brief Represents a contigious vector on GPU
+          */
+          
+          class block_vector{
+          public:
+              block_vector(){
+              }
+              /**
+              * @brief Return handle to the elements
+              */
+              viennacl::ocl::handle<cl_mem>& handle(){ return _elements; }
+              /**
+              * @brief Return handle to start indices
+              */
+              viennacl::ocl::handle<cl_mem>& handle1() { return _start_block_inds; }
+              
+              /**
+              * @brief Return handle to the const elements
+              */
+              const viennacl::ocl::handle<cl_mem>& handle() const { return _elements; }
+              /**
+              * @brief Return handle to const start indices
+              */
+              const viennacl::ocl::handle<cl_mem>& handle1() const { return _start_block_inds; }
+          private:
+              //unsigned int _vectorIndex;
+              viennacl::ocl::handle<cl_mem> _elements;
+              viennacl::ocl::handle<cl_mem> _start_block_inds;
+          };
+        }
+      }
+    }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/fspai.hpp b/viennacl/linalg/detail/spai/fspai.hpp
new file mode 100644
index 0000000..e33b31b
--- /dev/null
+++ b/viennacl/linalg/detail/spai/fspai.hpp
@@ -0,0 +1,406 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_FSPAI_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_FSPAI_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+
+//boost includes
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/lu.hpp"
+#include "boost/numeric/ublas/triangular.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+
+// ViennaCL includes
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/compressed_matrix_operations.hpp"
+#include "viennacl/linalg/matrix_operations.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+//#include <omp.h>
+
+/** @file viennacl/linalg/detail/spai/fspai.hpp
+    @brief Implementation of FSPAI. Experimental.
+*/
+
+namespace viennacl
+{
+    namespace linalg
+    {
+      namespace detail
+      {
+        namespace spai
+        {
+        
+          /** @brief A tag for FSPAI. Experimental.
+          * Contains values for the algorithm.
+          * Must be passed to spai_precond constructor
+          */
+          class fspai_tag{
+              /** @brief Constructor
+              * @param residual_norm_threshold Calculate until the norm of the residual falls below this threshold
+              * @param iteration_limit maximum number of iterations
+              * @param is_static determines if static version of SPAI should be used
+              * @param is_right determines if left or right preconditioner should be used
+              */
+          public:
+              fspai_tag(
+                      double residual_norm_threshold = 1e-3,
+                      unsigned int iteration_limit = 5, 
+                      bool is_static = false,
+                      bool is_right = false) :
+              _residual_norm_threshold(residual_norm_threshold),
+              _iteration_limit(iteration_limit),
+              _is_static(is_static),
+              _is_right(is_right){};
+              
+              inline const double getResidualNormThreshold() const
+              { return _residual_norm_threshold; }
+              inline const unsigned long getIterationLimit () const
+              { return _iteration_limit; }
+              inline const bool getIsStatic() const
+              { return _is_static; }
+              inline const bool getIsRight() const
+              { return _is_right; }
+              inline void setResidualNormThreshold(double residual_norm_threshold){
+                  if(residual_norm_threshold > 0)
+                      _residual_norm_threshold = residual_norm_threshold;
+              }
+              inline void setIterationLimit(unsigned long iteration_limit){
+                  if(iteration_limit > 0)
+                      _iteration_limit = iteration_limit;
+              }
+              inline void setIsRight(bool is_right){
+                  _is_right = is_right;
+              }
+              inline void setIsStatic(bool is_static){
+                  _is_static = is_static;
+              }
+              
+          private:
+              double _residual_norm_threshold;
+              unsigned long _iteration_limit;
+              bool _is_static;
+              bool _is_right;
+          };
+          
+          
+          //
+          // Helper: Store A in an STL container of type, exploiting symmetry
+          // Reason: ublas interface does not allow to iterate over nonzeros of a particular row without starting an iterator1 from the very beginning of the matrix...
+          //
+          template <typename MatrixType, typename ScalarType>
+          void sym_sparse_matrix_to_stl(MatrixType const & A, std::vector<std::map<unsigned int, ScalarType> > & STL_A)
+          {
+            STL_A.resize(A.size1());
+            for (typename MatrixType::const_iterator1 row_it  = A.begin1();
+                                                      row_it != A.end1();
+                                                    ++row_it)
+            {
+              for (typename MatrixType::const_iterator2 col_it  = row_it.begin();
+                                                        col_it != row_it.end();
+                                                      ++col_it)
+              {
+                if (col_it.index1() >= col_it.index2())
+                  STL_A[col_it.index1()][col_it.index2()] = *col_it;
+                else
+                  break; //go to next row
+              }
+            }
+          }
+          
+          
+          //
+          // Generate index sets J_k, k=0,...,N-1
+          //
+          template <typename MatrixType>
+          void generateJ(MatrixType const & A, std::vector<std::vector<size_t> > & J)
+          {
+            for (typename MatrixType::const_iterator1 row_it  = A.begin1();
+                                                      row_it != A.end1();
+                                                    ++row_it)
+            {
+              for (typename MatrixType::const_iterator2 col_it  = row_it.begin();
+                                                        col_it != row_it.end();
+                                                      ++col_it)
+              {
+                if (col_it.index1() > col_it.index2()) //Matrix is symmetric, thus only work on lower triangular part
+                {
+                  J[col_it.index2()].push_back(col_it.index1());
+                  J[col_it.index1()].push_back(col_it.index2());
+                }
+                else
+                  break; //go to next row
+              }
+            }
+          }
+
+
+          //
+          // Extracts the blocks A(\tilde{J}_k, \tilde{J}_k) from A 
+          // Sets up y_k = A(\tilde{J}_k, k) for the inplace-solution after Cholesky-factoriation
+          //
+          template <typename ScalarType, typename MatrixType, typename VectorType>
+          void fill_blocks(std::vector< std::map<unsigned int, ScalarType> > & A,
+                          std::vector<MatrixType> & blocks,
+                          std::vector<std::vector<size_t> > const & J,
+                          std::vector<VectorType> & Y)
+          {
+            for (size_t k=0; k<A.size(); ++k)
+            {
+              std::vector<size_t> const & Jk = J[k];
+              VectorType & yk = Y[k];
+              MatrixType & block_k = blocks[k];
+
+              yk.resize(Jk.size());
+              block_k.resize(Jk.size(), Jk.size());
+              block_k.clear();
+              
+              for (size_t i=0; i<Jk.size(); ++i)
+              {
+                size_t row_index = Jk[i];
+                std::map<unsigned int, ScalarType> & A_row = A[row_index];
+                
+                //fill y_k:
+                yk[i] = A_row[k];
+                
+                for (size_t j=0; j<Jk.size(); ++j)
+                {
+                  size_t col_index = Jk[j];
+                  if (col_index <= row_index && A_row.find(col_index) != A_row.end()) //block is symmetric, thus store only lower triangular part
+                    block_k(i, j) = A_row[col_index];
+                }
+              }
+            }
+          }
+          
+          
+          //
+          // Perform Cholesky factorization of A inplace. Cf. Schwarz: Numerische Mathematik, vol 5, p. 58
+          //
+          template <typename MatrixType>
+          void cholesky_decompose(MatrixType & A)
+          {
+            for (size_t k=0; k<A.size2(); ++k)
+            {
+              if (A(k,k) <= 0)
+              {
+                std::cout << "k: " << k << std::endl;
+                std::cout << "A(k,k): " << A(k,k) << std::endl;
+              }
+              
+              assert(A(k,k) > 0);
+              
+              A(k,k) = std::sqrt(A(k,k));
+              
+              for (size_t i=k+1; i<A.size1(); ++i)
+              {
+                A(i,k) /= A(k,k);
+                for (size_t j=k+1; j<=i; ++j)
+                  A(i,j) -= A(i,k) * A(j,k);
+              }
+            }
+          }
+          
+          
+          //
+          // Compute x in Ax = b, where A is already Cholesky factored (A = L L^T)
+          //
+          template <typename MatrixType, typename VectorType>
+          void cholesky_solve(MatrixType const & L, VectorType & b)
+          {
+            typedef typename VectorType::value_type  ScalarType;
+            
+            // inplace forward solve L x = b
+            for (size_t i=0; i<L.size1(); ++i)
+            {
+              for (size_t j=0; j<i; ++j)
+                b[i] -= L(i,j) * b[j];
+              b[i] /= L(i,i);
+            }
+            
+            // inplace backward solve L^T x = b:
+            for (size_t i=L.size1()-1; ; --i)
+            {
+              for (size_t k=i+1; k<L.size1(); ++k)
+                b[i] -= L(k,i) * b[k];
+              b[i] /= L(i,i);
+              
+              if (i==0) //size_t might be unsigned, therefore manual check for equality with zero here
+                break;
+            }
+          }
+          
+          
+          
+          //
+          // Compute the Cholesky factor L from the sparse vectors y_k
+          //
+          template <typename MatrixType, typename VectorType1>
+          void computeL(MatrixType const & A, 
+                        MatrixType & L,
+                        MatrixType & L_trans,
+                        std::vector<VectorType1> & Y,
+                        std::vector<std::vector<size_t> > & J)
+          {
+            typedef typename VectorType1::value_type    ScalarType;
+            typedef std::vector<std::map<unsigned int, ScalarType> >     STLSparseMatrixType;
+            
+            STLSparseMatrixType L_temp(A.size1());
+            
+            for (size_t k=0; k<A.size1(); ++k)
+            {
+              std::vector<size_t> const & Jk = J[k];
+              VectorType1 const & yk = Y[k];
+              
+              //compute L(k,k):
+              ScalarType Lkk = A(k,k);
+              for (size_t i=0; i<Jk.size(); ++i)
+                Lkk -= A(Jk[i],k) * yk[i];
+              
+              Lkk = 1.0 / sqrt(Lkk);
+              L_temp[k][k] = Lkk;
+              L_trans(k,k) = Lkk;
+              
+              //write lower diagonal entries:
+              for (size_t i=0; i<Jk.size(); ++i)
+              {
+                L_temp[Jk[i]][k] = -Lkk * yk[i];
+                L_trans(k, Jk[i]) = -Lkk * yk[i];
+              }
+            } //for k
+            
+            
+            //build L from L_temp
+            for (size_t i=0; i<L_temp.size(); ++i)
+              for (typename std::map<unsigned int, ScalarType>::const_iterator it = L_temp[i].begin();
+                  it != L_temp[i].end();
+                ++it)
+                  L(i, it->first) = it->second;
+          }
+          
+
+          //
+          // Top level FSPAI function
+          //
+          template <typename MatrixType>
+          void computeFSPAI(MatrixType const & A, 
+                            MatrixType const & PatternA,
+                            MatrixType & L, 
+                            MatrixType & L_trans, 
+                            fspai_tag const & tag)
+          {
+            typedef typename MatrixType::value_type              ScalarType;
+            typedef boost::numeric::ublas::matrix<ScalarType>    DenseMatrixType;
+            typedef std::vector<std::map<unsigned int, ScalarType> >     SparseMatrixType;
+            
+            //
+            // preprocessing: Store A in a STL container:
+            //
+            //std::cout << "Transferring to STL container:" << std::endl;
+            std::vector<std::vector<ScalarType> >    y_k(A.size1());
+            SparseMatrixType   STL_A(A.size1());
+            sym_sparse_matrix_to_stl(A, STL_A);
+            
+            
+            //
+            // Step 1: Generate pattern indices
+            //
+            //std::cout << "computeFSPAI(): Generating pattern..." << std::endl;
+            std::vector<std::vector<size_t> > J(A.size1());
+            generateJ(PatternA, J);
+
+            //
+            // Step 2: Set up matrix blocks
+            //
+            //std::cout << "computeFSPAI(): Setting up matrix blocks..." << std::endl;
+            std::vector<DenseMatrixType>  subblocks_A(A.size1());
+            fill_blocks(STL_A, subblocks_A, J, y_k);
+            STL_A.clear(); //not needed anymore
+            
+            //
+            // Step 3: Cholesky-factor blocks
+            //
+            //std::cout << "computeFSPAI(): Cholesky-factorization..." << std::endl;
+            for (size_t i=0; i<subblocks_A.size(); ++i)
+            {
+              //std::cout << "Block before: " << subblocks_A[i] << std::endl;
+              cholesky_decompose(subblocks_A[i]);
+              //std::cout << "Block after: " << subblocks_A[i] << std::endl;
+            }
+            
+            
+            /*size_t num_bytes = 0;
+            for (size_t i=0; i<subblocks_A.size(); ++i)
+              num_bytes += 8*subblocks_A[i].size1()*subblocks_A[i].size2();*/
+            //std::cout << "Memory for FSPAI matrix: " << num_bytes / (1024.0 * 1024.0) << " MB" << std::endl;
+            
+            //
+            // Step 4: Solve for y_k
+            //
+            //std::cout << "computeFSPAI(): Cholesky-solve..." << std::endl;
+            for (size_t i=0; i<y_k.size(); ++i)
+            {
+              if (subblocks_A[i].size1() > 0) //block might be empty...
+              {
+                //y_k[i].resize(subblocks_A[i].size1());
+                //std::cout << "y_k[" << i << "]: ";
+                //for (size_t j=0; j<y_k[i].size(); ++j)
+                //  std::cout << y_k[i][j] << " ";
+                //std::cout << std::endl;
+                cholesky_solve(subblocks_A[i], y_k[i]);
+              }
+            }
+            
+            
+            //
+            // Step 5: Set up Cholesky factors L and L_trans
+            //
+            //std::cout << "computeFSPAI(): Computing L..." << std::endl;
+            L.resize(A.size1(), A.size2(), false);
+            L.reserve(A.nnz(), false);
+            L_trans.resize(A.size1(), A.size2(), false);
+            L_trans.reserve(A.nnz(), false);
+            computeL(A, L, L_trans, y_k, J);
+            
+            //std::cout << "L: " << L << std::endl;
+          }
+          
+          
+          
+        }
+      }
+    }
+}
+
+#endif
diff --git a/viennacl/linalg/detail/spai/qr.hpp b/viennacl/linalg/detail/spai/qr.hpp
new file mode 100644
index 0000000..bc80f71
--- /dev/null
+++ b/viennacl/linalg/detail/spai/qr.hpp
@@ -0,0 +1,438 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_QR_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_QR_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/detail/spai/qr.hpp
+    @brief Implementation of a simultaneous QR factorization of multiple matrices. Experimental.
+    
+    SPAI code contributed by Nikolay Lukash
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <cmath>
+#include <sstream>
+#include "viennacl/ocl/backend.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+#include "boost/numeric/ublas/detail/matrix_assign.hpp"
+//#include "boost/thread/thread.hpp"
+
+#include "viennacl/vector.hpp"
+#include "viennacl/matrix.hpp"
+
+#include "viennacl/linalg/detail/spai/block_matrix.hpp"
+#include "viennacl/linalg/detail/spai/block_vector.hpp"
+#include "viennacl/linalg/kernels/spai_source.h"
+#include "viennacl/linalg/kernels/spai_kernels.h"
+
+namespace viennacl
+{
+    namespace linalg
+    {
+      namespace detail
+      {
+        namespace spai
+        {
+        
+          
+          
+          //********** DEBUG FUNCTIONS *****************//
+          template< typename T, typename InputIterator>
+          void Print(std::ostream& ostr, InputIterator it_begin, InputIterator it_end){
+              //std::ostream_iterator<int> it_os(ostr, delimiter);
+              std::string delimiters = " ";
+              std::copy(it_begin, it_end, std::ostream_iterator<T>(ostr, delimiters.c_str()));
+              ostr<<std::endl;
+          }
+          
+          template<typename VectorType, typename MatrixType>
+          void write_to_block(VectorType& con_A_I_J, unsigned int start_ind,  const std::vector<unsigned int>& I, const std::vector<unsigned int>& J, MatrixType& m){
+              m.resize(I.size(), J.size(), false);
+              for(size_t i = 0; i < J.size(); ++i){
+                  for(size_t j = 0; j < I.size(); ++j){
+                      m(j,i) = con_A_I_J[start_ind + i*I.size() + j];
+                  }
+              }
+          }
+          
+          template<typename VectorType>
+          void print_continious_matrix(VectorType& con_A_I_J, std::vector<cl_uint>& blocks_ind,
+                                      const std::vector<std::vector<unsigned int> >& g_I, const std::vector<std::vector<unsigned int> >& g_J){
+              typedef typename VectorType::value_type ScalarType;
+              std::vector<boost::numeric::ublas::matrix<ScalarType> > com_A_I_J(g_I.size());
+              for(size_t i = 0; i < g_I.size(); ++i){
+                  write_to_block( con_A_I_J, blocks_ind[i], g_I[i], g_J[i], com_A_I_J[i]);
+                  std::cout<<com_A_I_J[i]<<std::endl;
+              }
+          }
+          template<typename VectorType>
+          void print_continious_vector(VectorType& con_v, std::vector<cl_uint>& block_ind, const std::vector<std::vector<unsigned int> >& g_J){
+              typedef typename VectorType::value_type ScalarType;
+              std::vector<boost::numeric::ublas::vector<ScalarType> > com_v(g_J.size());
+              //Print<ScalarType>(std::cout, con_v.begin(), con_v.end());
+              for(size_t i = 0; i < g_J.size(); ++i){
+                  com_v[i].resize(g_J[i].size());
+                  for(size_t j = 0; j < g_J[i].size(); ++j){
+                      com_v[i](j) = con_v[block_ind[i] + j];
+                  }
+                  std::cout<<com_v[i]<<std::endl;
+              }
+          }
+          
+          ///**************************************** BLOCK FUNCTIONS ************************************//
+          /** @brief Computes size of elements, start indices and matrix dimensions for a certain block
+          * @param g_I container of row indices 
+          * @param g_J container of column indices 
+          * @param sz general size for all elements in a certain block
+          * @param blocks_ind start indices in a certain
+          * @param matrix_dims matrix dimensions for each block
+          */ 
+          void compute_blocks_size(const std::vector<std::vector<unsigned int> >& g_I, const std::vector<std::vector<unsigned int> >& g_J, 
+                                  unsigned int& sz, std::vector<cl_uint>& blocks_ind, std::vector<cl_uint>& matrix_dims){
+              sz = 0;
+              for(size_t i = 0; i < g_I.size(); ++i){
+                  sz += static_cast<unsigned int>(g_I[i].size()*g_J[i].size());
+                  matrix_dims[2*i] = static_cast<cl_uint>(g_I[i].size());
+                  matrix_dims[2*i + 1] = static_cast<cl_uint>(g_J[i].size());
+                  blocks_ind[i+1] = blocks_ind[i] + static_cast<cl_uint>(g_I[i].size()*g_J[i].size());
+                  
+              }
+          }
+          /** @brief Computes size of particular container of index set 
+          * @param inds container of index sets 
+          * @param size output size 
+          */ 
+          void get_size(const std::vector<std::vector<unsigned int> >& inds, unsigned int& size){
+              size = 0;
+              for (size_t i = 0; i < inds.size(); ++i) {
+                  size += static_cast<unsigned int>(inds[i].size());
+              }
+          }
+          
+          /** @brief Initializes start indices of particular index set 
+          * @param inds container of index sets 
+          * @param start_inds output index set 
+          */
+          void init_start_inds(const std::vector<std::vector<unsigned int> >& inds, std::vector<cl_uint>& start_inds){
+              for(size_t i = 0; i < inds.size(); ++i){
+                  start_inds[i+1] = start_inds[i] + static_cast<cl_uint>(inds[i].size());
+              }
+          }
+
+          //*************************************  QR FUNCTIONS  ***************************************//
+          /** @brief Dot prod of particular column of martix A with it's self starting at a certain index beg_ind 
+          * @param A init matrix 
+          * @param beg_ind starting index
+          * @param res result of dot product
+          */
+          template<typename MatrixType, typename ScalarType>
+          void dot_prod(const MatrixType& A,  unsigned int beg_ind, ScalarType& res){
+              res = static_cast<ScalarType>(0);
+              for(size_t i = beg_ind; i < A.size1(); ++i){
+                  res += A(i, beg_ind-1)*A(i, beg_ind-1);
+              }
+          }
+          /** @brief Dot prod of particular matrix column with arbitrary vector: A(:, col_ind)
+          * @param A init matrix
+          * @param v input vector
+          * @param col_ind starting column index
+          * @param start_ind starting index inside column
+          * @param res result of dot product
+          */
+          template<typename MatrixType, typename VectorType, typename ScalarType>
+          void custom_inner_prod(const MatrixType& A, const VectorType& v, unsigned int col_ind, unsigned int start_ind, ScalarType& res){
+              res = static_cast<ScalarType>(0);
+              for(unsigned int i = start_ind; i < static_cast<unsigned int>(A.size1()); ++i){
+                  res += A(i, col_ind)*v(i);  
+              }
+          }
+          
+          /** @brief Copying part of matrix column 
+          * @param A init matrix
+          * @param v output vector
+          * @param beg_ind start index for copying
+          */
+          template<typename MatrixType, typename VectorType>
+          void copy_vector(const MatrixType & A, VectorType & v, const unsigned int beg_ind){
+              for(unsigned int i = beg_ind; i < static_cast<unsigned int>(A.size1()); ++i){
+                  v(i) = A( i, beg_ind-1);
+              }
+          }
+          
+          //householder reflection c.f. Gene H. Golub, Charles F. Van Loan "Matrix Computations" 3rd edition p.210
+          /** @brief Coputation of Householder vector, householder reflection c.f. Gene H. Golub, Charles F. Van Loan "Matrix Computations" 3rd edition p.210
+          * @param A init matrix
+          * @param j start index for computations 
+          * @param v output Householder vector 
+          * @param b beta
+          */
+          template<typename MatrixType, typename VectorType, typename ScalarType>
+          void householder_vector(const MatrixType& A, unsigned int j, VectorType& v, ScalarType& b){
+              ScalarType sg;
+              //
+              dot_prod(A, j+1, sg); 
+              copy_vector(A, v, j+1);
+              ScalarType mu;
+              v(j) = static_cast<ScalarType>(1.0);
+              if(sg == 0){
+                  b = 0;
+              }
+              else{
+                  mu = std::sqrt(A(j,j)*A(j, j) + sg);
+                  if(A(j, j) <= 0){
+                      v(j) = A(j, j) - mu;
+                  }else{
+                      v(j) = -sg/(A(j, j) + mu);
+                  }
+                  b = 2*(v(j)*v(j))/(sg + v(j)*v(j));
+                  v = v/v(j);
+              }
+          }
+          /** @brief Inplace application of Householder vector to a matrix A
+          * @param A init matrix
+          * @param iter_cnt current iteration
+          * @param v Householder vector 
+          * @param b beta
+          */
+          template<typename MatrixType, typename VectorType, typename ScalarType>
+          void apply_householder_reflection(MatrixType& A, unsigned int iter_cnt, VectorType& v, ScalarType b){
+              //update every column of matrix A
+              ScalarType in_prod_res;
+              for(unsigned int i = iter_cnt; i < static_cast<unsigned int>(A.size2()); ++i){
+                  //update each column in a fashion: ai = ai - b*v*(v'*ai)
+                  custom_inner_prod(A, v, i, iter_cnt, in_prod_res);
+                  for(unsigned int j = iter_cnt; j < static_cast<unsigned int>(A.size1()); ++j){
+                      A(j, i) -= b*in_prod_res*v(j);
+                  }
+              }
+          }
+          
+          /** @brief Storage of vector v in column(A, ind), starting from ind-1 index of a column
+          * @param A init matrix
+          * @param ind index of a column
+          * @param v vector that should be stored
+          */
+          template<typename MatrixType, typename VectorType>
+          void store_householder_vector(MatrixType& A, unsigned int ind, VectorType& v){
+              for(unsigned int i = ind; i < static_cast<unsigned int>(A.size1()); ++i){
+                  A(i, ind-1) = v(i);
+              }
+          }
+          
+          
+          //QR algorithm 
+          /** @brief Inplace QR factorization via Householder reflections c.f. Gene H. Golub, Charles F. Van Loan "Matrix Computations" 3rd edition p.224
+          * @param R input matrix 
+          * @param b_v vector of betas
+          */
+          template<typename MatrixType, typename VectorType>
+          void single_qr(MatrixType& R, VectorType& b_v){
+              typedef typename MatrixType::value_type ScalarType;
+              if((R.size1() > 0) && (R.size2() > 0)){
+                  VectorType v = (VectorType)boost::numeric::ublas::zero_vector<ScalarType>(R.size1());
+                  b_v = (VectorType)boost::numeric::ublas::zero_vector<ScalarType>(R.size2());
+                  for(unsigned int i = 0; i < static_cast<unsigned int>(R.size2()); ++i){
+                      householder_vector(R, i, v, b_v[i]);
+                      apply_householder_reflection(R, i, v, b_v[i]);
+                      if(i < R.size1()) store_householder_vector(R, i+1, v);
+                  }
+              }
+          }
+          
+          //********************** HELP FUNCTIONS FOR GPU-based QR factorization *************************//
+          /** @brief Reading from text file into string
+          * @param file_name file name
+          * @param kernel_source string that contains file
+          */
+          void read_kernel_from_file(std::string& file_name, std::string& kernel_source){
+              std::ifstream ifs(file_name.c_str(), std::ifstream::in);
+              
+              if (!ifs)
+                std::cerr << "WARNING: Cannot open file " << file_name << std::endl;
+              
+              std::string line;
+              std::ostringstream ost;
+              while (std::getline(ifs, line)) {
+                  ost<<line<<std::endl;
+              }
+              kernel_source = ost.str();
+          }
+          
+          /** @brief Getting max size of rows/columns from container of index set
+          * @param inds container of index set
+          * @param max_size max size that corresponds to that container
+          */
+          void get_max_block_size(const std::vector<std::vector<unsigned int> >& inds, unsigned int& max_size){
+              max_size = 0;
+              for(unsigned int i = 0; i < inds.size(); ++i){
+                  if(inds[i].size() > max_size){
+                      max_size = static_cast<unsigned int>(inds[i].size());
+                  }
+              }
+          }
+          
+          /** @brief Dot_prod(column(A, ind), v) starting from index ind+1 
+          * @param A input matrix
+          * @param v input vector
+          * @param ind index
+          * @param res result value
+          */
+          template<typename MatrixType, typename VectorType, typename ScalarType>
+          void custom_dot_prod(const MatrixType& A, const VectorType& v, unsigned int ind, ScalarType& res){
+              res = static_cast<ScalarType>(0);
+              for(unsigned int j = ind; j < A.size1(); ++j){
+                  if(j == ind){
+                      res += v(j);
+                  }else{
+                      res += A(j, ind)*v(j);
+                  }
+              }
+          }
+          
+          /** @brief Recovery Q from matrix R and vector of betas b_v
+          * @param R input matrix
+          * @param b_v vector of betas
+          * @param y output vector
+          */
+          template<typename MatrixType, typename VectorType>
+          void apply_q_trans_vec(const MatrixType& R, const VectorType& b_v, VectorType& y){
+              typedef typename MatrixType::value_type ScalarType;
+              ScalarType inn_prod = static_cast<ScalarType>(0);
+              for(size_t i = 0; i < R.size2(); ++i){
+                  custom_dot_prod(R, y, static_cast<unsigned int>(i), inn_prod);
+                  for(size_t j = i; j < R.size1(); ++j){
+                      if(i == j){
+                          y(j) -= b_v(i)*inn_prod;
+                      }
+                      else{
+                          y(j) -= b_v(i)*inn_prod*R(j,i);
+                      }
+                  }
+              }
+          }
+          
+          /** @brief Multiplication of Q'*A, where Q is in implicit for lower part of R and vector of betas - b_v
+          * @param R input matrix
+          * @param b_v vector of betas
+          * @param A output matrix
+          */
+          template<typename MatrixType, typename VectorType>
+          void apply_q_trans_mat(const MatrixType& R, const VectorType& b_v, MatrixType& A){
+              VectorType tmp_v;
+              for(size_t i = 0; i < A.size2(); ++i){
+                  tmp_v = (VectorType)column(A,i);
+                  apply_q_trans_vec(R, b_v, tmp_v);
+                  column(A,i) = tmp_v;
+              }
+          }
+          
+          //parallel QR for GPU
+          /** @brief Inplace QR factorization via Householder reflections c.f. Gene H. Golub, Charles F. Van Loan "Matrix Computations" 3rd edition p.224 performed
+                      on GPU
+          * @param g_I container of row indices
+          * @param g_J container of column indices
+          * @param g_A_I_J_vcl contigious matrices, GPU memory is used
+          * @param g_bv_vcl contigios vectors beta, GPU memory is used 
+          * @param g_is_update container of indicators that show active blocks  
+          * @param cur_iter current iteration
+          */
+          template<typename ScalarType>
+          void block_qr(std::vector<std::vector<unsigned int> >& g_I, 
+                        std::vector<std::vector<unsigned int> >& g_J, 
+                        block_matrix& g_A_I_J_vcl,
+                        block_vector& g_bv_vcl,
+                        std::vector<cl_uint>& g_is_update,
+                        const unsigned int cur_iter){
+              //typedef typename MatrixType::value_type ScalarType;
+              unsigned int bv_size;
+              unsigned int v_size;
+              //set up arguments for GPU
+              //find maximum size of rows/columns
+              unsigned int local_r_n, local_c_n;
+              //find max size for blocks
+              get_max_block_size(g_I, local_r_n);
+              get_max_block_size(g_J, local_c_n);
+              //get size
+              get_size(g_J, bv_size);
+              get_size(g_I, v_size);
+              //get start indices
+              std::vector<cl_uint> start_bv_inds(g_I.size() + 1, 0);
+              std::vector<cl_uint> start_v_inds(g_I.size() + 1, 0);
+              init_start_inds(g_J, start_bv_inds);
+              init_start_inds(g_I, start_v_inds);
+              //init arrays
+              std::vector<ScalarType> b_v(bv_size, static_cast<ScalarType>(0));
+              std::vector<ScalarType> v(v_size, static_cast<ScalarType>(0));
+              //call qr program
+              block_vector v_vcl;
+              /*if(cur_iter == 0)
+              {
+                  //if first run - compile the program
+                  std::string qr_kernel_file_name = "kernels/spai/qr3_a_n.cl";
+                  std::string qr_kernel_source;
+                  read_kernel_from_file(qr_kernel_file_name, qr_kernel_source);
+                  viennacl::ocl::program & qr_prog = viennacl::ocl::current_context().add_program(qr_kernel_source.c_str(), "qr_kernel_source");
+                  qr_prog.add_kernel("block_qr");
+                  //
+              }*/
+              
+              g_bv_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,  
+                                                                      static_cast<unsigned int>(sizeof(ScalarType)*bv_size), 
+                                                                      &(b_v[0]));
+              
+              v_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,  
+                                                                                                  static_cast<unsigned int>(sizeof(ScalarType)*v_size), 
+                                                                                                  &(v[0]));
+              //the same as j_start_inds
+              g_bv_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                                static_cast<unsigned int>(sizeof(cl_uint)*g_I.size()), 
+                                                                                &(start_bv_inds[0]));
+              
+              v_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                                static_cast<unsigned int>(sizeof(cl_uint)*g_I.size()), 
+                                                                                &(start_v_inds[0]));
+              viennacl::ocl::handle<cl_mem> g_is_update_vcl = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+                                                                                static_cast<unsigned int>(sizeof(cl_uint)*g_is_update.size()),
+                                                                                &(g_is_update[0]));
+              //local memory
+              //viennacl::ocl::enqueue(k(vcl_vec, size, viennacl::ocl::local_mem(sizeof(SCALARTYPE) * k.local_work_size()), temp));
+              viennacl::ocl::kernel& qr_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_qr");
+              qr_kernel.local_work_size(0, local_c_n);
+              qr_kernel.global_work_size(0, 256);
+              viennacl::ocl::enqueue(qr_kernel(g_A_I_J_vcl.handle(), g_A_I_J_vcl.handle1(), g_bv_vcl.handle(), 
+                                              v_vcl.handle(), g_A_I_J_vcl.handle2(), 
+                                              g_bv_vcl.handle1(), v_vcl.handle1(), g_is_update_vcl,
+                                              viennacl::ocl::local_mem(static_cast<unsigned int>(sizeof(ScalarType)*(local_r_n*local_c_n))),
+                                              static_cast<cl_uint>(g_I.size())));
+              
+          }
+        }
+      }
+    }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/small_matrix.hpp b/viennacl/linalg/detail/spai/small_matrix.hpp
new file mode 100644
index 0000000..fbb0ce4
--- /dev/null
+++ b/viennacl/linalg/detail/spai/small_matrix.hpp
@@ -0,0 +1,109 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_SMALL_MATRIX_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_SMALL_MATRIX_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/detail/spai/small_matrix.hpp
+    @brief Implementation of a routines for small matrices (helper for SPAI). Experimental in 1.2.x.
+    
+    SPAI code contributed by Nikolay Lukash
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/lu.hpp"
+#include "boost/numeric/ublas/triangular.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+#include "boost/numeric/ublas/detail/matrix_assign.hpp"
+
+
+
+namespace viennacl
+{
+    namespace linalg
+    {
+      namespace detail
+      {
+        namespace spai
+        {
+
+          //
+          // Constructs an orthonormal sparse matrix M (with M^T M = Id). Is composed of elementary 2x2 rotation matrices with suitable renumbering.
+          //
+          template <typename MatrixType>
+          void make_rotation_matrix(MatrixType & mat, size_t new_size, size_t off_diagonal_distance = 4)
+          {
+            mat.resize(new_size, new_size, false);
+            mat.clear();
+
+            double val = 1 / sqrt(2.0);
+
+            for (size_t i=0; i<new_size; ++i)
+              mat(i,i) = val;
+
+            for (size_t i=off_diagonal_distance; i<new_size; ++i)
+            {
+              mat(i-off_diagonal_distance, i) = val; mat(i, i-off_diagonal_distance) = -val;
+            }
+
+          }
+
+
+          //calcualtes matrix determinant
+          template <typename MatrixType>
+          double determinant(boost::numeric::ublas::matrix_expression<MatrixType> const& mat_r)
+          {
+              double det = 1.0;
+              
+              MatrixType mLu(mat_r() );
+              boost::numeric::ublas::permutation_matrix<std::size_t> pivots(mat_r().size1() );
+              
+              int is_singular = static_cast<int>(lu_factorize(mLu, pivots));
+              
+              if (!is_singular)
+              {
+                  for (std::size_t i=0; i < pivots.size(); ++i)
+                  {
+                      if (pivots(i) != i)
+                          det *= -1.0;
+                      
+                      det *= mLu(i,i);
+                  }
+              }
+              else
+                  det = 0.0;
+              
+              return det;
+          } 
+          
+        }
+      }
+    }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/spai-dynamic.hpp b/viennacl/linalg/detail/spai/spai-dynamic.hpp
new file mode 100644
index 0000000..734ddc3
--- /dev/null
+++ b/viennacl/linalg/detail/spai/spai-dynamic.hpp
@@ -0,0 +1,654 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_SPAI_DYNAMIC_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_SPAI_DYNAMIC_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/detail/spai/spai-dynamic.hpp
+    @brief Implementation of a dynamic SPAI. Provides the routines for automatic pattern updates Experimental in 1.2.x.
+    
+    SPAI code contributed by Nikolay Lukash
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+//#include "block_matrix.hpp"
+//#include "block_vector.hpp"
+//#include "benchmark-utils.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/lu.hpp"
+#include "boost/numeric/ublas/triangular.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+// ViennaCL includes
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/compressed_matrix_operations.hpp"
+#include "viennacl/linalg/matrix_operations.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/ocl/backend.hpp"
+
+#include "viennacl/linalg/detail/spai/block_matrix.hpp"
+#include "viennacl/linalg/detail/spai/block_vector.hpp"
+#include "viennacl/linalg/detail/spai/qr.hpp"
+#include "viennacl/linalg/detail/spai/spai_tag.hpp"
+#include "viennacl/linalg/kernels/spai_source.h"
+#include "viennacl/linalg/kernels/spai_kernels.h"
+
+namespace viennacl
+{
+    namespace linalg
+    {
+      namespace detail
+      {
+        namespace spai
+        {
+        
+          typedef std::pair<unsigned int, double> PairT;
+          struct CompareSecond{
+              bool operator()(const PairT& left, const PairT& right)
+              {
+                  return static_cast<double>(left.second) > static_cast<double>(right.second);
+              }
+          };
+          
+          
+          /** @brief Initializes Dense matrix from sparse one
+          * @param A_in Riginal sparse matrix
+          * @param J Set of column indices
+          * @param I Set of row indices 
+          * @param A_out dense matrix output
+          */
+          template<typename SparseMatrixType, typename DenseMatrixType>
+          void initProjectSubMatrix(const SparseMatrixType& A_in, const std::vector<unsigned int>& J, std::vector<unsigned int>& I,
+                                    DenseMatrixType& A_out){
+              typedef typename DenseMatrixType::value_type ScalarType;
+              A_out.resize(I.size(), J.size(), false);
+              for(size_t j = 0; j < J.size(); ++j){
+                  for(size_t i = 0; i < I.size(); ++i){
+                      A_out(i,j) = A_in(I[i],J[j]);
+                  }
+              }
+          }
+          
+          /** @brief Determines if element ind is in set {J}
+          * @param J current set
+          * @param ind current element
+          */
+          bool isInIndexSet(const std::vector<unsigned int>& J, const unsigned int& ind){
+              return (std::find(J.begin(), J.end(), ind) != J.end());
+          }
+          
+          /** @brief Composition of new matrix R, that is going to be used in Least Square problem solving
+          * @param A matrix Q'*A(I, \\tilde J), where \\tilde J - set of new column indices
+          * @param R_n matrix A_Iu_J_u after QR factorization
+          * @param R previously composed matrix R 
+          */
+          template<typename MatrixType>
+          void composeNewR(const MatrixType& A, const MatrixType& R_n, MatrixType& R){
+              typedef typename MatrixType::value_type ScalarType;
+              size_t row_n = R_n.size1() - (A.size1() - R.size2()); 
+              MatrixType C = boost::numeric::ublas::zero_matrix<ScalarType>(R.size1() + row_n, R.size2() + A.size2());
+              //write original R to new Composite R
+              boost::numeric::ublas::project(C, boost::numeric::ublas::range(0,R.size1()), boost::numeric::ublas::range(0, R.size2())) += R;
+              //write upper part of Q'*A_I_\hatJ, all columns and number of rows that equals to R.size2()
+              boost::numeric::ublas::project(C, boost::numeric::ublas::range(0, R.size2()), boost::numeric::ublas::range(R.size2(), 
+                                                                                                                        R.size2() + A.size2())) += 
+              boost::numeric::ublas::project(A, boost::numeric::ublas::range(0, R.size2()), boost::numeric::ublas::range(0, A.size2()));
+              //adding decomposed(QR) block to Composite R
+              if(R_n.size1() > 0 && R_n.size2() > 0)
+                  boost::numeric::ublas::project(C, boost::numeric::ublas::range(R.size2(), R.size1() + row_n),
+                                                boost::numeric::ublas::range(R.size2(), R.size2() + A.size2())) += R_n;
+              R = C;
+          }
+          
+          /** @brief Composition of new vector of coefficients beta from QR factorizations(necessary for Q recovery)
+          * @param v_n new vector from last QR factorization
+          * @param v composition of previous vectors from QR factorizations
+          */
+          template<typename VectorType>
+          void composeNewVector(const VectorType& v_n, VectorType& v){
+              typedef typename VectorType::value_type ScalarType;
+              VectorType w  = boost::numeric::ublas::zero_vector<ScalarType>(v.size() + v_n.size());
+              boost::numeric::ublas::project(w, boost::numeric::ublas::range(0, v.size())) += v;
+              boost::numeric::ublas::project(w, boost::numeric::ublas::range(v.size(), v.size() + v_n.size())) += v_n;
+              v = w;
+          }
+          
+          /** @brief Computation of Euclidean norm for sparse vector
+          * @param v initial sparse vector
+          * @param norm scalar that represents Euclidean norm
+          */
+          template<typename SparseVectorType, typename ScalarType>
+          void sparse_norm_2(const SparseVectorType& v, ScalarType& norm){
+              for(typename SparseVectorType::const_iterator vec_it  = v.begin(); vec_it != v.end(); ++vec_it){
+                  norm += (vec_it->second)*(vec_it->second);
+              }
+              norm = std::sqrt(norm);
+          }
+          
+          /** @brief Dot product of two sparse vectors
+          * @param v1 initial sparse vector
+          * @param v2 initial sparse vector
+          * @param res_v scalar that represents dot product result
+          */
+          template<typename SparseVectorType, typename ScalarType>
+          void sparse_inner_prod(const SparseVectorType& v1, const SparseVectorType& v2, ScalarType& res_v){
+              typename SparseVectorType::const_iterator v_it1 = v1.begin();
+              typename SparseVectorType::const_iterator v_it2 = v2.begin();
+              while((v_it1 != v1.end())&&(v_it2 != v2.end())){
+                  if(v_it1->first == v_it2->first){
+                      res_v += (v_it1->second)*(v_it2->second);
+                      ++v_it1;
+                      ++v_it2;
+                  }
+                  else if(v_it1->first < v_it2->first){
+                      ++v_it1;
+                  }
+                  else 
+                      ++v_it2;
+                      
+                  
+              }
+          }
+          
+          /** @brief Building a new set of column indices J_u, cf. Kallischko dissertation p.31
+          * @param A_v_c vectorized column-wise initial matrix 
+          * @param res residual vector 
+          * @param J set of column indices
+          * @param J_u set of new column indices 
+          * @param tag SPAI tag with parameters
+          */
+          template <typename SparseVectorType, typename ScalarType>
+          bool buildAugmentedIndexSet(const std::vector<SparseVectorType>& A_v_c, 
+                                      const SparseVectorType& res,
+                                      std::vector<unsigned int>& J,
+                                      std::vector<unsigned int>& J_u,
+                                      const spai_tag& tag){
+              std::vector<std::pair<unsigned int, ScalarType> > p;
+              size_t cur_size = 0;
+              ScalarType inprod, norm2;
+              //print_sparse_vector(res);
+              for(typename SparseVectorType::const_iterator res_it = res.begin(); res_it != res.end(); ++res_it){
+                  if(!isInIndexSet(J, res_it->first) && (std::abs(res_it->second) > tag.getResidualThreshold())){
+                      inprod = norm2 = 0;
+                      sparse_inner_prod(res, A_v_c[res_it->first], inprod);
+                      sparse_norm_2(A_v_c[res_it->first], norm2);
+                      p.push_back(std::pair<size_t, ScalarType>(res_it->first, (inprod*inprod)/(norm2*norm2)));
+                  }
+              }
+              
+              std::sort(p.begin(), p.end(), CompareSecond());
+              while ((cur_size < J.size())&&(p.size() > 0)) {
+                  J_u.push_back(p[0].first);
+                  p.erase(p.begin());
+                  cur_size++;
+              }
+              p.clear();
+              return (cur_size > 0);
+          }
+          
+          /** @brief Building a new indices to current set of row indices I_n, cf. Kallischko dissertation p.32
+          * @param A_v_c vectorized column-wise initial matrix
+          * @param I set of previous determined row indices
+          * @param J_n set of new column indices
+          * @param I_n set of new indices 
+          */
+          template<typename SparseVectorType>
+          void buildNewRowSet(const std::vector<SparseVectorType>& A_v_c, const std::vector<unsigned int>& I, 
+                              const std::vector<unsigned int>& J_n, std::vector<unsigned int>& I_n){
+              for(size_t i = 0; i < J_n.size(); ++i){
+                  for(typename SparseVectorType::const_iterator col_it = A_v_c[J_n[i]].begin(); col_it!=A_v_c[J_n[i]].end(); ++col_it){
+                      if(!isInIndexSet(I, col_it->first)&&!isInIndexSet(I_n, col_it->first)){
+                          I_n.push_back(col_it->first);
+                      }
+                  }
+              }
+          }
+          
+          /** @brief Composition of new block for QR factorization cf. Kallischko dissertation p.82, figure 4.7
+          * @param A_I_J previously composed block
+          * @param A_I_J_u matrix Q'*A(I, \\tilde J), where \\tilde J - set of new column indices
+          * @param A_I_u_J_u is composition of lower part A(I, \\tilde J) and  A(\\tilde I, \\tilde J) - new block for QR decomposition
+          */
+          template<typename MatrixType>
+          void QRBlockComposition(const MatrixType& A_I_J, const MatrixType& A_I_J_u, MatrixType& A_I_u_J_u){
+              typedef typename MatrixType::value_type ScalarType;
+              size_t row_n1 = A_I_J_u.size1() - A_I_J.size2();
+              size_t row_n2 = A_I_u_J_u.size1();
+              size_t row_n = row_n1 + row_n2;
+              size_t col_n = A_I_J_u.size2();
+              MatrixType C = boost::numeric::ublas::zero_matrix<ScalarType>(row_n, col_n);
+              boost::numeric::ublas::project(C, boost::numeric::ublas::range(0, row_n1), boost::numeric::ublas::range(0, col_n)) += 
+              boost::numeric::ublas::project(A_I_J_u, boost::numeric::ublas::range(A_I_J.size2(), A_I_J_u.size1()),
+                                            boost::numeric::ublas::range(0, col_n));
+                                            
+              boost::numeric::ublas::project(C, boost::numeric::ublas::range(row_n1, row_n1 + row_n2),
+                                            boost::numeric::ublas::range(0, col_n)) += A_I_u_J_u;
+              A_I_u_J_u = C;
+          }
+          
+          /** @brief CPU-based dynamic update for SPAI preconditioner
+          * @param A initial sparse matrix
+          * @param A_v_c vectorized column-wise initial matrix
+          * @param g_res container of residuals for all columns
+          * @param g_is_update container with identificators that shows which block should be modified 
+          * @param g_I container of row index sets for all columns
+          * @param g_J container of column index sets for all columns
+          * @param g_b_v container of vectors of beta for Q recovery(cf. Golub Van Loan "Matrix Computations", 3rd edition p.211)
+          * @param g_A_I_J container of block matrices from previous update  
+          * @param tag  SPAI configuration tag
+          */
+          template<typename SparseMatrixType, typename SparseVectorType, typename DenseMatrixType, typename VectorType>
+          void block_update(const SparseMatrixType& A, const std::vector<SparseVectorType>& A_v_c,
+                            std::vector<SparseVectorType>& g_res,
+                            std::vector<bool>& g_is_update,
+                            std::vector<std::vector<unsigned int> >& g_I,
+                            std::vector<std::vector<unsigned int> >& g_J, 
+                            std::vector<VectorType>& g_b_v,
+                            std::vector<DenseMatrixType>& g_A_I_J,
+                            spai_tag const & tag){
+              typedef typename DenseMatrixType::value_type ScalarType;
+              //set of new column indices
+              std::vector<std::vector<unsigned int> > g_J_u(g_J.size());
+              //set of new row indices 
+              std::vector<std::vector<unsigned int> > g_I_u(g_J.size());
+              //matrix A(I, \tilde J), cf. Kallischko p.31-32
+              std::vector<DenseMatrixType> g_A_I_J_u(g_J.size());
+              //matrix A(\tilde I, \tilde J), cf. Kallischko
+              std::vector<DenseMatrixType> g_A_I_u_J_u(g_J.size());
+              //new vector of beta coefficients from QR factorization
+              std::vector<VectorType> g_b_v_u(g_J.size());
+#ifdef _OPENMP
+              #pragma omp parallel for
+#endif              
+              for(std::size_t i = 0; i < g_J.size(); ++i){
+                  if(g_is_update[i]){
+                      if(buildAugmentedIndexSet<SparseVectorType, ScalarType>(A_v_c, g_res[i], g_J[i], g_J_u[i], tag)){
+                          //initialize matrix A_I_\hatJ
+                          initProjectSubMatrix(A, g_J_u[i], g_I[i], g_A_I_J_u[i]);
+                          //multiplication of Q'*A_I_\hatJ
+                          apply_q_trans_mat(g_A_I_J[i], g_b_v[i], g_A_I_J_u[i]);
+                          //building new rows index set \hatI
+                          buildNewRowSet(A_v_c, g_I[i], g_J_u[i], g_I_u[i]);
+                          initProjectSubMatrix(A, g_J_u[i], g_I_u[i], g_A_I_u_J_u[i]);
+                          //composition of block for new QR factorization
+                          QRBlockComposition(g_A_I_J[i], g_A_I_J_u[i], g_A_I_u_J_u[i]);
+                          //QR factorization
+                          single_qr(g_A_I_u_J_u[i], g_b_v_u[i]);
+                          //composition of new R and new vector b_v
+                          composeNewR(g_A_I_J_u[i], g_A_I_u_J_u[i], g_A_I_J[i]);
+                          composeNewVector(g_b_v_u[i], g_b_v[i]);
+                          //composition of new sets: I and J
+                          g_J[i].insert(g_J[i].end(), g_J_u[i].begin(), g_J_u[i].end());
+                          g_I[i].insert(g_I[i].end(), g_I_u[i].begin(), g_I_u[i].end());
+                      }else{
+                          g_is_update[i] = false;
+                      }
+                  }
+              }
+          }
+          /**************************************************** GPU SPAI Update ****************************************************************/
+          
+          
+          //performs Q'*A(I, \tilde J) on GPU
+          /** @brief Performs multiplication Q'*A(I, \\tilde J) on GPU
+          * @param g_J_u container of sets of new column indices
+          * @param g_I container of row indices
+          * @param g_A_I_J_vcl block matrix composed from previous blocks, they are blocks of R
+          * @param g_bv_vcl block of beta vectors 
+          * @param g_A_I_J_u_vcl block of matrices A(I, \\tilde J) 
+          * @param g_is_update indicators, that show if a certain block should be processed
+          * @param cur_iter current iteration, used to make sure that kernel compiles just once
+          */
+          template<typename ScalarType>
+          void block_q_multiplication(const std::vector<std::vector<unsigned int> >& g_J_u, 
+                                      const std::vector<std::vector<unsigned int> >& g_I, 
+                                      block_matrix& g_A_I_J_vcl, 
+                                      block_vector& g_bv_vcl, 
+                                      block_matrix& g_A_I_J_u_vcl, 
+                                      std::vector<cl_uint>& g_is_update,
+                                      const unsigned int cur_iter){
+              unsigned int local_r_n, local_c_n, sz_blocks;
+              get_max_block_size(g_I, local_r_n);
+              get_max_block_size(g_J_u, local_c_n);
+              //for debug 
+              std::vector<cl_uint> matrix_dims(g_I.size()*2, static_cast<cl_uint>(0));
+              std::vector<cl_uint> blocks_ind(g_I.size() + 1, static_cast<cl_uint>(0));
+              compute_blocks_size(g_I, g_J_u, sz_blocks, blocks_ind, matrix_dims);
+              std::vector<ScalarType> con_A_I_J(sz_blocks, static_cast<ScalarType>(0));
+              /*if(cur_iter == 1){
+                  //if first run - compile the program
+                  std::string block_q_kernel_file_name = "kernels/spai/block_q.cl";
+                  std::string block_q_kernel_source;
+                  read_kernel_from_file(block_q_kernel_file_name, block_q_kernel_source);
+                  viennacl::ocl::program & block_q_prog = viennacl::ocl::current_context().add_program(block_q_kernel_source.c_str(), "block_q_kernel_source");
+                  block_q_prog.add_kernel("block_q_mult");
+                  //
+              }*/
+              
+              viennacl::ocl::handle<cl_mem> g_is_update_vcl = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+                                                                                  static_cast<unsigned int>(sizeof(cl_uint)*(g_is_update.size())),
+                                                                                                            &(g_is_update[0]));
+              viennacl::ocl::kernel& block_q_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_q_mult");
+              block_q_kernel.local_work_size(0, local_c_n);
+              block_q_kernel.global_work_size(0, 256);
+              viennacl::ocl::enqueue(block_q_kernel(g_A_I_J_vcl.handle(), g_A_I_J_vcl.handle2(), g_A_I_J_u_vcl.handle(), g_A_I_J_u_vcl.handle2(), 
+                                                    g_bv_vcl.handle(),   
+                                                    g_bv_vcl.handle1(), g_A_I_J_vcl.handle1(), g_A_I_J_u_vcl.handle1(), g_is_update_vcl,
+                                                    viennacl::ocl::local_mem(static_cast<unsigned int>(sizeof(ScalarType)*(local_r_n*local_c_n))),
+                                                    static_cast<cl_uint>(g_I.size())));
+          }
+          
+          /** @brief Assembly of container of index row sets: I_q, row indices for new "QR block"
+          * @param g_I container of row indices
+          * @param g_J container of column indices
+          * @param g_I_u container of new row indices 
+          * @param g_I_q container of row indices for new QR blocks
+          */
+          void assemble_qr_row_inds(const std::vector<std::vector<unsigned int> >& g_I, const std::vector<std::vector<unsigned int> > g_J, 
+                                    const std::vector<std::vector<unsigned int> >& g_I_u, 
+                                    std::vector<std::vector<unsigned int> >& g_I_q){
+#ifdef _OPENMP
+              #pragma omp parallel for
+#endif              
+              for(std::size_t i = 0; i < g_I.size(); ++i){
+                  for(std::size_t j = g_J[i].size(); j < g_I[i].size(); ++j){
+                      g_I_q[i].push_back(g_I[i][j]);
+                  }
+                  
+                  for(std::size_t j = 0; j < g_I_u[i].size(); ++j){
+                      g_I_q[i].push_back(g_I_u[i][j]);
+                  }
+              }
+          }
+
+          /** @brief Performs assembly for new QR block
+          * @param g_J container of column indices 
+          * @param g_I container of row indices
+          * @param g_J_u container of new column indices
+          * @param g_I_u container of new row indices 
+          * @param g_I_q container of row indices for new QR blocks 
+          * @param g_A_I_J_u_vcl blocks of Q'*A(I, \\tilde J)
+          * @param matrix_dimensions array with matrix dimensions for all blocks
+          * @param g_A_I_u_J_u_vcl blocks A(\\tilde I, \\tilde J)
+          * @param g_is_update container with update indicators
+          * @param is_empty_block indicator if all previous blocks A(\\tilde I, \\tilde J) - are empty, in case if they are empty kernel with smaller number of
+                                  arguments is used
+          * @param cur_iter current iteration, used to make sure that kernel compiles just once 
+          */
+          template<typename ScalarType>
+          void assemble_qr_block(
+                                const std::vector<std::vector<unsigned int> >& g_J, 
+                                const std::vector<std::vector<unsigned int> >& g_I, 
+                                const std::vector<std::vector<unsigned int> >& g_J_u,
+                                const std::vector<std::vector<unsigned int> >& g_I_u, 
+                                std::vector<std::vector<unsigned int> >& g_I_q,
+                                block_matrix& g_A_I_J_u_vcl, 
+                                viennacl::ocl::handle<cl_mem>& matrix_dimensions, 
+                                block_matrix& g_A_I_u_J_u_vcl, 
+                                std::vector<cl_uint>& g_is_update,
+                                const bool is_empty_block,
+                                const unsigned int cur_iter){
+              //std::vector<std::vector<unsigned int> > g_I_q(g_I.size());
+              assemble_qr_row_inds(g_I, g_J, g_I_u, g_I_q);
+              unsigned int sz_blocks;
+              std::vector<cl_uint> matrix_dims(g_I.size()*2, static_cast<cl_uint>(0));
+              std::vector<cl_uint> blocks_ind(g_I.size() + 1, static_cast<cl_uint>(0));
+              compute_blocks_size(g_I_q, g_J_u, sz_blocks, blocks_ind, matrix_dims);
+              std::vector<ScalarType> con_A_I_J_q(sz_blocks, static_cast<ScalarType>(0));
+              
+              /*if(cur_iter == 1){
+                  std::string qr_block_asm_file_name = "kernels/spai/qr_block_assembly_g.cl";
+                  std::string qr_block_asm_source;
+                  read_kernel_from_file(qr_block_asm_file_name, qr_block_asm_source);
+                  viennacl::ocl::program & qr_block_asm_prog = viennacl::ocl::current_context().add_program(qr_block_asm_source.c_str(), 
+                                                                                                        "qr_block_assembly_kernel_source");
+                  
+                  qr_block_asm_prog.add_kernel("block_qr_assembly");
+                  
+                  
+                  //extra kernel in case of empty block A_I_u_J_u
+                  std::string qr_block_asm_file_name_1 = "kernels/spai/qr_block_assembly_1_g.cl";
+                  std::string qr_block_asm_source_1;
+                  read_kernel_from_file(qr_block_asm_file_name_1, qr_block_asm_source_1);
+                  viennacl::ocl::program & qr_block_asm_prog_1 = viennacl::ocl::current_context().add_program(qr_block_asm_source_1.c_str(), 
+                                                                                                            "qr_block_assembly_kernel_source_1");
+                  
+                  qr_block_asm_prog_1.add_kernel("block_qr_assembly_1");
+                  
+              }*/
+              block_matrix g_A_I_J_q_vcl;
+              //need to allocate memory for QR block
+              g_A_I_J_q_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+                                                                                      static_cast<unsigned int>(sizeof(ScalarType)*sz_blocks),
+                                                                                      &(con_A_I_J_q[0]));
+              g_A_I_J_q_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                                static_cast<unsigned int>(sizeof(cl_uint)*2*static_cast<unsigned int>(g_I.size())), 
+                                                                                &(matrix_dims[0]));
+              g_A_I_J_q_vcl.handle2() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+                                                                  static_cast<unsigned int>(sizeof(cl_uint)*2*static_cast<unsigned int>(g_I.size() + 1)),
+                                                                                      &(blocks_ind[0]));
+              viennacl::ocl::handle<cl_mem> g_is_update_vcl = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+                                                                                                            static_cast<unsigned int>(sizeof(cl_uint)*(g_is_update.size())),
+                                                                                                            &(g_is_update[0]));
+              
+              if(!is_empty_block){
+                  viennacl::ocl::kernel& qr_assembly_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_qr_assembly");
+                  qr_assembly_kernel.local_work_size(0, 1);
+                  qr_assembly_kernel.global_work_size(0, 256);
+                  viennacl::ocl::enqueue(qr_assembly_kernel(matrix_dimensions, 
+                                                            g_A_I_J_u_vcl.handle(), 
+                                                            g_A_I_J_u_vcl.handle2(), 
+                                                            g_A_I_J_u_vcl.handle1(), 
+                                                            g_A_I_u_J_u_vcl.handle(),
+                                                            g_A_I_u_J_u_vcl.handle2(), 
+                                                            g_A_I_u_J_u_vcl.handle1(), 
+                                                            g_A_I_J_q_vcl.handle(), 
+                                                            g_A_I_J_q_vcl.handle2(), 
+                                                            g_A_I_J_q_vcl.handle1(),
+                                                            g_is_update_vcl,
+                                                            static_cast<unsigned int>(g_I.size())));
+              }else{
+                  viennacl::ocl::kernel& qr_assembly_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_qr_assembly_1");
+                  qr_assembly_kernel.local_work_size(0, 1);
+                  qr_assembly_kernel.global_work_size(0, 256);
+                  viennacl::ocl::enqueue(qr_assembly_kernel(matrix_dimensions, g_A_I_J_u_vcl.handle(), g_A_I_J_u_vcl.handle2(), 
+                                                            g_A_I_J_u_vcl.handle1(),
+                                                            g_A_I_J_q_vcl.handle(), 
+                                                            g_A_I_J_q_vcl.handle2(), g_A_I_J_q_vcl.handle1(),
+                                                            g_is_update_vcl,
+                                                            static_cast<unsigned int>(g_I.size())));
+              }
+              g_A_I_u_J_u_vcl.handle() = g_A_I_J_q_vcl.handle();
+              g_A_I_u_J_u_vcl.handle1() = g_A_I_J_q_vcl.handle1();
+              g_A_I_u_J_u_vcl.handle2() = g_A_I_J_q_vcl.handle2();
+          }
+
+          /** @brief Performs assembly for new R matrix on GPU
+          * @param g_I container of row indices
+          * @param g_J container of column indices
+          * @param g_A_I_J_vcl container of block matrices from previous update  
+          * @param g_A_I_J_u_vcl container of block matrices Q'*A(I, \\tilde J)
+          * @param g_A_I_u_J_u_vcl container of block matrices QR factored on current iteration
+          * @param g_bv_vcl block of beta vectors from previous iteration
+          * @param g_bv_vcl_u block of updated beta vectors got after recent QR factorization
+          * @param g_is_update container with identificators that shows which block should be modified 
+          * @param cur_iter current iteration, used to make sure that kernel compiles just once 
+          */ 
+          template<typename ScalarType>
+          void assemble_r(std::vector<std::vector<unsigned int> >& g_I, std::vector<std::vector<unsigned int> >& g_J,
+                          block_matrix& g_A_I_J_vcl, 
+                          block_matrix& g_A_I_J_u_vcl,
+                          block_matrix& g_A_I_u_J_u_vcl, 
+                          block_vector& g_bv_vcl, 
+                          block_vector& g_bv_vcl_u,
+                          std::vector<cl_uint>& g_is_update,
+                          const unsigned int cur_iter){
+              std::vector<cl_uint> matrix_dims(g_I.size()*2, static_cast<cl_uint>(0));
+              std::vector<cl_uint> blocks_ind(g_I.size() + 1, static_cast<cl_uint>(0));
+              std::vector<cl_uint> start_bv_r_inds(g_I.size() + 1, 0);
+              unsigned int sz_blocks, bv_size;
+              compute_blocks_size(g_I, g_J, sz_blocks, blocks_ind, matrix_dims);
+              get_size(g_J, bv_size);
+              init_start_inds(g_J, start_bv_r_inds);
+              std::vector<ScalarType> con_A_I_J_r(sz_blocks, static_cast<ScalarType>(0));
+              std::vector<ScalarType> b_v_r(bv_size, static_cast<ScalarType>(0));
+              /*if(cur_iter == 1){
+                  std::string r_block_asm_file_name = "kernels/spai/r_block_assembly_g.cl";
+                  std::string r_block_asm_source;
+                  read_kernel_from_file(r_block_asm_file_name, r_block_asm_source);
+                  viennacl::ocl::program & r_block_asm_prog = viennacl::ocl::current_context().add_program(r_block_asm_source.c_str(), 
+                                                                                                            "r_block_assembly_kernel_source");
+                  r_block_asm_prog.add_kernel("block_r_assembly");
+                  
+                  std::string bv_block_asm_file_name = "kernels/spai/bv_block_assembly_g.cl";
+                  std::string bv_block_asm_source;
+                  read_kernel_from_file(bv_block_asm_file_name, bv_block_asm_source);
+                  viennacl::ocl::program & bv_block_asm_prog = viennacl::ocl::current_context().add_program(bv_block_asm_source.c_str(), 
+                                                                                                          "bv_block_assembly_kernel_source");
+                  bv_block_asm_prog.add_kernel("block_bv_assembly");
+              }*/
+              block_matrix g_A_I_J_r_vcl;
+              block_vector g_bv_r_vcl;
+              g_A_I_J_r_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+                                                                                      static_cast<unsigned int>(sizeof(ScalarType)*sz_blocks),
+                                                                                      &(con_A_I_J_r[0]));
+              g_A_I_J_r_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                          static_cast<unsigned int>(sizeof(cl_uint)*2*static_cast<unsigned int>(g_I.size())), 
+                                                                                      &(matrix_dims[0]));
+              g_A_I_J_r_vcl.handle2() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+                                                          static_cast<unsigned int>(sizeof(cl_uint)*2*static_cast<unsigned int>(g_I.size() + 1)),
+                                                                                      &(blocks_ind[0]));
+              g_bv_r_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,  
+                                                                        static_cast<unsigned int>(sizeof(ScalarType)*bv_size), 
+                                                                        &(b_v_r[0]));
+              g_bv_r_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                                static_cast<unsigned int>(sizeof(cl_uint)*(g_I.size() + 1)), 
+                                                                                &(start_bv_r_inds[0]));
+              viennacl::ocl::handle<cl_mem> g_is_update_vcl = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+                                                                                          static_cast<unsigned int>(sizeof(cl_uint)*(g_is_update.size())),
+                                                                                                            &(g_is_update[0]));
+              viennacl::ocl::kernel& r_assembly_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_r_assembly");
+              r_assembly_kernel.local_work_size(0, 1);
+              r_assembly_kernel.global_work_size(0, 256);
+              
+              viennacl::ocl::enqueue(r_assembly_kernel(g_A_I_J_vcl.handle(), g_A_I_J_vcl.handle2(), g_A_I_J_vcl.handle1(), 
+                                                      g_A_I_J_u_vcl.handle(), g_A_I_J_u_vcl.handle2(), g_A_I_J_u_vcl.handle1(), 
+                                                      g_A_I_u_J_u_vcl.handle(), g_A_I_u_J_u_vcl.handle2(), g_A_I_u_J_u_vcl.handle1(), 
+                                                      g_A_I_J_r_vcl.handle(), g_A_I_J_r_vcl.handle2(), g_A_I_J_r_vcl.handle1(),
+                                                      g_is_update_vcl, static_cast<cl_uint>(g_I.size())));
+              
+              viennacl::ocl::kernel & bv_assembly_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_bv_assembly");
+              bv_assembly_kernel.local_work_size(0, 1);
+              bv_assembly_kernel.global_work_size(0, 256);
+              viennacl::ocl::enqueue(bv_assembly_kernel(g_bv_vcl.handle(), g_bv_vcl.handle1(), g_A_I_J_vcl.handle1(), g_bv_vcl_u.handle(),
+                                                        g_bv_vcl_u.handle1(), g_A_I_J_u_vcl.handle1(),
+                                                        g_bv_r_vcl.handle(), g_bv_r_vcl.handle1(), g_A_I_J_r_vcl.handle1(), g_is_update_vcl,
+                                                        static_cast<cl_uint>(g_I.size())));
+              g_bv_vcl.handle() = g_bv_r_vcl.handle();
+              g_bv_vcl.handle1() = g_bv_r_vcl.handle1();
+              
+              g_A_I_J_vcl.handle() = g_A_I_J_r_vcl.handle();
+              g_A_I_J_vcl.handle2() = g_A_I_J_r_vcl.handle2();
+              g_A_I_J_vcl.handle1() = g_A_I_J_r_vcl.handle1();
+          }
+          
+          /** @brief GPU-based block update 
+          * @param A sparse matrix
+          * @param A_v_c vectorized column-wise initial matrix 
+          * @param g_is_update container with identificators that shows which block should be modified 
+          * @param g_res container of residuals for all columns
+          * @param g_J container of column index sets for all columns
+          * @param g_I container of row index sets for all columns
+          * @param g_A_I_J_vcl container of block matrices from previous update  
+          * @param g_bv_vcl block of beta vectors from previous iteration
+          * @param tag SPAI configuration tag
+          * @param cur_iter current iteration, used to make sure that kernel compiles just once 
+          */ 
+          template<typename ScalarType, unsigned int MAT_ALIGNMENT, typename SparseVectorType>
+          void block_update(const viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT>& A, const std::vector<SparseVectorType>& A_v_c,
+                            std::vector<cl_uint>& g_is_update,
+                            std::vector<SparseVectorType>& g_res,
+                            std::vector<std::vector<unsigned int> >& g_J, 
+                            std::vector<std::vector<unsigned int> >& g_I,
+                            block_matrix& g_A_I_J_vcl, 
+                            block_vector& g_bv_vcl,
+                            spai_tag const & tag,
+                            const unsigned int cur_iter){
+              //updated index set for columns
+              std::vector<std::vector<unsigned int> > g_J_u(g_J.size());
+              //updated index set for rows
+              std::vector<std::vector<unsigned int> > g_I_u(g_J.size());
+              //mixed index set of old and updated indices for rows 
+              std::vector<std::vector<unsigned int> > g_I_q(g_J.size());
+              //GPU memory for A_I_\hatJ
+              block_matrix g_A_I_J_u_vcl;
+              //GPU memory for A_\hatI_\hatJ
+              block_matrix g_A_I_u_J_u_vcl;
+              bool is_empty_block;
+              //GPU memory for new b_v
+              block_vector g_bv_u_vcl;
+#ifdef _OPENMP
+              #pragma omp parallel for
+#endif              
+              for(std::size_t i = 0; i < g_J.size(); ++i){
+                  if(g_is_update[i]){
+                      if(buildAugmentedIndexSet<SparseVectorType, ScalarType>(A_v_c, g_res[i], g_J[i], g_J_u[i], tag)){
+                          buildNewRowSet(A_v_c, g_I[i], g_J_u[i], g_I_u[i]);
+                      }
+                  }
+              }
+              //assemble new A_I_J_u blocks on GPU and multiply them with Q'
+              block_assembly(A, g_J_u, g_I, g_A_I_J_u_vcl, g_is_update, is_empty_block, cur_iter);
+              //I have matrix A_I_J_u ready..
+              block_q_multiplication<ScalarType>(g_J_u, g_I, g_A_I_J_vcl, g_bv_vcl, g_A_I_J_u_vcl, g_is_update, cur_iter);
+              //assemble A_\hatI_\hatJ
+              block_assembly(A, g_J_u, g_I_u, g_A_I_u_J_u_vcl, g_is_update, is_empty_block, cur_iter);
+              assemble_qr_block<ScalarType>(g_J, g_I, g_J_u, g_I_u, g_I_q, g_A_I_J_u_vcl, g_A_I_J_vcl.handle1(),
+                                            g_A_I_u_J_u_vcl, g_is_update, is_empty_block, cur_iter);
+              
+              block_qr<ScalarType>(g_I_q, g_J_u, g_A_I_u_J_u_vcl, g_bv_u_vcl, g_is_update, cur_iter);
+              //concatanation of new and old indices
+#ifdef _OPENMP
+              #pragma omp parallel for
+#endif              
+              for(std::size_t i = 0; i < g_J.size(); ++i){
+                  g_J[i].insert(g_J[i].end(), g_J_u[i].begin(), g_J_u[i].end());
+                  g_I[i].insert(g_I[i].end(), g_I_u[i].begin(), g_I_u[i].end());
+              }
+              assemble_r<ScalarType>(g_I, g_J, g_A_I_J_vcl, g_A_I_J_u_vcl, g_A_I_u_J_u_vcl,  g_bv_vcl,  g_bv_u_vcl, g_is_update, cur_iter);
+          }
+        
+        }        
+      }        
+    }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/spai-static.hpp b/viennacl/linalg/detail/spai/spai-static.hpp
new file mode 100644
index 0000000..f4a14ff
--- /dev/null
+++ b/viennacl/linalg/detail/spai/spai-static.hpp
@@ -0,0 +1,166 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_SPAI_STATIC_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_SPAI_STATIC_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/detail/spai/spai-static.hpp
+    @brief Implementation of a static SPAI. Experimental in 1.2.x.
+    
+    SPAI code contributed by Nikolay Lukash
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+//#include "spai-dynamic.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/lu.hpp"
+#include "boost/numeric/ublas/triangular.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+// ViennaCL includes
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/compressed_matrix_operations.hpp"
+#include "viennacl/linalg/matrix_operations.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+
+//#include "boost/numeric/ublas/detail/matrix_assign.hpp"
+
+namespace viennacl
+{
+    namespace linalg
+    {
+      namespace detail
+      {
+        namespace spai
+        {
+        
+          /********************************* STATIC SPAI FUNCTIONS******************************************/
+          
+          /** @brief Projects solution of LS problem onto original column m 
+          * @param m_in solution of LS
+          * @param J set of non-zero columns 
+          * @param m original column of M
+          */
+          template <typename VectorType, typename SparseVectorType>
+          void fanOutVector(const VectorType& m_in, const std::vector<unsigned int>& J, SparseVectorType& m){
+              unsigned int  cnt = 0;
+              for (size_t i = 0; i < J.size(); ++i) {
+                  m[J[i]] = m_in(cnt++);
+              }
+          }
+          /** @brief Solution of linear:R*x=y system by backward substitution
+          * @param R uppertriangular matrix 
+          * @param y right handside vector
+          * @param x solution vector
+          */
+          template <typename MatrixType, typename VectorType>
+          void backwardSolve(const MatrixType& R, const VectorType& y, VectorType& x){
+              typedef typename MatrixType::value_type ScalarType;
+              for (long i = R.size2()-1; i >= 0 ; i--) {
+                  x(i) = y(i);
+                  for (size_t j = i+1; j < R.size2(); ++j) {
+                      x(i) -= R(i,j)*x(j);
+                  }
+                  x(i) /= R(i,i);
+              }
+          }
+          /** @brief Perform projection of set I on the unit-vector
+          * @param I set of non-zero rows
+          * @param y result vector
+          * @param ind index of unit vector
+          */
+          template <typename VectorType, typename ScalarType>
+          void projectI(const std::vector<unsigned int>& I, VectorType& y, unsigned int ind){
+              for(size_t i = 0; i < I.size(); ++i){
+                  //y.resize(y.size()+1);
+                  if(I[i] == ind){
+                      y(i) = static_cast<ScalarType>(1.0);
+                  }
+                  else{
+                      y(i) = static_cast<ScalarType>(0.0);
+                  }
+              }
+          }
+          
+          /** @brief Builds index set of projected columns for current column of preconditioner
+          * @param v current column of preconditioner
+          * @param J output - index set of non-zero columns
+          */
+          template <typename SparseVectorType>
+          void buildColumnIndexSet(const SparseVectorType& v, std::vector<unsigned int>& J){
+              //typedef typename VectorType::value_type ScalarType;
+              unsigned int tmp_v;
+              for(typename SparseVectorType::const_iterator vec_it = v.begin(); vec_it != v.end(); ++vec_it){
+                  tmp_v = vec_it->first;
+                  J.push_back(vec_it->first);
+              }
+              std::sort(J.begin(), J.end());
+          }
+          
+          /** @brief Initialize preconditioner with sparcity pattern = p(A)
+          * @param A input matrix
+          * @param M output matrix - initialized preconditioner
+          */
+          template <typename SparseMatrixType>
+          void initPreconditioner(const SparseMatrixType& A, SparseMatrixType& M){
+              typedef typename SparseMatrixType::value_type ScalarType;
+              M.resize(A.size1(), A.size2(), false);
+              for(typename SparseMatrixType::const_iterator1 row_it = A.begin1(); row_it!= A.end1(); ++row_it){
+                  //
+                  for(typename SparseMatrixType::const_iterator2 col_it = row_it.begin(); col_it != row_it.end(); ++col_it){
+                      M(col_it.index1(),col_it.index2()) = static_cast<ScalarType>(1);
+                  }
+              }
+          }
+          
+          /** @brief Row projection for matrix A(:,J) -> A(I,J), building index set of non-zero rows
+          * @param A_v_c input matrix
+          * @param J set of non-zero rows
+          * @param I output matrix 
+          */
+          template <typename SparseVectorType>
+          void projectRows(const std::vector<SparseVectorType>& A_v_c, const std::vector<unsigned int>& J, std::vector<unsigned int>& I){
+              for(size_t i = 0; i < J.size(); ++i){
+                  for(typename SparseVectorType::const_iterator col_it = A_v_c[J[i]].begin(); col_it!=A_v_c[J[i]].end(); ++col_it){
+                      if(!isInIndexSet(I, col_it->first)){
+                          I.push_back(col_it->first);
+                      }
+                  }
+              }
+              std::sort(I.begin(), I.end());
+          }
+        }
+      }
+    }
+}
+
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/spai.hpp b/viennacl/linalg/detail/spai/spai.hpp
new file mode 100644
index 0000000..a40a9bd
--- /dev/null
+++ b/viennacl/linalg/detail/spai/spai.hpp
@@ -0,0 +1,754 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_SPAI_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_SPAI_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/detail/spai/spai.hpp
+    @brief Main implementation of SPAI (not FSPAI)
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+
+//local includes
+#include "viennacl/linalg/detail/spai/spai_tag.hpp"
+#include "viennacl/linalg/qr.hpp"
+#include "viennacl/linalg/detail/spai/spai-dynamic.hpp"
+#include "viennacl/linalg/detail/spai/spai-static.hpp"
+#include "viennacl/linalg/detail/spai/sparse_vector.hpp"
+#include "viennacl/linalg/detail/spai/block_matrix.hpp"
+#include "viennacl/linalg/detail/spai/block_vector.hpp"
+
+//boost includes
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/lu.hpp"
+#include "boost/numeric/ublas/triangular.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+
+// ViennaCL includes
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/compressed_matrix_operations.hpp"
+#include "viennacl/linalg/matrix_operations.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/ocl/backend.hpp"
+#include "viennacl/linalg/kernels/spai_source.h"
+#include "viennacl/linalg/kernels/spai_kernels.h"
+
+
+
+#define VIENNACL_SPAI_K_b 20
+
+namespace viennacl
+{
+  namespace linalg
+  {
+    namespace detail
+    {
+      namespace spai
+      {
+        
+        //debug function for print
+        template<typename SparseVectorType>
+        void print_sparse_vector(const SparseVectorType& v){
+            for(typename SparseVectorType::const_iterator vec_it = v.begin(); vec_it!= v.end(); ++vec_it){
+                std::cout<<"[ "<<vec_it->first<<" ]:"<<vec_it->second<<std::endl;
+            }
+        }
+        template<typename DenseMatrixType>
+        void print_matrix( DenseMatrixType & m){
+            for(int i = 0; i < m.size2(); ++i){
+                for(int j = 0; j < m.size1(); ++j){
+                    std::cout<<m(j, i)<<" ";
+                }
+                std::cout<<std::endl;
+            }
+        }
+        
+        /** @brief Add two sparse vectors res_v = b*v
+         * @param v initial sparse vector
+         * @param b scalar
+         * @param res_v output vector 
+         */ 
+        template<typename SparseVectorType, typename ScalarType>
+        void add_sparse_vectors(const SparseVectorType& v, const ScalarType b,  SparseVectorType& res_v){
+            for(typename SparseVectorType::const_iterator v_it = v.begin(); v_it != v.end(); ++v_it){
+                res_v[v_it->first] += b*v_it->second;
+            }
+        }
+        //sparse-matrix - vector product
+        /** @brief Computation of residual res = A*v - e
+         * @param A_v_c column major vectorized input sparse matrix
+         * @param v sparse vector, in this case new column of preconditioner matrix 
+         * @param ind index for current column
+         * @param res residual
+         */ 
+        template<typename SparseVectorType, typename ScalarType>
+        void compute_spai_residual(const std::vector<SparseVectorType>& A_v_c, const SparseVectorType& v,
+                                   const unsigned int ind, SparseVectorType& res){
+            for(typename SparseVectorType::const_iterator v_it = v.begin(); v_it != v.end(); ++v_it){
+                add_sparse_vectors(A_v_c[v_it->first], v_it->second, res);
+            }
+            res[ind] -= static_cast<ScalarType>(1);
+        }
+        
+        /** @brief Setting up index set of columns and rows for certain column
+         * @param A_v_c column major vectorized initial sparse matrix  
+         * @param v current column of preconditioner matrix
+         * @param J set of column indices
+         * @param I set of row indices
+         */ 
+        template<typename SparseVectorType>
+        void build_index_set(const std::vector<SparseVectorType>& A_v_c, const SparseVectorType& v, std::vector<unsigned int>& J, 
+                             std::vector<unsigned int>& I){
+            buildColumnIndexSet(v, J);
+            projectRows(A_v_c, J, I);
+        }
+        
+        /************************************************** CPU BLOCK SET UP ***************************************/
+        /** @brief Setting up blocks and QR factorizing them on CPU
+         * @param A initial sparse matrix 
+         * @param A_v_c column major vectorized initial sparse matrix  
+         * @param M_v initialized preconditioner
+         * @param g_I container of row indices
+         * @param g_J container of column indices
+         * @param g_A_I_J container of dense matrices -> R matrices after QR factorization
+         * @param g_b_v container of vectors beta, necessary for Q recovery
+         */ 
+        template<typename SparseMatrixType, typename DenseMatrixType, typename SparseVectorType, typename VectorType>
+        void block_set_up(const SparseMatrixType& A,
+                          const std::vector<SparseVectorType>& A_v_c,
+                          const std::vector<SparseVectorType>& M_v, 
+                          std::vector<std::vector<unsigned int> >& g_I, 
+                          std::vector<std::vector<unsigned int> >& g_J,
+                          std::vector<DenseMatrixType>& g_A_I_J,
+                          std::vector<VectorType>& g_b_v){
+#ifdef _OPENMP
+            #pragma omp parallel for
+#endif            
+            for(std::size_t i = 0; i < M_v.size(); ++i){
+                build_index_set(A_v_c, M_v[i], g_J[i], g_I[i]);
+                initProjectSubMatrix(A, g_J[i], g_I[i], g_A_I_J[i]);
+                //print_matrix(g_A_I_J[i]);
+                single_qr(g_A_I_J[i], g_b_v[i]);
+                //print_matrix(g_A_I_J[i]);
+            }            
+        }
+        
+        /** @brief Setting up index set of columns and rows for all columns
+         * @param A_v_c column major vectorized initial sparse matrix  
+         * @param M_v initialized preconditioner
+         * @param g_J container of column indices
+         * @param g_I container of row indices
+         */ 
+        template<typename SparseVectorType>
+        void index_set_up(const std::vector<SparseVectorType>& A_v_c,
+                          const std::vector<SparseVectorType>& M_v, 
+                          std::vector<std::vector<unsigned int> >& g_J, 
+                          std::vector<std::vector<unsigned int> >& g_I)
+        {
+#ifdef _OPENMP
+            #pragma omp parallel for
+#endif            
+            for(std::size_t i = 0; i < M_v.size(); ++i){
+                build_index_set(A_v_c, M_v[i], g_J[i], g_I[i]);
+            }
+        }
+        
+        /************************************************** GPU BLOCK SET UP ***************************************/
+        /** @brief Setting up blocks and QR factorizing them on GPU
+         * @param A initial sparse matrix 
+         * @param A_v_c column major vectorized initial sparse matrix  
+         * @param M_v initialized preconditioner
+         * @param g_is_update container that indicates which blocks are active
+         * @param g_I container of row indices
+         * @param g_J container of column indices
+         * @param g_A_I_J container of dense matrices -> R matrices after QR factorization
+         * @param g_bv container of vectors beta, necessary for Q recovery
+         * @param cur_iter number of current iteration
+         */ 
+        template<typename ScalarType, unsigned int MAT_ALIGNMENT, typename SparseVectorType>
+        void block_set_up(const viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT>& A,
+                          const std::vector<SparseVectorType>& A_v_c, 
+                          const std::vector<SparseVectorType>& M_v,
+                          std::vector<cl_uint> g_is_update,
+                          std::vector<std::vector<unsigned int> >& g_I, 
+                          std::vector<std::vector<unsigned int> >& g_J, 
+                          block_matrix & g_A_I_J, 
+                          block_vector & g_bv,
+                          const unsigned int cur_iter)
+        {
+            bool is_empty_block;
+            //build index set
+            index_set_up(A_v_c, M_v, g_J, g_I);
+            block_assembly(A, g_J, g_I, g_A_I_J, g_is_update, is_empty_block, cur_iter);
+            block_qr<ScalarType>(g_I, g_J, g_A_I_J, g_bv, g_is_update, cur_iter);
+            
+        }
+        
+        
+        /***************************************************************************************************/
+        /******************************** SOLVING LS PROBLEMS ON GPU ***************************************/
+        /***************************************************************************************************/
+        /** @brief Elicitation of sparse vector m for particular column from m_in - contigious vector for all columns  
+         * @param m_in contigious sparse vector for all columns
+         * @param start_m_ind start index of particular vector   
+         * @param J column index set
+         * @param m sparse vector for particular column
+         */ 
+        template<typename ScalarType, typename SparseVectorType>
+        void custom_fan_out(const std::vector<ScalarType> & m_in,
+                            unsigned int start_m_ind,
+                            const std::vector<unsigned int> & J,
+                            SparseVectorType & m)
+        {
+            unsigned int  cnt = 0;
+            for (std::size_t i = 0; i < J.size(); ++i) {
+                m[J[i]] = m_in[start_m_ind + cnt++];
+            }
+        }
+        
+        
+
+        //GPU based least square problem
+        /** @brief Solution of Least square problem on GPU 
+         * @param A_v_c column-major vectorized initial sparse matrix 
+         * @param M_v column-major vectorized sparse preconditioner matrix
+         * @param g_I container of row set indices
+         * @param g_J container of column set indices
+         * @param g_A_I_J_vcl contigious matrix that consists of blocks A(I_k, J_k)
+         * @param g_bv_vcl contigious vector that consists of betas, necessary for Q recovery
+         * @param g_res container of residuals 
+         * @param g_is_update container with indicators which blocks are active
+         * @param tag spai tag
+         * @param cur_iter current iteration number
+         */ 
+        template<typename SparseVectorType, typename ScalarType>
+        void least_square_solve(std::vector<SparseVectorType> & A_v_c, 
+                                std::vector<SparseVectorType> & M_v,
+                                std::vector<std::vector<unsigned int> >& g_I, 
+                                std::vector<std::vector<unsigned int> > & g_J,
+                                block_matrix & g_A_I_J_vcl,
+                                block_vector & g_bv_vcl,
+                                std::vector<SparseVectorType> & g_res,
+                                std::vector<cl_uint> & g_is_update,
+                                const spai_tag & tag,
+                                const unsigned int cur_iter){
+            unsigned int y_sz, m_sz;
+            std::vector<cl_uint> y_inds(M_v.size() + 1, static_cast<cl_uint>(0));
+            std::vector<cl_uint> m_inds(M_v.size() + 1, static_cast<cl_uint>(0));
+            get_size(g_I, y_sz);
+            init_start_inds(g_I, y_inds);
+            init_start_inds(g_J, m_inds);
+            //create y_v
+            std::vector<ScalarType> y_v(y_sz, static_cast<ScalarType>(0));
+            for(std::size_t i = 0; i < M_v.size(); ++i){
+                for(std::size_t j = 0; j < g_I[i].size(); ++j){
+                    if(g_I[i][j] == i)
+                        y_v[y_inds[i] + j] = static_cast<ScalarType>(1.0);
+                }
+            }
+            //compute m_v
+            get_size(g_J, m_sz);
+            std::vector<ScalarType> m_v(m_sz, static_cast<cl_uint>(0));
+            
+            //acquire kernel
+            /*if(cur_iter == 0){
+                std::string ls_kernel_file_name = "kernels/spai/ls_g.cl";
+                std::string ls_kernel_source;
+                read_kernel_from_file(ls_kernel_file_name, ls_kernel_source);
+                //compilation of a kernel
+                viennacl::ocl::program & ls_prog = viennacl::ocl::current_context().add_program(ls_kernel_source.c_str(), "ls_kernel_source");
+                //least square kernel
+                ls_prog.add_kernel("block_least_squares");
+            }*/
+            block_vector y_v_vcl;
+            block_vector m_v_vcl;
+            //prepearing memory for least square problem on GPU
+            y_v_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                              static_cast<unsigned int>(sizeof(ScalarType)*y_v.size()), 
+                                                                              &(y_v[0]));
+            m_v_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                              static_cast<unsigned int>(sizeof(ScalarType)*m_v.size()),
+                                                                              &(m_v[0]));
+            y_v_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+                                                                               static_cast<unsigned int>(sizeof(cl_uint)*(g_I.size() + 1)), 
+                                                                               &(y_inds[0]));
+            viennacl::ocl::handle<cl_mem> g_is_update_vcl = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+                                                                                    static_cast<unsigned int>(sizeof(cl_uint)*(g_is_update.size())),
+                                                                                        &(g_is_update[0]));
+            viennacl::ocl::kernel& ls_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_least_squares");
+            ls_kernel.local_work_size(0, 1);
+            ls_kernel.global_work_size(0, 256);
+            viennacl::ocl::enqueue(ls_kernel(g_A_I_J_vcl.handle(), g_A_I_J_vcl.handle2(), g_bv_vcl.handle(), g_bv_vcl.handle1(), m_v_vcl.handle(), 
+                                             y_v_vcl.handle(), y_v_vcl.handle1(), 
+                                             g_A_I_J_vcl.handle1(), g_is_update_vcl,
+                                             //viennacl::ocl::local_mem(static_cast<unsigned int>(sizeof(ScalarType)*(local_r_n*local_c_n))),
+                                             static_cast<unsigned int>(M_v.size())));
+            //copy vector m_v back from GPU to CPU
+            cl_int vcl_err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(),
+                                                 m_v_vcl.handle(), CL_TRUE, 0, 
+                                                 sizeof(ScalarType)*(m_v.size()),
+                                                 &(m_v[0]), 0, NULL, NULL);
+            VIENNACL_ERR_CHECK(vcl_err);
+            //fan out vector in parallel
+            //#pragma omp parallel for
+            for(std::size_t i = 0; i < M_v.size(); ++i){
+                if(g_is_update[i]){
+                    //faned out onto sparse vector
+                    custom_fan_out(m_v, m_inds[i], g_J[i], M_v[i]);
+                    g_res[i].clear();
+                    compute_spai_residual<SparseVectorType, ScalarType>(A_v_c,  M_v[i], static_cast<unsigned int>(i), g_res[i]);
+                    ScalarType res_norm = 0;
+                    //compute norm of res - just to make sure that this implementatino works correct
+                    sparse_norm_2(g_res[i], res_norm);
+                    //std::cout<<"Residual norm of column #: "<<i<<std::endl;
+                    //std::cout<<res_norm<<std::endl;
+                    //std::cout<<"************************"<<std::endl;
+                    g_is_update[i] = (res_norm > tag.getResidualNormThreshold())&& (!tag.getIsStatic())?(1):(0);
+                    
+                }
+            }
+        }
+        
+        //CPU based least square problems
+        /** @brief Solution of Least square problem on CPU 
+         * @param A_v_c column-major vectorized initial sparse matrix 
+         * @param g_R blocks for least square solution
+         * @param g_b_v vectors beta, necessary for Q recovery
+         * @param g_I container of row index set for all columns of matrix M
+         * @param g_J container of column index set for all columns of matrix M
+         * @param g_res container of residuals
+         * @param g_is_update container with indicators which blocks are active
+         * @param M_v column-major vectorized sparse matrix, final preconditioner
+         * @param tag spai tag
+         */ 
+        template<typename SparseVectorType, typename DenseMatrixType, typename VectorType>
+        void least_square_solve(const std::vector<SparseVectorType>& A_v_c,
+                                std::vector<DenseMatrixType>& g_R, 
+                                std::vector<VectorType>& g_b_v,
+                                std::vector<std::vector<unsigned int> >& g_I, 
+                                std::vector<std::vector<unsigned int> >& g_J,
+                                std::vector<SparseVectorType>& g_res, 
+                                std::vector<bool>& g_is_update, 
+                                std::vector<SparseVectorType>& M_v,
+                                const spai_tag& tag){
+            typedef typename DenseMatrixType::value_type ScalarType;
+            //VectorType m_new, y;
+#ifdef _OPENMP
+            #pragma omp parallel for
+#endif            
+            for(std::size_t i = 0; i < M_v.size(); ++i){
+                if(g_is_update[i]){
+                    VectorType y = boost::numeric::ublas::zero_vector<ScalarType>(g_I[i].size());
+                    //std::cout<<y<<std::endl;
+                    projectI<VectorType, ScalarType>(g_I[i], y, static_cast<unsigned int>(tag.getBegInd() + i));
+                    apply_q_trans_vec(g_R[i], g_b_v[i], y);
+                    VectorType m_new =  boost::numeric::ublas::zero_vector<ScalarType>(g_R[i].size2());
+                    backwardSolve(g_R[i], y, m_new);
+                    fanOutVector(m_new, g_J[i], M_v[i]);
+                    g_res[i].clear();
+                    compute_spai_residual<SparseVectorType, ScalarType>(A_v_c,  M_v[i], static_cast<unsigned int>(tag.getBegInd() + i), g_res[i]); 
+                    ScalarType res_norm = 0;
+                    sparse_norm_2(g_res[i], res_norm);
+//                    std::cout<<"Residual norm of column #: "<<i<<std::endl;
+//                    std::cout<<res_norm<<std::endl;
+//                    std::cout<<"************************"<<std::endl;
+                    g_is_update[i] = (res_norm > tag.getResidualNormThreshold())&& (!tag.getIsStatic());
+                }
+            }
+        } 
+        
+        //************************************ UPDATE CHECK ***************************************************//
+        template<typename VectorType>
+        bool is_all_update(VectorType& parallel_is_update){
+            
+            for(unsigned int i = 0; i < parallel_is_update.size(); ++i){
+                if(parallel_is_update[i])
+                    return true;
+            }
+            return false;
+        }
+        
+        //********************************** MATRIX VECTORIZATION ***********************************************//
+        //Matrix vectorization, column based approach
+        /** @brief Solution of Least square problem on CPU 
+         * @param M_in input sparse, boost::numeric::ublas::compressed_matrix 
+         * @param M_v array of sparse vectors 
+         */ 
+        template<typename SparseMatrixType, typename SparseVectorType>
+        void vectorize_column_matrix(const SparseMatrixType& M_in, std::vector<SparseVectorType>& M_v){
+            for(typename SparseMatrixType::const_iterator1 row_it = M_in.begin1(); row_it!= M_in.end1(); ++row_it){
+                //
+                for(typename SparseMatrixType::const_iterator2 col_it = row_it.begin(); col_it != row_it.end(); ++col_it){
+                    M_v[static_cast<unsigned int>(col_it.index2())][static_cast<unsigned int>(col_it.index1())] = *col_it; 
+                }
+                //std::cout<<std::endl;
+            }
+        }
+        
+        //Matrix vectorization row based approach
+        template<typename SparseMatrixType, typename SparseVectorType>
+        void vectorize_row_matrix(const SparseMatrixType& M_in, std::vector<SparseVectorType>& M_v){
+            for(typename SparseMatrixType::const_iterator1 row_it = M_in.begin1(); row_it!= M_in.end1(); ++row_it){
+                for(typename SparseMatrixType::const_iterator2 col_it = row_it.begin(); col_it != row_it.end(); ++col_it){
+                    M_v[static_cast<unsigned int>(col_it.index1())][static_cast<unsigned int>(col_it.index2())] = *col_it; 
+                }
+            }
+        }
+        
+        //************************************* BLOCK ASSEMBLY CODE *********************************************//
+        
+        
+        
+        void write_set_to_array(const std::vector<std::vector<unsigned int> >& ind_set, std::vector<cl_uint>& a){
+            unsigned int cnt = 0;
+            //unsigned int tmp;
+            for(size_t i = 0; i < ind_set.size(); ++i){
+                for(size_t j = 0; j < ind_set[i].size(); ++j){
+                    a[cnt++] = static_cast<cl_uint>(ind_set[i][j]); 
+                }
+            }
+        }
+        
+        
+        
+        //assembling blocks on GPU
+        /** @brief Assembly of blocks on GPU by a gived set of row indices: g_I and column indices: g_J 
+         * @param A intial sparse matrix  
+         * @param g_J container of column index set
+         * @param g_I container of row index set
+         * @param g_A_I_J_vcl contigious blocks A(I, J) using GPU memory
+         * @param g_is_update container with indicators which blocks are active
+         * @param is_empty_block parameter that indicates if no block were assembled 
+         * @param cur_iter current iteration number 
+         */ 
+        template<typename ScalarType, unsigned int MAT_ALIGNMENT>
+        void block_assembly(const viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT>& A, const std::vector<std::vector<unsigned int> >& g_J, 
+                            const std::vector<std::vector<unsigned int> >& g_I,
+                            block_matrix& g_A_I_J_vcl, 
+                            std::vector<cl_uint>& g_is_update,
+                            bool& is_empty_block,
+                            const unsigned int cur_iter){
+            //computing start indices for index sets and start indices for block matrices
+            unsigned int sz_I, sz_J, sz_blocks;
+            std::vector<cl_uint> matrix_dims(g_I.size()*2, static_cast<cl_uint>(0));
+            std::vector<cl_uint> i_ind(g_I.size() + 1, static_cast<cl_uint>(0));
+            std::vector<cl_uint> j_ind(g_I.size() + 1, static_cast<cl_uint>(0));
+            std::vector<cl_uint> blocks_ind(g_I.size() + 1, static_cast<cl_uint>(0));
+            // 
+            init_start_inds(g_J, j_ind);
+            init_start_inds(g_I, i_ind);
+            //
+            get_size(g_J, sz_J);
+            get_size(g_I, sz_I);
+            std::vector<cl_uint> I_set(sz_I, static_cast<cl_uint>(0));
+            //
+            std::vector<cl_uint> J_set(sz_J, static_cast<cl_uint>(0));
+            // computing size for blocks
+            // writing set to arrays
+            write_set_to_array(g_I, I_set);
+            write_set_to_array(g_J, J_set);
+            // if block for assembly does exist
+            if(I_set.size() > 0 && J_set.size() > 0){
+                compute_blocks_size(g_I, g_J, sz_blocks, blocks_ind, matrix_dims);
+                std::vector<ScalarType> con_A_I_J(sz_blocks, static_cast<ScalarType>(0));
+                
+                /*if(cur_iter == 0){
+                    std::string block_asm_file_name = "kernels/spai/block_assembly_g.cl";
+                    std::string block_asm_source;
+                    read_kernel_from_file(block_asm_file_name, block_asm_source);
+                    viennacl::ocl::program & block_asm_prog = viennacl::ocl::current_context().add_program(block_asm_source.c_str(), 
+                                                                                                           "block_assembly_kernel_source");
+                    
+                    block_asm_prog.add_kernel("assemble_blocks");
+                }*/
+                block_vector set_I_vcl, set_J_vcl;
+                //init memory on GPU
+                //contigious g_A_I_J
+                g_A_I_J_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                                      static_cast<unsigned int>(sizeof(ScalarType)*(sz_blocks)), 
+                                                                                      &(con_A_I_J[0]));
+                //matrix_dimensions
+                g_A_I_J_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                                   static_cast<unsigned int>(sizeof(cl_uint)*2*static_cast<cl_uint>(g_I.size())), 
+                                                                                   &(matrix_dims[0]));
+                //start_block inds
+                g_A_I_J_vcl.handle2() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                                       static_cast<unsigned int>(sizeof(cl_uint)*(g_I.size() + 1)), 
+                                                                                       &(blocks_ind[0]));
+                //set_I
+                set_I_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                                    static_cast<unsigned int>(sizeof(cl_uint)*sz_I), 
+                                                                                    &(I_set[0]));
+                //set_J
+                set_J_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                                    static_cast<unsigned int>(sizeof(cl_uint)*sz_J), 
+                                                                                    &(J_set[0]));
+                //i_ind
+                set_I_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                                     static_cast<unsigned int>(sizeof(cl_uint)*(g_I.size() + 1)), 
+                                                                                     &(i_ind[0]));
+                //j_ind
+                set_J_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                                     static_cast<unsigned int>(sizeof(cl_uint)*(g_I.size() + 1)), 
+                                                                                     &(j_ind[0]));
+                
+                viennacl::ocl::handle<cl_mem> g_is_update_vcl = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+                                                                                                               static_cast<unsigned int>(sizeof(cl_uint)*g_is_update.size()),
+                                                                                                               &(g_is_update[0]));
+                viennacl::ocl::kernel& assembly_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "assemble_blocks");
+                assembly_kernel.local_work_size(0, 1);
+                assembly_kernel.global_work_size(0, 256);
+                viennacl::ocl::enqueue(assembly_kernel(A.handle1(), A.handle2(), A.handle(), 
+                                                       set_I_vcl.handle(), set_J_vcl.handle(), set_I_vcl.handle1(), 
+                                                       set_J_vcl.handle1(), 
+                                                       g_A_I_J_vcl.handle2(), g_A_I_J_vcl.handle1(), g_A_I_J_vcl.handle(),
+                                                       g_is_update_vcl,
+                                                       static_cast<unsigned int>(g_I.size())));
+                is_empty_block = false;
+            }else{ 
+                is_empty_block = true;
+            }
+        }
+        
+        /************************************************************************************************************************/
+        
+        /** @brief Insertion of vectorized matrix column into original sparse matrix 
+         * @param M_v column-major vectorized matrix 
+         * @param M original sparse matrix
+         * @param is_right indicates if matrix should be transposed in the output
+         */ 
+        template<typename SparseMatrixType, typename SparseVectorType>
+        void insert_sparse_columns(const std::vector<SparseVectorType>& M_v,
+                                   SparseMatrixType& M,
+                                   bool is_right){
+            if (is_right)
+            {
+              for(unsigned int i = 0; i < M_v.size(); ++i){
+                  for(typename SparseVectorType::const_iterator vec_it = M_v[i].begin(); vec_it!=M_v[i].end(); ++vec_it){
+                      M(vec_it->first, i) = vec_it->second;
+                  }
+              }
+            }
+            else  //transposed fill of M
+            {
+              for(unsigned int i = 0; i < M_v.size(); ++i){
+                  for(typename SparseVectorType::const_iterator vec_it = M_v[i].begin(); vec_it!=M_v[i].end(); ++vec_it){
+                      M(i, vec_it->first) = vec_it->second;
+                  }
+              }
+            }
+        }
+        
+        /** @brief Transposition of sparse matrix
+         * @param A_in intial sparse matrix  
+         * @param A output transposed matrix 
+         */ 
+        template<typename MatrixType>
+        void sparse_transpose(const MatrixType& A_in, MatrixType& A){
+            typedef typename MatrixType::value_type ScalarType;
+            std::vector<std::map<size_t, ScalarType> >   temp_A(A_in.size2());
+            A.resize(A_in.size2(), A_in.size1(), false);
+            
+            for (typename MatrixType::const_iterator1 row_it = A_in.begin1();
+                 row_it != A_in.end1();
+                 ++row_it)
+            {
+                for (typename MatrixType::const_iterator2 col_it = row_it.begin();
+                     col_it != row_it.end();
+                     ++col_it)
+                {
+                    temp_A[col_it.index2()][col_it.index1()] = *col_it;
+                }
+            }
+            
+            for (size_t i=0; i<temp_A.size(); ++i)
+            {
+                for (typename std::map<size_t, ScalarType>::const_iterator it = temp_A[i].begin();
+                     it != temp_A[i].end();
+                     ++it)
+                    A(i, it->first) = it->second;
+            }
+        }
+        
+        
+        
+        
+//        template<typename SparseVectorType>
+//        void custom_copy(std::vector<SparseVectorType> & M_v, std::vector<SparseVectorType> & l_M_v, const unsigned int beg_ind){
+//            for(int i = 0; i < l_M_v.size(); ++i){
+//                l_M_v[i] = M_v[i + beg_ind];
+//            }
+//        }
+        
+        //CPU version
+        /** @brief Construction of SPAI preconditioner on CPU 
+         * @param A initial sparse matrix   
+         * @param M output preconditioner
+         * @param tag spai tag
+         */ 
+        template <typename MatrixType>
+        void computeSPAI(const MatrixType & A, MatrixType & M, spai_tag & tag){
+            typedef typename MatrixType::value_type ScalarType;
+            typedef typename boost::numeric::ublas::vector<ScalarType> VectorType;
+            typedef typename viennacl::linalg::detail::spai::sparse_vector<ScalarType> SparseVectorType;
+            typedef typename boost::numeric::ublas::matrix<ScalarType> DenseMatrixType;
+            //sparse matrix transpose...
+            unsigned int cur_iter = 0;
+            tag.setBegInd(0); tag.setEndInd(VIENNACL_SPAI_K_b);
+            bool go_on = true;
+            std::vector<SparseVectorType> A_v_c(M.size2());
+            std::vector<SparseVectorType> M_v(M.size2());
+            vectorize_column_matrix(A, A_v_c);
+            vectorize_column_matrix(M, M_v);
+            
+            
+            while(go_on){
+                go_on = (tag.getEndInd() < static_cast<long>(M.size2()));
+                cur_iter = 0;
+                unsigned int l_sz = tag.getEndInd() - tag.getBegInd();
+                //std::vector<bool> g_is_update(M.size2(), true);
+                std::vector<bool> g_is_update(l_sz, true);
+                //init is update
+                //init_parallel_is_update(g_is_update);
+                //std::vector<SparseVectorType> A_v_c(K);
+                //std::vector<SparseVectorType> M_v(K);
+                //vectorization of marices
+                //print_matrix(M_v);
+                std::vector<SparseVectorType> l_M_v(l_sz);
+                //custom_copy(M_v, l_M_v, beg_ind);
+                std::copy(M_v.begin() + tag.getBegInd(), M_v.begin() + tag.getEndInd(), l_M_v.begin()); 
+                //print_matrix(l_M_v);
+                //std::vector<SparseVectorType> l_A_v_c(K);
+                //custom_copy(A_v_c, l_A_v_c, beg_ind);
+                //std::copy(A_v_c.begin() + beg_ind, A_v_c.begin() + end_ind, l_A_v_c.begin());
+                //print_matrix(l_A_v_c);
+                //vectorize_row_matrix(A, A_v_r);
+                //working blocks
+                //std::vector<DenseMatrixType> g_A_I_J(M.size2())                
+                std::vector<DenseMatrixType> g_A_I_J(l_sz);
+                //std::vector<VectorType> g_b_v(M.size2());
+                std::vector<VectorType> g_b_v(l_sz);
+                //std::vector<SparseVectorType> g_res(M.size2());
+                std::vector<SparseVectorType> g_res(l_sz);
+                //std::vector<std::vector<unsigned int> > g_I(M.size2());
+                std::vector<std::vector<unsigned int> > g_I(l_sz);
+                //std::vector<std::vector<unsigned int> > g_J(M.size2());
+                std::vector<std::vector<unsigned int> > g_J(l_sz);
+                while((cur_iter < tag.getIterationLimit())&&is_all_update(g_is_update)){
+                    // SET UP THE BLOCKS..
+                    // PHASE ONE
+                    if(cur_iter == 0) block_set_up(A, A_v_c, l_M_v,  g_I, g_J, g_A_I_J, g_b_v);
+                    else block_update(A, A_v_c, g_res, g_is_update, g_I, g_J, g_b_v, g_A_I_J, tag);
+                    
+                    //PHASE TWO, LEAST SQUARE SOLUTION
+                    least_square_solve(A_v_c, g_A_I_J, g_b_v, g_I, g_J, g_res, g_is_update, l_M_v, tag);
+                    
+                    if(tag.getIsStatic()) break;
+                    cur_iter++;
+                    
+                    
+                }
+                std::copy(l_M_v.begin(), l_M_v.end(), M_v.begin() + tag.getBegInd());
+                tag.setBegInd(tag.getEndInd());//beg_ind = end_ind;
+                tag.setEndInd(std::min(static_cast<long>(tag.getBegInd() + VIENNACL_SPAI_K_b), static_cast<long>(M.size2())));
+                //std::copy(l_M_v.begin(), l_M_v.end(), M_v.begin() + tag.getBegInd()); 
+                
+            }
+            M.resize(M.size1(), M.size2(), false);
+            insert_sparse_columns(M_v, M, tag.getIsRight());
+        }
+
+        
+        //GPU - based version
+        /** @brief Construction of SPAI preconditioner on GPU
+         * @param A initial sparse matrix   
+         * @param cpu_A copy of initial matrix on CPU
+         * @param cpu_M output preconditioner on CPU
+         * @param M output preconditioner
+         * @param tag SPAI tag class with parameters
+         */ 
+        template <typename ScalarType, unsigned int MAT_ALIGNMENT>
+        void computeSPAI(const viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT>& A, //input
+                         const boost::numeric::ublas::compressed_matrix<ScalarType>& cpu_A,
+                         boost::numeric::ublas::compressed_matrix<ScalarType>& cpu_M, //output
+                         viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT>& M,
+                         const spai_tag& tag){
+            typedef typename boost::numeric::ublas::vector<ScalarType> VectorType;
+            typedef typename viennacl::linalg::detail::spai::sparse_vector<ScalarType> SparseVectorType;
+            typedef typename boost::numeric::ublas::matrix<ScalarType> DenseMatrixType;
+            typedef typename boost::numeric::ublas::compressed_matrix<ScalarType> CPUMatrixType;
+            //typedef typename viennacl::compressed_matrix<ScalarType> GPUSparseMatrixType;
+            //sparse matrix transpose...
+            unsigned int cur_iter = 0;
+            std::vector<cl_uint> g_is_update(cpu_M.size2(), static_cast<cl_uint>(1));
+            //init is update
+            //init_parallel_is_update(g_is_update);
+            std::vector<SparseVectorType> A_v_c(cpu_M.size2());
+            std::vector<SparseVectorType> M_v(cpu_M.size2());
+            vectorize_column_matrix(cpu_A, A_v_c);
+            vectorize_column_matrix(cpu_M, M_v);
+            std::vector<SparseVectorType> g_res(cpu_M.size2());
+            std::vector<std::vector<unsigned int> > g_I(cpu_M.size2());
+            std::vector<std::vector<unsigned int> > g_J(cpu_M.size2());
+            
+            //OpenCL variables
+            block_matrix g_A_I_J_vcl;
+            block_vector g_bv_vcl;
+            while((cur_iter < tag.getIterationLimit())&&is_all_update(g_is_update)){
+                // SET UP THE BLOCKS..
+                // PHASE ONE..
+                //timer.start();
+                //index set up on CPU
+                if(cur_iter == 0) block_set_up(A, A_v_c, M_v, g_is_update, g_I, g_J, g_A_I_J_vcl, g_bv_vcl, cur_iter);
+                else block_update(A, A_v_c, g_is_update, g_res, g_J, g_I, g_A_I_J_vcl, g_bv_vcl, tag, cur_iter);
+                //std::cout<<"Phase 2 timing: "<<timer.get()<<std::endl;
+                //PERFORM LEAST SQUARE problems solution
+                //PHASE TWO
+                //timer.start();
+                least_square_solve<SparseVectorType, ScalarType>(A_v_c, M_v, g_I, g_J, g_A_I_J_vcl, g_bv_vcl, g_res, g_is_update, tag, cur_iter);
+                //std::cout<<"Phase 3 timing: "<<timer.get()<<std::endl;
+                if(tag.getIsStatic()) break;
+                cur_iter++;
+            }
+            cpu_M.resize(cpu_M.size1(), cpu_M.size2(), false);
+            insert_sparse_columns(M_v, cpu_M, tag.getIsRight());
+            //copy back to GPU
+            M.resize(static_cast<unsigned int>(cpu_M.size1()), static_cast<unsigned int>(cpu_M.size2()));
+            viennacl::copy(cpu_M, M);
+        }
+        
+      }        
+    }
+  }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/spai_tag.hpp b/viennacl/linalg/detail/spai/spai_tag.hpp
new file mode 100644
index 0000000..046aaac
--- /dev/null
+++ b/viennacl/linalg/detail/spai/spai_tag.hpp
@@ -0,0 +1,149 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_SPAI_TAG_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_SPAI_TAG_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+/** @file viennacl/linalg/detail/spai/spai_tag.hpp
+    @brief Implementation of the spai tag holding SPAI configuration parameters. Experimental in 1.2.x.
+    
+    SPAI code contributed by Nikolay Lukash
+*/
+
+
+
+//#define __NO_STD_VECTOR
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <cmath>
+#include <sstream>
+#include "viennacl/ocl/backend.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+#include "boost/numeric/ublas/detail/matrix_assign.hpp"
+//#include "boost/thread/thread.hpp"
+#include "viennacl/linalg/detail/spai/block_matrix.hpp"
+#include "viennacl/linalg/detail/spai/block_vector.hpp"
+
+namespace viennacl
+{
+    namespace linalg
+    {
+      namespace detail
+      {
+        namespace spai
+        {
+        
+          /** @brief A tag for SPAI
+          * Contains values for the algorithm.
+          * Must be passed to spai_precond constructor
+          */
+          class spai_tag
+          {
+              /** @brief Constructor
+              * @param residual_norm_threshold Calculate until the norm of the residual falls below this threshold
+              * @param iteration_limit maximum number of iterations
+              * @param residual_threshold determines starting threshold in residual vector for including new indices into set J
+              * @param is_static determines if static version of SPAI should be used
+              * @param is_right determines if left or right preconditioner should be used
+              */
+            public:
+              spai_tag(
+                      double residual_norm_threshold = 1e-3,
+                      unsigned int iteration_limit = 5,
+                      double residual_threshold = 1e-2,
+                      bool is_static = false,
+                      bool is_right = false) :
+              _residual_norm_threshold(residual_norm_threshold),
+              _iteration_limit(iteration_limit),
+              _residual_threshold(residual_threshold),
+              _is_static(is_static),
+              _is_right(is_right) {};
+              
+              double getResidualNormThreshold() const
+              { return _residual_norm_threshold; }
+              
+              double getResidualThreshold() const
+              { return _residual_threshold; }
+              
+              unsigned int getIterationLimit () const
+              { return _iteration_limit; }
+              
+              bool getIsStatic() const
+              { return _is_static; }
+              
+              bool getIsRight() const
+              { return _is_right; }
+              
+              long getBegInd() const
+              { return _beg_ind; }
+              
+              long getEndInd() const 
+              { return _end_ind; }
+              
+              
+              
+              void setResidualNormThreshold(double residual_norm_threshold)
+              {
+                  if(residual_norm_threshold > 0)
+                      _residual_norm_threshold = residual_norm_threshold;
+              }
+              
+              void setResidualThreshold(double residual_threshold)
+              {
+                  if(residual_threshold > 0)
+                      _residual_threshold = residual_threshold;
+              }
+              
+              void setIterationLimit(unsigned int iteration_limit)
+              {
+                  if(iteration_limit > 0)
+                      _iteration_limit = iteration_limit;
+              }
+              
+              void setIsRight(bool is_right) { _is_right = is_right; }
+              
+              void setIsStatic(bool is_static) { _is_static = is_static; }
+              
+              void setBegInd(long beg_ind) { _beg_ind = beg_ind; }
+              
+              void setEndInd(long end_ind){ _end_ind = end_ind; }
+              
+              
+            private:
+              double _residual_norm_threshold;
+              unsigned int _iteration_limit;
+              long _beg_ind, _end_ind;
+              double _residual_threshold;
+              bool _is_static;
+              bool _is_right;
+          };
+        
+        }
+      }
+    }
+}
+#endif
diff --git a/viennacl/linalg/detail/spai/sparse_vector.hpp b/viennacl/linalg/detail/spai/sparse_vector.hpp
new file mode 100644
index 0000000..b422ae6
--- /dev/null
+++ b/viennacl/linalg/detail/spai/sparse_vector.hpp
@@ -0,0 +1,106 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_SPARSE_VECTOR_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_SPARSE_VECTOR_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/detail/spai/sparse_vector.hpp
+    @brief Implementation of a helper sparse vector class for SPAI. Experimental in 1.2.x.
+    
+    SPAI code contributed by Nikolay Lukash
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+//local includes
+//#include <omp.h>
+
+
+namespace viennacl
+{
+  namespace linalg
+  {
+    namespace detail
+    {
+      namespace spai
+      {
+        
+        /**
+         * @brief Represents sparse vector based on std::map<unsigned int, ScalarType>
+         */
+        template <typename ScalarType>
+        class sparse_vector{
+        public:
+            typedef typename std::map<unsigned int, ScalarType>::iterator iterator;
+            typedef typename std::map<unsigned int, ScalarType>::const_iterator const_iterator;
+            sparse_vector(){
+            }
+            
+            /** @brief Set the index of the vector in the original matrix
+             * May only be called once.
+             */
+            //getter
+            ScalarType& operator[] (const unsigned int ind){
+                return _v[ind];
+                
+            }
+            
+            void clear(){
+                _v.clear();
+            }
+            
+            const_iterator find(const unsigned int var) const{
+                return _v.find(var);
+            }
+            
+            iterator find(const unsigned int var){
+                return _v.find(var);
+            }
+            
+            const_iterator begin() const{
+                return _v.begin();
+            }
+            
+            const_iterator end() const{
+                return _v.end();
+            }
+            
+            
+            iterator begin(){
+                return _v.begin();
+            }
+            
+            iterator end(){
+                return _v.end();
+            }
+            
+            
+        private:
+            unsigned int _size;
+            std::map<unsigned int, ScalarType> _v;
+        };
+      }
+    }
+  }
+}
+
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/direct_solve.hpp b/viennacl/linalg/direct_solve.hpp
index c4cb78c..bcbad1c 100644
--- a/viennacl/linalg/direct_solve.hpp
+++ b/viennacl/linalg/direct_solve.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_DIRECT_SOLVE_HPP_
+#define VIENNACL_DIRECT_SOLVE_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_DIRECT_SOLVE_HPP_
-#define _VIENNACL_DIRECT_SOLVE_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file direct_solve.hpp
     @brief Implementations of dense direct solvers are found here.
@@ -55,8 +57,11 @@ namespace viennacl
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
 
       k.global_work_size(0, B.size2() * k.local_work_size());
-      viennacl::ocl::enqueue(k(mat, mat.size1(), mat.size2(), mat.internal_size1(), mat.internal_size2(),
-                                                             B,   B.size1(),   B.size2(),   B.internal_size1(),   B.internal_size2()));        
+      viennacl::ocl::enqueue(k(mat, cl_uint(mat.size1()), cl_uint(mat.size2()),
+                                    cl_uint(mat.internal_size1()), cl_uint(mat.internal_size2()),
+                               B,   cl_uint(B.size1()), cl_uint(B.size2()),
+                                    cl_uint(B.internal_size1()), cl_uint(B.internal_size2()))
+                            );        
     }
     
     /** @brief Direct inplace solver for dense upper triangular systems
@@ -83,8 +88,11 @@ namespace viennacl
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
 
       k.global_work_size(0, B.lhs().size1() * k.local_work_size());
-      viennacl::ocl::enqueue(k(mat, mat.size1(), mat.size2(), mat.internal_size1(), mat.internal_size2(),
-                               B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2()));     
+      viennacl::ocl::enqueue(k(mat, cl_uint(mat.size1()), cl_uint(mat.size2()),
+                                    cl_uint(mat.internal_size1()), cl_uint(mat.internal_size2()),
+                               B.lhs(), cl_uint(B.lhs().size1()), cl_uint(B.lhs().size2()),
+                                        cl_uint(B.lhs().internal_size1()), cl_uint(B.lhs().internal_size2()))
+                            );     
     }
     
     //upper triangular solver for transposed lower triangular matrices
@@ -112,8 +120,11 @@ namespace viennacl
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
 
       k.global_work_size(0, B.size2() * k.local_work_size());
-      viennacl::ocl::enqueue(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(), proxy.lhs().internal_size1(), proxy.lhs().internal_size2(),
-                                         B,   B.size1(),   B.size2(),   B.internal_size1(),   B.internal_size2()));        
+      viennacl::ocl::enqueue(k(proxy.lhs(), cl_uint(proxy.lhs().size1()), cl_uint(proxy.lhs().size2()),
+                                            cl_uint(proxy.lhs().internal_size1()), cl_uint(proxy.lhs().internal_size2()),
+                                         B, cl_uint(B.size1()), cl_uint(B.size2()),
+                                            cl_uint(B.internal_size1()), cl_uint(B.internal_size2()))
+                            );        
     }
 
     /** @brief Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems
@@ -142,8 +153,11 @@ namespace viennacl
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
 
       k.global_work_size(0, B.lhs().size1() * k.local_work_size());
-      viennacl::ocl::enqueue(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(), proxy.lhs().internal_size1(), proxy.lhs().internal_size2(),
-                               B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2()));        
+      viennacl::ocl::enqueue(k(proxy.lhs(), cl_uint(proxy.lhs().size1()), cl_uint(proxy.lhs().size2()),
+                                            cl_uint(proxy.lhs().internal_size1()), cl_uint(proxy.lhs().internal_size2()),
+                               B.lhs(), cl_uint(B.lhs().size1()), cl_uint(B.lhs().size2()),
+                                        cl_uint(B.lhs().internal_size1()), cl_uint(B.lhs().internal_size2()))
+                            );        
     }
 
     template<typename SCALARTYPE, typename F, unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename SOLVERTAG>
@@ -161,7 +175,8 @@ namespace viennacl
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
 
       k.global_work_size(0, k.local_work_size());
-      viennacl::ocl::enqueue(k(mat, mat.size1(), mat.size2(), mat.internal_size1(), mat.internal_size2(), vec));        
+      viennacl::ocl::enqueue(k(mat, cl_uint(mat.size1()), cl_uint(mat.size2()), 
+                                    cl_uint(mat.internal_size1()), cl_uint(mat.internal_size2()), vec));        
     }
 
     /** @brief Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems
@@ -186,8 +201,8 @@ namespace viennacl
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
       
       k.global_work_size(0, k.local_work_size());
-      viennacl::ocl::enqueue(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(),
-                                                           proxy.lhs().internal_size1(), proxy.lhs().internal_size2(), vec));        
+      viennacl::ocl::enqueue(k(proxy.lhs(), cl_uint(proxy.lhs().size1()), cl_uint(proxy.lhs().size2()),
+                                            cl_uint(proxy.lhs().internal_size1()), cl_uint(proxy.lhs().internal_size2()), vec));        
     }
     
     /////////////////// general wrappers for non-inplace solution //////////////////////    
@@ -341,7 +356,8 @@ namespace viennacl
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "lu_factorize");
       
       k.global_work_size(0, k.local_work_size());
-      viennacl::ocl::enqueue(k(mat, mat.size1(), mat.size2(), mat.internal_size1(), mat.internal_size2()));        
+      viennacl::ocl::enqueue(k(mat, cl_uint(mat.size1()), cl_uint(mat.size2()),
+                                    cl_uint(mat.internal_size1()), cl_uint(mat.internal_size2())) );        
     }
 
 
diff --git a/viennacl/linalg/gmres.hpp b/viennacl/linalg/gmres.hpp
index dff8f9a..670d5ae 100644
--- a/viennacl/linalg/gmres.hpp
+++ b/viennacl/linalg/gmres.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_GMRES_HPP_
-#define _VIENNACL_GMRES_HPP_
+#ifndef VIENNACL_GMRES_HPP_
+#define VIENNACL_GMRES_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file gmres.hpp
     @brief Implementations of the generalized minimum residual method are in this file.
@@ -21,11 +23,15 @@
 
 #include <vector>
 #include <cmath>
+#include <limits>
 #include "viennacl/forwards.h"
 #include "viennacl/tools/tools.hpp"
 #include "viennacl/linalg/norm_2.hpp"
 #include "viennacl/linalg/prod.hpp"
 #include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/traits/clear.hpp"
+#include "viennacl/traits/size.hpp"
+#include "viennacl/meta/result_of.hpp"
 
 namespace viennacl
 {
@@ -118,11 +124,11 @@ namespace viennacl
     template <typename MatrixType, typename VectorType, typename PreconditionerType>
     VectorType solve(const MatrixType & matrix, VectorType const & rhs, gmres_tag const & tag, PreconditionerType const & precond)
     {
-      typedef typename viennacl::tools::result_of::value_type<VectorType>::type            ScalarType;
-      typedef typename viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType    CPU_ScalarType;
-      unsigned int problem_size = viennacl::tools::traits::size(rhs);
+      typedef typename viennacl::result_of::value_type<VectorType>::type        ScalarType;
+      typedef typename viennacl::result_of::cpu_value_type<ScalarType>::type    CPU_ScalarType;
+      unsigned int problem_size = viennacl::traits::size(rhs);
       VectorType result(problem_size);
-      viennacl::tools::traits::clear(result);
+      viennacl::traits::clear(result);
       unsigned int krylov_dim = tag.krylov_dim();
       if (problem_size < tag.krylov_dim())
         krylov_dim = problem_size; //A Krylov space larger than the matrix would lead to seg-faults (mathematically, error is certain to be zero already)
@@ -145,22 +151,26 @@ namespace viennacl
       for (k = 0; k < krylov_dim; ++k)
       {
         R[k].resize(tag.krylov_dim()); 
-        viennacl::tools::traits::resize(U[k], problem_size);
+        viennacl::traits::resize(U[k], problem_size);
       }
 
       //std::cout << "Starting GMRES..." << std::endl;
       tag.iters(0);
-
+      
       for (unsigned int it = 0; it <= tag.max_restarts(); ++it)
       {
+        //std::cout << "-- GMRES Start " << it << " -- " << std::endl;
+        
         res = rhs;
         res -= viennacl::linalg::prod(matrix, result);  //initial guess zero
         precond.apply(res);
+        //std::cout << "Residual: " << res << std::endl;
         
         CPU_ScalarType rho_0 = viennacl::linalg::norm_2(res); 
         CPU_ScalarType rho = static_cast<CPU_ScalarType>(1.0);
+        //std::cout << "rho_0: " << rho_0 << std::endl;
 
-        if (rho_0 / norm_rhs < tag.tolerance())
+        if (rho_0 / norm_rhs < tag.tolerance() || (norm_rhs == CPU_ScalarType(0.0)) )
         {
           //std::cout << "Allowed Error reached at begin of loop" << std::endl;
           tag.error(rho_0 / norm_rhs);
@@ -168,12 +178,14 @@ namespace viennacl
         }
 
         res /= rho_0;
+        //std::cout << "Normalized Residual: " << res << std::endl;
+        
         for (k=0; k<krylov_dim; ++k)
         {
-          viennacl::tools::traits::clear(R[k]);
-          viennacl::tools::traits::clear(U[k]);
+          viennacl::traits::clear(R[k]);
+          viennacl::traits::clear(U[k]);
           R[k].resize(krylov_dim); 
-          viennacl::tools::traits::resize(U[k], problem_size);
+          viennacl::traits::resize(U[k], problem_size);
         }
 
         for (k = 0; k < krylov_dim; ++k)
@@ -188,7 +200,7 @@ namespace viennacl
           }
           else
           {
-            viennacl::tools::traits::clear(v_k_tilde);
+            viennacl::traits::clear(v_k_tilde);
             v_k_tilde[k-1] = gpu_scalar_1;
             //Householder rotations part 1
             for (int i = k-1; i > -1; --i)
@@ -202,35 +214,91 @@ namespace viennacl
             for (unsigned int i = 0; i < k; ++i)
               v_k_tilde -= U[i] * (viennacl::linalg::inner_prod(U[i], v_k_tilde) * gpu_scalar_2);
           }
+          
+          //std::cout << "v_k_tilde: " << v_k_tilde << std::endl;
 
-          viennacl::tools::traits::clear(U[k]);
-          viennacl::tools::traits::resize(U[k], problem_size);
+          viennacl::traits::clear(U[k]);
+          viennacl::traits::resize(U[k], problem_size);
           //copy first k entries from v_k_tilde to U[k]:
           gmres_copy_helper(v_k_tilde, U[k], k);
           
           U[k][k] = std::sqrt( viennacl::linalg::inner_prod(v_k_tilde, v_k_tilde) - viennacl::linalg::inner_prod(U[k], U[k]) );
 
+          if (fabs(U[k][k]) < CPU_ScalarType(10 * std::numeric_limits<CPU_ScalarType>::epsilon()))
+            break; //Note: Solution is essentially (up to round-off error) already in Krylov space. No need to proceed.
+          
           //copy first k+1 entries from U[k] to R[k]
           gmres_copy_helper(U[k], R[k], k+1);
           
           U[k] -= v_k_tilde;
+          //std::cout << "U[k] before normalization: " << U[k] << std::endl;
           U[k] *= gpu_scalar_minus_1 / viennacl::linalg::norm_2( U[k] );
-
+          //std::cout << "Householder vector U[k]: " << U[k] << std::endl;
+          
+          //DEBUG: Make sure that P_k v_k_tilde equals (rho_{1,k}, ... , rho_{k,k}, 0, 0 )
+#ifdef VIENNACL_GMRES_DEBUG
+          std::cout << "P_k v_k_tilde: " << (v_k_tilde - 2.0 * U[k] * inner_prod(U[k], v_k_tilde)) << std::endl;
+          std::cout << "R[k]: [" << R[k].size() << "](";
+          for (size_t i=0; i<R[k].size(); ++i)
+            std::cout << R[k][i] << ",";
+          std::cout << ")" << std::endl;
+#endif
+          //std::cout << "P_k res: " << (res - 2.0 * U[k] * inner_prod(U[k], res)) << std::endl;
           res -= U[k] * (viennacl::linalg::inner_prod( U[k], res ) * gpu_scalar_2);
+          //std::cout << "zeta_k: " << viennacl::linalg::inner_prod( U[k], res ) * gpu_scalar_2 << std::endl;
+          //std::cout << "Updated res: " << res << std::endl;
+
+#ifdef VIENNACL_GMRES_DEBUG
+          VectorType v1(U[k].size()); v1.clear(); v1.resize(U[k].size());
+          v1(0) = 1.0;
+          v1 -= U[k] * (viennacl::linalg::inner_prod( U[k], v1 ) * gpu_scalar_2);
+          std::cout << "v1: " << v1 << std::endl;
+          boost::numeric::ublas::matrix<ScalarType> P = -2.0 * outer_prod(U[k], U[k]);
+          P(0,0) += 1.0; P(1,1) += 1.0; P(2,2) += 1.0;
+          std::cout << "P: " << P << std::endl;
+#endif
+          
+          if (res[k] > rho) //machine precision reached
+            res[k] = rho;
 
+          if (res[k] < -1.0 * rho) //machine precision reached
+            res[k] = -1.0 * rho;
+          
           projection_rhs[k] = res[k];
+          
           rho *= std::sin( std::acos(projection_rhs[k] / rho) );
+          
+#ifdef VIENNACL_GMRES_DEBUG
+          std::cout << "k-th component of r: " << res[k] << std::endl;
+          std::cout << "New rho (norm of res): " << rho << std::endl;
+#endif        
 
           if (std::fabs(rho * rho_0 / norm_rhs) < tag.tolerance())
           {
             //std::cout << "Krylov space big enough" << endl;
             tag.error( std::fabs(rho*rho_0 / norm_rhs) );
+            ++k;
             break;
           }
           
+          //std::cout << "Current residual: " << rho * rho_0 << std::endl;
+          //std::cout << " - End of Krylov space setup - " << std::endl;
         } // for k
         
+#ifdef VIENNACL_GMRES_DEBUG
         //inplace solution of the upper triangular matrix:
+        std::cout << "Upper triangular system:" << std::endl;
+        std::cout << "Size of Krylov space: " << k << std::endl;
+        for (size_t i=0; i<k; ++i)
+        {
+          for (size_t j=0; j<k; ++j)
+          {
+            std::cout << R[j][i] << ", ";
+          }
+          std::cout << " | " << projection_rhs[i] << std::endl;
+        }
+#endif        
+        
         for (int i=k-1; i>-1; --i)
         {
           for (unsigned int j=i+1; j<k; ++j)
@@ -240,6 +308,12 @@ namespace viennacl
           projection_rhs[i] /= R[i][i];
         }
         
+#ifdef VIENNACL_GMRES_DEBUG
+        std::cout << "Result of triangular solver: ";
+        for (size_t i=0; i<k; ++i)
+          std::cout << projection_rhs[i] << ", ";
+        std::cout << std::endl;
+#endif        
         res *= projection_rhs[0];
         
         if (k > 0)
@@ -263,8 +337,8 @@ namespace viennacl
           return result;
         }
 
-        res = rhs;
-        res -= viennacl::linalg::prod(matrix, result);
+        //res = rhs;
+        //res -= viennacl::linalg::prod(matrix, result);
         //std::cout << "norm_2(r)=" << norm_2(r) << std::endl;
         //std::cout << "std::abs(rho*rho_0)=" << std::abs(rho*rho_0) << std::endl;
         //std::cout << r << std::endl; 
diff --git a/viennacl/linalg/hankel_matrix_operations.hpp b/viennacl/linalg/hankel_matrix_operations.hpp
new file mode 100644
index 0000000..d0112cd
--- /dev/null
+++ b/viennacl/linalg/hankel_matrix_operations.hpp
@@ -0,0 +1,208 @@
+#ifndef VIENNACL_LINALG_HANKEL_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_LINALG_HANKEL_MATRIX_OPERATIONS_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file hankel_matrix_operations.hpp
+    @brief Implementations of operations using hankel_matrix
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/ocl/device.hpp"
+#include "viennacl/ocl/handle.hpp"
+#include "viennacl/ocl/kernel.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/vector.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/fft.hpp"
+#include "viennacl/linalg/toeplitz_matrix_operations.hpp"
+//#include "viennacl/linalg/kernels/coordinate_matrix_kernels.h"
+
+namespace viennacl
+{
+  namespace linalg
+  {
+    
+    
+    // A * x
+    /** @brief Returns a proxy class that represents matrix-vector multiplication with a compressed_matrix
+    *
+    * This is used for the convenience expression result = prod(mat, vec);
+    *
+    * @param mat    The matrix
+    * @param vec    The vector
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+    vector_expression<const hankel_matrix<SCALARTYPE, ALIGNMENT>,
+                      const vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                      op_prod > prod_impl(const hankel_matrix<SCALARTYPE, ALIGNMENT> & mat, 
+                                     const vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec)
+    {
+      return vector_expression<const hankel_matrix<SCALARTYPE, ALIGNMENT>,
+                               const vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                               op_prod >(mat, vec);
+    }
+    
+    // A * x
+    /** @brief Returns a proxy class that represents matrix-vector multiplication with a hankel_matrix
+    *
+    * This is used for the convenience expression result = prod(mat, vec);
+    *
+    * @param mat    The matrix
+    * @param vec    The vector
+    * @param NUM_THREADS Number of threads per work group. Can be used for fine-tuning.
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+    viennacl::vector_expression<const viennacl::hankel_matrix<SCALARTYPE, ALIGNMENT>,
+                                const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                                viennacl::op_prod > prod_impl(const viennacl::hankel_matrix<SCALARTYPE, ALIGNMENT> & mat, 
+                                                              const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec, 
+                                                              size_t NUM_THREADS)
+    {
+      return viennacl::vector_expression<const viennacl::hankel_matrix<SCALARTYPE, ALIGNMENT>,
+                               const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                               viennacl::op_prod >(mat, vec);
+    }
+    
+    /** @brief Carries out matrix-vector multiplication with a hankel_matrix
+    *
+    * Implementation of the convenience expression result = prod(mat, vec);
+    *
+    * @param mat    The matrix
+    * @param vec    The vector
+    * @param result The result vector
+    */
+      template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+      void prod_impl(const viennacl::hankel_matrix<SCALARTYPE, ALIGNMENT> & mat, 
+                     const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
+                           viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & result)
+      {
+        assert(mat.size1() == result.size());
+        assert(mat.size2() == vec.size());
+        
+        prod_impl(mat.elements(), vec, result);
+        viennacl::detail::fft::reverse(result);
+      }
+
+  } //namespace linalg
+
+
+
+    /** @brief Implementation of the operation v1 = A * v2, where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> & 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=(const viennacl::vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                          const viennacl::vector<SCALARTYPE, ALIGNMENT>,
+                                                                                          viennacl::op_prod> & proxy) 
+    {
+      // check for the special case x = A * x
+      if (proxy.rhs().handle() == this->handle())
+      {
+        viennacl::vector<SCALARTYPE, ALIGNMENT> result(proxy.rhs().size());
+        viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+        *this = result;
+        return *this;
+      }
+      else
+      {
+        viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), *this);
+        return *this;
+      }
+      return *this;
+    }
+
+    //v += A * x
+    /** @brief Implementation of the operation v1 += A * v2, where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> & 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                 const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                 op_prod> & proxy) 
+    {
+      vector<SCALARTYPE, ALIGNMENT> result(proxy.lhs().size1());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      *this += result;
+      return *this;
+    }
+
+    /** @brief Implementation of the operation v1 -= A * v2, where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> & 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                 const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                 op_prod> & proxy) 
+    {
+      vector<SCALARTYPE, ALIGNMENT> result(proxy.get_lhs().size1());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      *this -= result;
+      return *this;
+    }
+    
+    
+    //free functions:
+    /** @brief Implementation of the operation 'result = v1 + A * v2', where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                op_prod> & proxy) 
+    {
+      assert(proxy.get_lhs().size1() == size());
+      vector<SCALARTYPE, ALIGNMENT> result(size());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      result += *this;
+      return result;
+    }
+
+    /** @brief Implementation of the operation 'result = v1 - A * v2', where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                op_prod> & proxy) 
+    {
+      assert(proxy.get_lhs().size1() == size());
+      vector<SCALARTYPE, ALIGNMENT> result(size());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      result = *this - result;
+      return result;
+    }
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/linalg/ilu.hpp b/viennacl/linalg/ilu.hpp
index ba6e0ef..addcc0c 100644
--- a/viennacl/linalg/ilu.hpp
+++ b/viennacl/linalg/ilu.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_LINALG_ILU_HPP_
+#define VIENNACL_LINALG_ILU_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_ILU_HPP_
-#define _VIENNACL_ILU_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file ilu.hpp
     @brief Implementations of incomplete factorization preconditioners
@@ -41,8 +43,8 @@ namespace viennacl
         * @param entries_per_row  Number of nonzero entries per row in L and U. Note that L and U are stored in a single matrix, thus there are 2*entries_per_row in total.
         * @param drop_tolerance   The drop tolerance for ILUT
         */
-        ilut_tag(unsigned int entries_per_row = 10,
-                 double drop_tolerance = 1e-3) : _entries_per_row(entries_per_row), _drop_tolerance(drop_tolerance) {}; 
+        ilut_tag(unsigned int entries_per_row = 20,
+                 double drop_tolerance = 1e-4) : _entries_per_row(entries_per_row), _drop_tolerance(drop_tolerance) {}; 
 
         void set_drop_tolerance(double tol)
         {
diff --git a/viennacl/linalg/inner_prod.hpp b/viennacl/linalg/inner_prod.hpp
index b315a9e..36018c2 100644
--- a/viennacl/linalg/inner_prod.hpp
+++ b/viennacl/linalg/inner_prod.hpp
@@ -1,26 +1,30 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_LINALG_INNER_PROD_HPP_
+#define VIENNACL_LINALG_INNER_PROD_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_INNERPROD_HPP_
-#define _VIENNACL_INNERPROD_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file inner_prod.hpp
     @brief Generic interface for the computation of inner products. See viennacl/linalg/vector_operations.hpp for implementations.
 */
 
 #include "viennacl/forwards.h"
-#include "tag_of.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/enable_if.hpp"
+#include "viennacl/meta/tag_of.hpp"
 
 namespace viennacl
 {
@@ -55,7 +59,7 @@ namespace viennacl
       template< typename VectorT1, typename VectorT2 >
       typename VectorT1::RealScalar
       inner_prod(VectorT1 const& v1, VectorT2 const& v2, 
-          typename viennacl::tools::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< VectorT1 >::type >::value
+          typename viennacl::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< VectorT1 >::type >::value
                                               >::type* dummy = 0)
       {
         //std::cout << "eigen .. " << std::endl;
@@ -79,7 +83,7 @@ namespace viennacl
       template< typename VectorT1, typename VectorT2 >
       typename VectorT1::value_type
       inner_prod(VectorT1 const& v1, VectorT2 const& v2, 
-          typename viennacl::tools::enable_if< viennacl::is_mtl4< typename viennacl::traits::tag_of< VectorT1 >::type >::value
+          typename viennacl::enable_if< viennacl::is_mtl4< typename viennacl::traits::tag_of< VectorT1 >::type >::value
                                               >::type* dummy = 0)
       {
         //std::cout << "mtl4 .. " << std::endl;
@@ -105,7 +109,7 @@ namespace viennacl
       template< typename VectorT1, typename VectorT2 >
       typename VectorT1::value_type
       inner_prod(VectorT1 const& v1, VectorT2 const& v2, 
-          typename viennacl::tools::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT1 >::type >::value
+          typename viennacl::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT1 >::type >::value
                                               >::type* dummy = 0)
       {
         //std::cout << "ublas .. " << std::endl;
@@ -120,8 +124,8 @@ namespace viennacl
     template< typename VectorT1, typename VectorT2 >
     typename VectorT1::value_type
     inner_prod(VectorT1 const& v1, VectorT2 const& v2, 
-         typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT1 >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT1 >::type >::value
+                                     >::type* dummy = 0)
     {
       assert(v1.size() == v2.size());
       //std::cout << "stl .. " << std::endl;
@@ -140,7 +144,7 @@ namespace viennacl
                                  const viennacl::vector<ScalarType, alignment2>,
                                  viennacl::op_inner_prod >
     inner_prod(viennacl::vector<ScalarType, alignment1> const & vector1, viennacl::vector<ScalarType, alignment2> const & vector2, 
-         typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment1> >::type >::value
+         typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment1> >::type >::value
                                             >::type* dummy = 0)
     {
       //std::cout << "viennacl .. " << std::endl;
diff --git a/viennacl/linalg/jacobi_precond.hpp b/viennacl/linalg/jacobi_precond.hpp
index 3a284ac..b50408b 100644
--- a/viennacl/linalg/jacobi_precond.hpp
+++ b/viennacl/linalg/jacobi_precond.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_JACOBI_PRECOND_HPP_
-#define _VIENNACL_JACOBI_PRECOND_HPP_
+#ifndef VIENNACL_JACOBI_PRECOND_HPP_
+#define VIENNACL_JACOBI_PRECOND_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file jacobi_precond.hpp
     @brief Implementation of a simple Jacobi preconditioner
@@ -152,13 +154,16 @@ namespace viennacl
         template <unsigned int ALIGNMENT>
         void apply(viennacl::vector<ScalarType, ALIGNMENT> & vec) const
         {
-          assert(system_matrix.size1() == vec.size());
+          assert(viennacl::traits::size1(system_matrix) == viennacl::traits::size(vec));
           
           //run kernel:
           viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<ScalarType, ALIGNMENT>::program_name(),
                                                                 "diag_precond");
 
-          viennacl::ocl::enqueue( k(diag_A_inv, vec, static_cast<cl_uint>(vec.size())) );        
+          viennacl::ocl::enqueue(
+             k(viennacl::traits::handle(diag_A_inv), cl_uint(viennacl::traits::start(diag_A_inv)), cl_uint(viennacl::traits::size(diag_A_inv)),
+               viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)) )
+                                );        
         }
         
       private:
diff --git a/viennacl/linalg/kernels/compressed_matrix_kernels.h b/viennacl/linalg/kernels/compressed_matrix_kernels.h
deleted file mode 100644
index e644bce..0000000
--- a/viennacl/linalg/kernels/compressed_matrix_kernels.h
+++ /dev/null
@@ -1,283 +0,0 @@
-#ifndef _VIENNACL_COMPRESSED_MATRIX_KERNELS_HPP_
-#define _VIENNACL_COMPRESSED_MATRIX_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/compressed_matrix_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct compressed_matrix;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct compressed_matrix<float, 4>
-   {
-    static std::string program_name()
-    {
-      return "f_compressed_matrix_4";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(compressed_matrix_align4_vec_mul);
-        source.append(compressed_matrix_align1_row_scaling_2);
-        source.append(compressed_matrix_align1_jacobi_precond);
-        source.append(compressed_matrix_align1_row_scaling_1);
-        source.append(compressed_matrix_align1_lu_forward);
-        source.append(compressed_matrix_align1_bicgstab_kernel2);
-        source.append(compressed_matrix_align1_lu_backward);
-        source.append(compressed_matrix_align1_bicgstab_kernel1);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("row_scaling_2");
-        prog_.add_kernel("jacobi_precond");
-        prog_.add_kernel("row_scaling_1");
-        prog_.add_kernel("lu_forward");
-        prog_.add_kernel("bicgstab_kernel2");
-        prog_.add_kernel("lu_backward");
-        prog_.add_kernel("bicgstab_kernel1");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct compressed_matrix<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_compressed_matrix_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(compressed_matrix_align1_vec_mul);
-        source.append(compressed_matrix_align1_row_scaling_2);
-        source.append(compressed_matrix_align1_jacobi_precond);
-        source.append(compressed_matrix_align1_row_scaling_1);
-        source.append(compressed_matrix_align1_lu_forward);
-        source.append(compressed_matrix_align1_bicgstab_kernel2);
-        source.append(compressed_matrix_align1_lu_backward);
-        source.append(compressed_matrix_align1_bicgstab_kernel1);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("row_scaling_2");
-        prog_.add_kernel("jacobi_precond");
-        prog_.add_kernel("row_scaling_1");
-        prog_.add_kernel("lu_forward");
-        prog_.add_kernel("bicgstab_kernel2");
-        prog_.add_kernel("lu_backward");
-        prog_.add_kernel("bicgstab_kernel1");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct compressed_matrix<float, 8>
-   {
-    static std::string program_name()
-    {
-      return "f_compressed_matrix_8";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(compressed_matrix_align8_vec_mul);
-        source.append(compressed_matrix_align1_row_scaling_2);
-        source.append(compressed_matrix_align1_jacobi_precond);
-        source.append(compressed_matrix_align1_row_scaling_1);
-        source.append(compressed_matrix_align1_lu_forward);
-        source.append(compressed_matrix_align1_bicgstab_kernel2);
-        source.append(compressed_matrix_align1_lu_backward);
-        source.append(compressed_matrix_align1_bicgstab_kernel1);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("row_scaling_2");
-        prog_.add_kernel("jacobi_precond");
-        prog_.add_kernel("row_scaling_1");
-        prog_.add_kernel("lu_forward");
-        prog_.add_kernel("bicgstab_kernel2");
-        prog_.add_kernel("lu_backward");
-        prog_.add_kernel("bicgstab_kernel1");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct compressed_matrix<double, 4>
-   {
-    static std::string program_name()
-    {
-      return "d_compressed_matrix_4";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align4_vec_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_row_scaling_2, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_jacobi_precond, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_row_scaling_1, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_lu_forward, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_bicgstab_kernel2, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_lu_backward, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_bicgstab_kernel1, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("row_scaling_2");
-        prog_.add_kernel("jacobi_precond");
-        prog_.add_kernel("row_scaling_1");
-        prog_.add_kernel("lu_forward");
-        prog_.add_kernel("bicgstab_kernel2");
-        prog_.add_kernel("lu_backward");
-        prog_.add_kernel("bicgstab_kernel1");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct compressed_matrix<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_compressed_matrix_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_vec_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_row_scaling_2, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_jacobi_precond, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_row_scaling_1, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_lu_forward, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_bicgstab_kernel2, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_lu_backward, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_bicgstab_kernel1, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("row_scaling_2");
-        prog_.add_kernel("jacobi_precond");
-        prog_.add_kernel("row_scaling_1");
-        prog_.add_kernel("lu_forward");
-        prog_.add_kernel("bicgstab_kernel2");
-        prog_.add_kernel("lu_backward");
-        prog_.add_kernel("bicgstab_kernel1");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct compressed_matrix<double, 8>
-   {
-    static std::string program_name()
-    {
-      return "d_compressed_matrix_8";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align8_vec_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_row_scaling_2, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_jacobi_precond, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_row_scaling_1, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_lu_forward, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_bicgstab_kernel2, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_lu_backward, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_bicgstab_kernel1, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("row_scaling_2");
-        prog_.add_kernel("jacobi_precond");
-        prog_.add_kernel("row_scaling_1");
-        prog_.add_kernel("lu_forward");
-        prog_.add_kernel("bicgstab_kernel2");
-        prog_.add_kernel("lu_backward");
-        prog_.add_kernel("bicgstab_kernel1");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/compressed_matrix_source.h b/viennacl/linalg/kernels/compressed_matrix_source.h
deleted file mode 100644
index 5475a17..0000000
--- a/viennacl/linalg/kernels/compressed_matrix_source.h
+++ /dev/null
@@ -1,504 +0,0 @@
-#ifndef _VIENNACL_COMPRESSED_MATRIX_SOURCE_HPP_
-#define _VIENNACL_COMPRESSED_MATRIX_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const compressed_matrix_align4_vec_mul = 
-"__kernel void vec_mul(\n"
-"          __global const unsigned int * row_indices,\n"
-"          __global const uint4 * column_indices, \n"
-"          __global const float4 * elements,\n"
-"          __global const float * vector,  \n"
-"          __global float * result,\n"
-"          unsigned int size)\n"
-"{ \n"
-"  float dot_prod;\n"
-"  unsigned int start, next_stop;\n"
-"  uint4 col_idx;\n"
-"  float4 tmp_vec;\n"
-"  float4 tmp_entries;\n"
-"  for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"
-"  {\n"
-"    dot_prod = 0.0f;\n"
-"    start = row_indices[row] / 4;\n"
-"    next_stop = row_indices[row+1] / 4;\n"
-"    for (unsigned int i = start; i < next_stop; ++i)\n"
-"    {\n"
-"      col_idx = column_indices[i];\n"
-"      tmp_entries = elements[i];\n"
-"      tmp_vec.x = vector[col_idx.x];\n"
-"      tmp_vec.y = vector[col_idx.y];\n"
-"      tmp_vec.z = vector[col_idx.z];\n"
-"      tmp_vec.w = vector[col_idx.w];\n"
-"      dot_prod += dot(tmp_entries, tmp_vec);\n"
-"    }\n"
-"    result[row] = dot_prod;\n"
-"  }\n"
-"}\n"
-; //compressed_matrix_align4_vec_mul
-
-const char * const compressed_matrix_align1_vec_mul = 
-"__kernel void vec_mul(\n"
-"          __global const unsigned int * row_indices,\n"
-"          __global const unsigned int * column_indices, \n"
-"          __global const float * elements,\n"
-"          __global const float * vector,  \n"
-"          __global float * result,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"
-"  {\n"
-"    float dot_prod = 0.0f;\n"
-"    unsigned int row_end = row_indices[row+1];\n"
-"    for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"
-"      dot_prod += elements[i] * vector[column_indices[i]];\n"
-"    result[row] = dot_prod;\n"
-"  }\n"
-"}\n"
-; //compressed_matrix_align1_vec_mul
-
-const char * const compressed_matrix_align1_row_scaling_2 = 
-"__kernel void row_scaling_2(\n"
-"          __global const unsigned int * row_indices,\n"
-"          __global const unsigned int * column_indices, \n"
-"          __global const float * elements,\n"
-"          __global float * diag_M_inv,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"
-"  {\n"
-"    float dot_prod = 0.0f;\n"
-"    float temp = 0.0f;\n"
-"    unsigned int row_end = row_indices[row+1];\n"
-"    for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"
-"    {\n"
-"      temp = elements[i];\n"
-"      dot_prod += temp * temp;\n"
-"    }\n"
-"    diag_M_inv[row] = 1.0f / sqrt(dot_prod);\n"
-"  }\n"
-"}\n"
-; //compressed_matrix_align1_row_scaling_2
-
-const char * const compressed_matrix_align1_jacobi_precond = 
-"__kernel void jacobi_precond(\n"
-"          __global const unsigned int * row_indices,\n"
-"          __global const unsigned int * column_indices, \n"
-"          __global const float * elements,\n"
-"          __global float * diag_M_inv,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"
-"  {\n"
-"    float diag = 1.0f;\n"
-"    unsigned int row_end = row_indices[row+1];\n"
-"    for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"
-"    {\n"
-"      if (row == column_indices[i])\n"
-"      {\n"
-"        diag = elements[i];\n"
-"        break;\n"
-"      }\n"
-"    }\n"
-"    diag_M_inv[row] = 1.0f / diag;\n"
-"  }\n"
-"}\n"
-; //compressed_matrix_align1_jacobi_precond
-
-const char * const compressed_matrix_align1_row_scaling_1 = 
-"__kernel void row_scaling_1(\n"
-"          __global const unsigned int * row_indices,\n"
-"          __global const unsigned int * column_indices, \n"
-"          __global const float * elements,\n"
-"          __global float * diag_M_inv,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"
-"  {\n"
-"    float dot_prod = 0.0f;\n"
-"    unsigned int row_end = row_indices[row+1];\n"
-"    for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"
-"      dot_prod += fabs(elements[i]);\n"
-"    diag_M_inv[row] = 1.0f / dot_prod;\n"
-"  }\n"
-"}\n"
-; //compressed_matrix_align1_row_scaling_1
-
-const char * const compressed_matrix_align1_lu_forward = 
-" \n"
-"// compute y in Ly = z for incomplete LU factorizations of a sparse matrix in compressed format\n"
-"__kernel void lu_forward(\n"
-"          __global const unsigned int * row_indices,\n"
-"          __global const unsigned int * column_indices, \n"
-"          __global const float * elements,\n"
-"          __local  int * buffer,                              \n"
-"          __local  float * vec_entries,   //a memory block from vector\n"
-"          __global float * vector,\n"
-"          unsigned int size) \n"
-"{\n"
-"  int waiting_for; //block index that must be finished before the current thread can start\n"
-"  unsigned int waiting_for_index;\n"
-"  int block_offset;\n"
-"  unsigned int col;\n"
-"  unsigned int row;\n"
-"  unsigned int row_index_end;\n"
-"  \n"
-"  //backward substitution: one thread per row in blocks of get_global_size(0)\n"
-"  for (unsigned int block_num = 0; block_num <= size / get_global_size(0); ++block_num)\n"
-"  {\n"
-"    block_offset = block_num * get_global_size(0);\n"
-"    row = block_offset + get_global_id(0);\n"
-"    buffer[get_global_id(0)] = 0; //set flag to 'undone'\n"
-"    waiting_for = -1;\n"
-"    if (row < size)\n"
-"    {\n"
-"      vec_entries[get_global_id(0)] = vector[row];\n"
-"      waiting_for_index = row_indices[row];\n"
-"      row_index_end = row_indices[row+1];\n"
-"    }\n"
-"    \n"
-"    if (get_global_id(0) == 0)\n"
-"      buffer[get_global_size(0)] = 1;\n"
-"    //try to eliminate all lines in the block. \n"
-"    //in worst case scenarios, in each step only one line can be substituted, thus loop\n"
-"    for (unsigned int k = 0; k<get_global_size(0); ++k)\n"
-"    {\n"
-"      barrier(CLK_LOCAL_MEM_FENCE);\n"
-"      if (row < size) //valid index?\n"
-"      {\n"
-"        if (waiting_for >= 0)\n"
-"        {\n"
-"          if (buffer[waiting_for] == 1)\n"
-"            waiting_for = -1;\n"
-"        }\n"
-"        \n"
-"        if (waiting_for == -1) //substitution not yet done, check whether possible\n"
-"        {\n"
-"          //check whether reduction is possible:\n"
-"          for (unsigned int j = waiting_for_index; j < row_index_end; ++j)\n"
-"          {\n"
-"            col = column_indices[j];\n"
-"            if (col < block_offset) //index valid, but not from current block\n"
-"              vec_entries[get_global_id(0)] -= elements[j] * vector[col];\n"
-"            else if (col < row)  //index is from current block\n"
-"            {\n"
-"              if (buffer[col - block_offset] == 0) //entry is not yet calculated\n"
-"              {\n"
-"                waiting_for = col - block_offset;\n"
-"                waiting_for_index = j;\n"
-"                break;\n"
-"              }\n"
-"              else  //updated entry is available in shared memory:\n"
-"                vec_entries[get_global_id(0)] -= elements[j] * vec_entries[col - block_offset];\n"
-"            }\n"
-"          }\n"
-"          \n"
-"          if (waiting_for == -1)  //this row is done\n"
-"          {\n"
-"            buffer[get_global_id(0)] = 1;\n"
-"            waiting_for = -2; //magic number: thread is finished\n"
-"          }\n"
-"        } \n"
-"      } //row < size\n"
-"      else\n"
-"        buffer[get_global_id(0)] = 1; //work done (because there is no work to be done at all...)\n"
-"      ///////// check whether all threads are done. If yes, exit loop /////////////\n"
-"      \n"
-"      if (buffer[get_global_id(0)] == 0)\n"
-"        buffer[get_global_size(0)] = 0;\n"
-"      barrier(CLK_LOCAL_MEM_FENCE);\n"
-"      \n"
-"      if (buffer[get_global_size(0)] > 0)  //all threads break this loop simultaneously\n"
-"        break;\n"
-"      if (get_global_id(0) == 0)\n"
-"        buffer[get_global_size(0)] = 1;\n"
-"    } //for k\n"
-"    \n"
-"    //write to vector:\n"
-"    if (row < size)\n"
-"      vector[row] = vec_entries[get_global_id(0)];\n"
-"    \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"  } //for block_num\n"
-"}\n"
-; //compressed_matrix_align1_lu_forward
-
-const char * const compressed_matrix_align1_bicgstab_kernel2 = 
-"void helper_bicgstab_kernel2_parallel_reduction( __local float * tmp_buffer )\n"
-"{\n"
-"  for (unsigned int stride = get_local_size(0)/2; stride > 0; stride /= 2)\n"
-"  {\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    if (get_local_id(0) < stride)\n"
-"      tmp_buffer[get_local_id(0)] += tmp_buffer[get_local_id(0)+stride];\n"
-"  }\n"
-"}\n"
-"//////// inner products:\n"
-"float bicgstab_kernel2_inner_prod(\n"
-"          __global const float * vec1,\n"
-"          __global const float * vec2,\n"
-"          unsigned int size,\n"
-"          __local float * tmp_buffer)\n"
-"{\n"
-"  float tmp = 0;\n"
-"  unsigned int i_end = ((size - 1) / get_local_size(0) + 1) * get_local_size(0);\n"
-"  for (unsigned int i = get_local_id(0); i < i_end; i += get_local_size(0))\n"
-"  {\n"
-"    if (i < size)\n"
-"      tmp += vec1[i] * vec2[i];\n"
-"  }\n"
-"  tmp_buffer[get_local_id(0)] = tmp;\n"
-"  \n"
-"  helper_bicgstab_kernel2_parallel_reduction(tmp_buffer);\n"
-"  barrier(CLK_LOCAL_MEM_FENCE);\n"
-"  return tmp_buffer[0];\n"
-"}\n"
-"__kernel void bicgstab_kernel2(\n"
-"          __global const float * tmp0,\n"
-"          __global const float * tmp1,\n"
-"          __global const float * r0star, \n"
-"          __global const float * s, \n"
-"          __global float * p, \n"
-"          __global float * result,\n"
-"          __global float * residual,\n"
-"          __global const float * alpha,\n"
-"          __global float * ip_rr0star,\n"
-"          __global float * error_estimate,\n"
-"          __local float * tmp_buffer,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  float omega_local = bicgstab_kernel2_inner_prod(tmp1, s, size, tmp_buffer) / bicgstab_kernel2_inner_prod(tmp1, tmp1, size, tmp_buffer);\n"
-"  float alpha_local = alpha[0];\n"
-"  \n"
-"  //result += alpha * p + omega * s;\n"
-"  for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"
-"    result[i] += alpha_local * p[i] + omega_local * s[i];\n"
-"  //residual = s - omega * tmp1;\n"
-"  for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"
-"    residual[i] = s[i] - omega_local * tmp1[i];\n"
-"  //new_ip_rr0star = viennacl::linalg::inner_prod(residual, r0star);\n"
-"  float new_ip_rr0star = bicgstab_kernel2_inner_prod(residual, r0star, size, tmp_buffer);\n"
-"  float beta = (new_ip_rr0star / ip_rr0star[0]) * (alpha_local / omega_local);\n"
-"  \n"
-"  //p = residual + beta * (p - omega*tmp0);\n"
-"  for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"
-"    p[i] = residual[i] + beta * (p[i] - omega_local * tmp0[i]);\n"
-"  //compute norm of residual:\n"
-"  float new_error_estimate = bicgstab_kernel2_inner_prod(residual, residual, size, tmp_buffer);\n"
-"  barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"  //update values:\n"
-"  if (get_global_id(0) == 0)\n"
-"  {\n"
-"    error_estimate[0] = new_error_estimate;\n"
-"    ip_rr0star[0] = new_ip_rr0star;\n"
-"  }\n"
-"}\n"
-; //compressed_matrix_align1_bicgstab_kernel2
-
-const char * const compressed_matrix_align1_lu_backward = 
-"// compute x in Ux = y for incomplete LU factorizations of a sparse matrix in compressed format\n"
-"__kernel void lu_backward(\n"
-"          __global const unsigned int * row_indices,\n"
-"          __global const unsigned int * column_indices, \n"
-"          __global const float * elements,\n"
-"          __local  int * buffer,                              \n"
-"          __local  float * vec_entries,   //a memory block from vector\n"
-"          __global float * vector,\n"
-"          unsigned int size) \n"
-"{\n"
-"  int waiting_for; //block index that must be finished before the current thread can start\n"
-"  unsigned int waiting_for_index;\n"
-"  unsigned int block_offset;\n"
-"  unsigned int col;\n"
-"  unsigned int row;\n"
-"  unsigned int row_index_end;\n"
-"  float diagonal_entry = 42;\n"
-"  \n"
-"  //forward substitution: one thread per row in blocks of get_global_size(0)\n"
-"  for (int block_num = size / get_global_size(0); block_num > -1; --block_num)\n"
-"  {\n"
-"    block_offset = block_num * get_global_size(0);\n"
-"    row = block_offset + get_global_id(0);\n"
-"    buffer[get_global_id(0)] = 0; //set flag to 'undone'\n"
-"    waiting_for = -1;\n"
-"    \n"
-"    if (row < size)\n"
-"    {\n"
-"      vec_entries[get_global_id(0)] = vector[row];\n"
-"      waiting_for_index = row_indices[row];\n"
-"      row_index_end = row_indices[row+1];\n"
-"      diagonal_entry = column_indices[waiting_for_index];\n"
-"    }\n"
-"    \n"
-"    if (get_global_id(0) == 0)\n"
-"       buffer[get_global_size(0)] = 1;\n"
-"    //try to eliminate all lines in the block. \n"
-"    //in worst case scenarios, in each step only one line can be substituted, thus loop\n"
-"    for (unsigned int k = 0; k<get_global_size(0); ++k)\n"
-"    {\n"
-"      barrier(CLK_LOCAL_MEM_FENCE);\n"
-"      if (row < size) //valid index?\n"
-"      {\n"
-"        if (waiting_for >= 0)\n"
-"        {\n"
-"          if (buffer[waiting_for] == 1)\n"
-"            waiting_for = -1;\n"
-"        }\n"
-"        \n"
-"        if (waiting_for == -1) //substitution not yet done, check whether possible\n"
-"        {\n"
-"          //check whether reduction is possible:\n"
-"          for (unsigned int j = waiting_for_index; j < row_index_end; ++j)\n"
-"          {\n"
-"            col = column_indices[j];\n"
-"            barrier(CLK_LOCAL_MEM_FENCE);\n"
-"            if (col >= block_offset + get_global_size(0))  //index valid, but not from current block\n"
-"              vec_entries[get_global_id(0)] -= elements[j] * vector[col];\n"
-"            else if (col > row)  //index is from current block\n"
-"            {\n"
-"              if (buffer[col - block_offset] == 0) //entry is not yet calculated\n"
-"              {\n"
-"                waiting_for = col - block_offset;\n"
-"                waiting_for_index = j;\n"
-"                break;\n"
-"              }\n"
-"              else  //updated entry is available in shared memory:\n"
-"                vec_entries[get_global_id(0)] -= elements[j] * vec_entries[col - block_offset];\n"
-"            }\n"
-"            else if (col == row)\n"
-"              diagonal_entry = elements[j];\n"
-"          }\n"
-"          \n"
-"          if (waiting_for == -1)  //this row is done\n"
-"          {\n"
-"            if (row == 0)\n"
-"              vec_entries[get_global_id(0)] /= elements[0];\n"
-"            else\n"
-"              vec_entries[get_global_id(0)] /= diagonal_entry;\n"
-"            buffer[get_global_id(0)] = 1;\n"
-"            waiting_for = -2; //magic number: thread is finished\n"
-"          }\n"
-"        } \n"
-"      } //row < size\n"
-"      else\n"
-"        buffer[get_global_id(0)] = 1; //work done (because there is no work to be done at all...)\n"
-"      \n"
-"      ///////// check whether all threads are done. If yes, exit loop /////////////\n"
-"      if (buffer[get_global_id(0)] == 0)\n"
-"        buffer[get_global_size(0)] = 0;\n"
-"      barrier(CLK_LOCAL_MEM_FENCE);\n"
-"      \n"
-"      if (buffer[get_global_size(0)] > 0)  //all threads break the loop simultaneously\n"
-"        break;\n"
-"      if (get_global_id(0) == 0)\n"
-"        buffer[get_global_size(0)] = 1;\n"
-"    } //for k\n"
-"    if (row < size)\n"
-"      vector[row] = vec_entries[get_global_id(0)];\n"
-"      //vector[row] = diagonal_entry;\n"
-"    \n"
-"    //if (row == 0)\n"
-"      //vector[0] = diagonal_entry;\n"
-"      //vector[0] = elements[0];\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"  } //for block_num\n"
-"}\n"
-; //compressed_matrix_align1_lu_backward
-
-const char * const compressed_matrix_align1_bicgstab_kernel1 = 
-"void helper_bicgstab_kernel1_parallel_reduction( __local float * tmp_buffer )\n"
-"{\n"
-"  for (unsigned int stride = get_local_size(0)/2; stride > 0; stride /= 2)\n"
-"  {\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    if (get_local_id(0) < stride)\n"
-"      tmp_buffer[get_local_id(0)] += tmp_buffer[get_local_id(0)+stride];\n"
-"  }\n"
-"}\n"
-"//////// inner products:\n"
-"float bicgstab_kernel1_inner_prod(\n"
-"          __global const float * vec1,\n"
-"          __global const float * vec2,\n"
-"          unsigned int size,\n"
-"          __local float * tmp_buffer)\n"
-"{\n"
-"  float tmp = 0;\n"
-"  unsigned int i_end = ((size - 1) / get_local_size(0) + 1) * get_local_size(0);\n"
-"  for (unsigned int i = get_local_id(0); i < i_end; i += get_local_size(0))\n"
-"  {\n"
-"    if (i < size)\n"
-"      tmp += vec1[i] * vec2[i];\n"
-"  }\n"
-"  tmp_buffer[get_local_id(0)] = tmp;\n"
-"  \n"
-"  helper_bicgstab_kernel1_parallel_reduction(tmp_buffer);\n"
-"  barrier(CLK_LOCAL_MEM_FENCE);\n"
-"  return tmp_buffer[0];\n"
-"}\n"
-"__kernel void bicgstab_kernel1(\n"
-"          __global const float * tmp0,\n"
-"          __global const float * r0star, \n"
-"          __global const float * residual,\n"
-"          __global float * s,\n"
-"          __global float * alpha,\n"
-"          __global const float * ip_rr0star,\n"
-"          __local float * tmp_buffer,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  float alpha_local = ip_rr0star[0] / bicgstab_kernel1_inner_prod(tmp0, r0star, size, tmp_buffer);\n"
-"  \n"
-"  for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"
-"    s[i] = residual[i] - alpha_local * tmp0[i];\n"
-"  \n"
-"  if (get_global_id(0) == 0)\n"
-"    alpha[0] = alpha_local;\n"
-"}\n"
-; //compressed_matrix_align1_bicgstab_kernel1
-
-const char * const compressed_matrix_align8_vec_mul = 
-"__kernel void vec_mul(\n"
-"          __global const unsigned int * row_indices,\n"
-"          __global const uint8 * column_indices, \n"
-"          __global const float8 * elements,\n"
-"          __global const float * vector,  \n"
-"          __global float * result,\n"
-"          unsigned int size)\n"
-"{ \n"
-"  float dot_prod;\n"
-"  unsigned int start, next_stop;\n"
-"  uint8 col_idx;\n"
-"  float8 tmp_vec;\n"
-"  float8 tmp_entries;\n"
-"  for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"
-"  {\n"
-"    dot_prod = 0.0f;\n"
-"    start = row_indices[row] / 8;\n"
-"    next_stop = row_indices[row+1] / 8;\n"
-"    for (unsigned int i = start; i < next_stop; ++i)\n"
-"    {\n"
-"      col_idx = column_indices[i];\n"
-"      tmp_entries = elements[i];\n"
-"      tmp_vec.s0 = vector[col_idx.s0];\n"
-"      tmp_vec.s1 = vector[col_idx.s1];\n"
-"      tmp_vec.s2 = vector[col_idx.s2];\n"
-"      tmp_vec.s3 = vector[col_idx.s3];\n"
-"      tmp_vec.s4 = vector[col_idx.s4];\n"
-"      tmp_vec.s5 = vector[col_idx.s5];\n"
-"      tmp_vec.s6 = vector[col_idx.s6];\n"
-"      tmp_vec.s7 = vector[col_idx.s7];\n"
-"      dot_prod += dot(tmp_entries.lo, tmp_vec.lo);\n"
-"      dot_prod += dot(tmp_entries.hi, tmp_vec.hi);\n"
-"    }\n"
-"    result[row] = dot_prod;\n"
-"  }\n"
-"}\n"
-; //compressed_matrix_align8_vec_mul
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/coordinate_matrix_kernels.h b/viennacl/linalg/kernels/coordinate_matrix_kernels.h
deleted file mode 100644
index 7a149df..0000000
--- a/viennacl/linalg/kernels/coordinate_matrix_kernels.h
+++ /dev/null
@@ -1,142 +0,0 @@
-#ifndef _VIENNACL_COORDINATE_MATRIX_KERNELS_HPP_
-#define _VIENNACL_COORDINATE_MATRIX_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/coordinate_matrix_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct coordinate_matrix;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct coordinate_matrix<float, 128>
-   {
-    static std::string program_name()
-    {
-      return "f_coordinate_matrix_128";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(coordinate_matrix_align1_vec_mul);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("vec_mul");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct coordinate_matrix<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_coordinate_matrix_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(coordinate_matrix_align1_vec_mul);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("vec_mul");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct coordinate_matrix<double, 128>
-   {
-    static std::string program_name()
-    {
-      return "d_coordinate_matrix_128";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(coordinate_matrix_align1_vec_mul, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("vec_mul");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct coordinate_matrix<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_coordinate_matrix_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(coordinate_matrix_align1_vec_mul, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("vec_mul");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/coordinate_matrix_source.h b/viennacl/linalg/kernels/coordinate_matrix_source.h
deleted file mode 100644
index 6f05006..0000000
--- a/viennacl/linalg/kernels/coordinate_matrix_source.h
+++ /dev/null
@@ -1,123 +0,0 @@
-#ifndef _VIENNACL_COORDINATE_MATRIX_SOURCE_HPP_
-#define _VIENNACL_COORDINATE_MATRIX_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const coordinate_matrix_align1_vec_mul = 
-"//segmented parallel reduction. At present restricted to up to 256 threads\n"
-"void segmented_parallel_reduction(unsigned int row, \n"
-"                                  float val, \n"
-"                                  __local unsigned int * shared_rows, \n"
-"                                  __local float * inter_results) \n"
-"{ \n"
-"  //barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  shared_rows[get_local_id(0)] = row; \n"
-"  inter_results[get_local_id(0)] = val; \n"
-"  float left = 0;\n"
-" \n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  if( get_local_id(0) >=  1 && row == shared_rows[get_local_id(0) -  1] ) { left = inter_results[get_local_id(0) -  1]; }  \n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  inter_results[get_local_id(0)] += left; left = 0;\n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  if( get_local_id(0) >=  2 && row == shared_rows[get_local_id(0) -  2] ) { left = inter_results[get_local_id(0) -  2]; } \n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  inter_results[get_local_id(0)] += left; left = 0;\n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  if( get_local_id(0) >=  4 && row == shared_rows[get_local_id(0) -  4] ) { left = inter_results[get_local_id(0) -  4]; } \n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  inter_results[get_local_id(0)] += left; left = 0;\n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  if( get_local_id(0) >=  8 && row == shared_rows[get_local_id(0) -  8] ) { left = inter_results[get_local_id(0) -  8]; } \n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  inter_results[get_local_id(0)] += left; left = 0;\n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  if( get_local_id(0) >= 16 && row == shared_rows[get_local_id(0) - 16] ) { left = inter_results[get_local_id(0) - 16]; } \n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  inter_results[get_local_id(0)] += left; left = 0;\n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  if( get_local_id(0) >= 32 && row == shared_rows[get_local_id(0) - 32] ) { left = inter_results[get_local_id(0) - 32]; } \n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  inter_results[get_local_id(0)] += left; left = 0;\n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  if( get_local_id(0) >= 64 && row == shared_rows[get_local_id(0) - 64] ) { left = inter_results[get_local_id(0) - 64]; } \n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  inter_results[get_local_id(0)] += left; left = 0;\n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  if( get_local_id(0) >= 128 && row == shared_rows[get_local_id(0) - 128] ) { left = inter_results[get_local_id(0) - 128]; } \n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  inter_results[get_local_id(0)] += left; left = 0;\n"
-"  barrier(CLK_LOCAL_MEM_FENCE); \n"
-"  //if( get_local_id(0) >= 256 && row == shared_rows[get_local_id(0) - 256] ) { left = inter_results[get_local_id(0) - 256]; } \n"
-"  //barrier(CLK_LOCAL_MEM_FENCE);  \n"
-"  //inter_results[get_local_id(0)] += left; left = 0;\n"
-"  //barrier(CLK_LOCAL_MEM_FENCE); \n"
-"}\n"
-"__kernel void vec_mul( \n"
-"          __global const uint2 * coords, //(row_index, column_index) \n"
-"          __global const float * elements, \n"
-"          __global const uint  * group_boundaries,\n"
-"          __global const float * vector,  \n"
-"          __global float * result, \n"
-"          __local unsigned int * shared_rows, \n"
-"          __local float * inter_results) \n"
-"{ \n"
-"  uint2 tmp; \n"
-"  float val;\n"
-"  uint last_index = get_local_size(0) - 1;\n"
-"  uint group_start = group_boundaries[get_group_id(0)];\n"
-"  uint group_end = group_boundaries[get_group_id(0) + 1];\n"
-"  uint k_end = 1 + (group_end - group_start - 1) / get_local_size(0);   // -1 in order to have correct behavior if group_end - group_start == j * get_local_size(0)\n"
-"  uint local_index = 0;\n"
-"  for (uint k = 0; k < k_end; ++k)\n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"
-"    \n"
-"    local_index = group_start + k * get_local_size(0) + get_local_id(0); \n"
-"  \n"
-"    if (local_index < group_end)\n"
-"    {\n"
-"      tmp = coords[local_index]; \n"
-"      val = elements[local_index] * vector[tmp.y]; \n"
-"    }\n"
-"    else\n"
-"    {\n"
-"      tmp.x = 0;\n"
-"      tmp.y = 0;\n"
-"      val = 0;\n"
-"    }\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"
-"    //check for carry from previous loop run: \n"
-"    if (get_local_id(0) == 0 && k > 0)\n"
-"    { \n"
-"      if (tmp.x == shared_rows[last_index]) \n"
-"        val += inter_results[last_index]; \n"
-"      else \n"
-"        result[shared_rows[last_index]] += inter_results[last_index]; \n"
-"    } \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"
-"    segmented_parallel_reduction(tmp.x, val, shared_rows, inter_results); //all threads have to enter this function\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"
-"    if (get_local_id(0) != last_index &&\n"
-"        shared_rows[get_local_id(0)] != shared_rows[get_local_id(0) + 1] &&\n"
-"        inter_results[get_local_id(0)] != 0) \n"
-"    { \n"
-"      result[tmp.x] += inter_results[get_local_id(0)]; \n"
-"    }\n"
-"   \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"
-"  } //for k\n"
-"   \n"
-"  if (get_local_id(0) == last_index && inter_results[last_index] != 0) \n"
-"    result[tmp.x] += inter_results[last_index]; \n"
-"}\n"
-; //coordinate_matrix_align1_vec_mul
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_col_kernels.h b/viennacl/linalg/kernels/matrix_col_kernels.h
deleted file mode 100644
index 4e308f4..0000000
--- a/viennacl/linalg/kernels/matrix_col_kernels.h
+++ /dev/null
@@ -1,302 +0,0 @@
-#ifndef _VIENNACL_MATRIX_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_col;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_col<float, 16>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_col_16";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_col_align1_unit_lower_triangular_substitute_inplace);
-        source.append(matrix_col_align1_inplace_sub);
-        source.append(matrix_col_align1_lower_triangular_substitute_inplace);
-        source.append(matrix_col_align1_trans_vec_mul);
-        source.append(matrix_col_align1_rank1_update);
-        source.append(matrix_col_align1_sub);
-        source.append(matrix_col_align1_trans_unit_upper_triangular_substitute_inplace);
-        source.append(matrix_col_align1_lu_factorize);
-        source.append(matrix_col_align1_add);
-        source.append(matrix_col_align1_vec_mul);
-        source.append(matrix_col_align1_trans_lower_triangular_substitute_inplace);
-        source.append(matrix_col_align1_inplace_divide);
-        source.append(matrix_col_align1_trans_upper_triangular_substitute_inplace);
-        source.append(matrix_col_align1_unit_upper_triangular_substitute_inplace);
-        source.append(matrix_col_align1_inplace_add);
-        source.append(matrix_col_align1_trans_unit_lower_triangular_substitute_inplace);
-        source.append(matrix_col_align1_scaled_rank1_update);
-        source.append(matrix_col_align1_clear);
-        source.append(matrix_col_align1_cpu_inplace_mult);
-        source.append(matrix_col_align1_inplace_mult);
-        source.append(matrix_col_align1_upper_triangular_substitute_inplace);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("lower_triangular_substitute_inplace");
-        prog_.add_kernel("trans_vec_mul");
-        prog_.add_kernel("rank1_update");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("lu_factorize");
-        prog_.add_kernel("add");
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("trans_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("trans_upper_triangular_substitute_inplace");
-        prog_.add_kernel("unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("scaled_rank1_update");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("upper_triangular_substitute_inplace");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct matrix_col<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_col_align1_unit_lower_triangular_substitute_inplace);
-        source.append(matrix_col_align1_inplace_sub);
-        source.append(matrix_col_align1_lower_triangular_substitute_inplace);
-        source.append(matrix_col_align1_trans_vec_mul);
-        source.append(matrix_col_align1_rank1_update);
-        source.append(matrix_col_align1_sub);
-        source.append(matrix_col_align1_trans_unit_upper_triangular_substitute_inplace);
-        source.append(matrix_col_align1_lu_factorize);
-        source.append(matrix_col_align1_add);
-        source.append(matrix_col_align1_vec_mul);
-        source.append(matrix_col_align1_trans_lower_triangular_substitute_inplace);
-        source.append(matrix_col_align1_inplace_divide);
-        source.append(matrix_col_align1_trans_upper_triangular_substitute_inplace);
-        source.append(matrix_col_align1_unit_upper_triangular_substitute_inplace);
-        source.append(matrix_col_align1_inplace_add);
-        source.append(matrix_col_align1_trans_unit_lower_triangular_substitute_inplace);
-        source.append(matrix_col_align1_scaled_rank1_update);
-        source.append(matrix_col_align1_clear);
-        source.append(matrix_col_align1_cpu_inplace_mult);
-        source.append(matrix_col_align1_inplace_mult);
-        source.append(matrix_col_align1_upper_triangular_substitute_inplace);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("lower_triangular_substitute_inplace");
-        prog_.add_kernel("trans_vec_mul");
-        prog_.add_kernel("rank1_update");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("lu_factorize");
-        prog_.add_kernel("add");
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("trans_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("trans_upper_triangular_substitute_inplace");
-        prog_.add_kernel("unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("scaled_rank1_update");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("upper_triangular_substitute_inplace");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_col<double, 16>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_col_16";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_unit_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_vec_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_rank1_update, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_unit_upper_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_lu_factorize, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_vec_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_divide, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_upper_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_unit_upper_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_unit_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_scaled_rank1_update, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_clear, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_cpu_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_upper_triangular_substitute_inplace, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("lower_triangular_substitute_inplace");
-        prog_.add_kernel("trans_vec_mul");
-        prog_.add_kernel("rank1_update");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("lu_factorize");
-        prog_.add_kernel("add");
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("trans_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("trans_upper_triangular_substitute_inplace");
-        prog_.add_kernel("unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("scaled_rank1_update");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("upper_triangular_substitute_inplace");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct matrix_col<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_unit_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_vec_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_rank1_update, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_unit_upper_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_lu_factorize, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_vec_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_divide, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_upper_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_unit_upper_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_unit_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_scaled_rank1_update, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_clear, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_cpu_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_col_align1_upper_triangular_substitute_inplace, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("lower_triangular_substitute_inplace");
-        prog_.add_kernel("trans_vec_mul");
-        prog_.add_kernel("rank1_update");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("lu_factorize");
-        prog_.add_kernel("add");
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("trans_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("trans_upper_triangular_substitute_inplace");
-        prog_.add_kernel("unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("scaled_rank1_update");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("upper_triangular_substitute_inplace");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_col_source.h b/viennacl/linalg/kernels/matrix_col_source.h
deleted file mode 100644
index 17fd4e8..0000000
--- a/viennacl/linalg/kernels/matrix_col_source.h
+++ /dev/null
@@ -1,404 +0,0 @@
-#ifndef _VIENNACL_MATRIX_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_col_align1_unit_lower_triangular_substitute_inplace = 
-"__kernel void unit_lower_triangular_substitute_inplace(\n"
-"          __global const float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector)\n"
-"{\n"
-"  float temp;\n"
-"  for (int row = 0; row < matrix_rows; ++row)\n"
-"  {\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"    temp = vector[row];\n"
-"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-"      vector[elim] -= temp * matrix[row * matrix_internal_rows + elim];\n"
-"  }\n"
-"}\n"
-; //matrix_col_align1_unit_lower_triangular_substitute_inplace
-
-const char * const matrix_col_align1_inplace_sub = 
-"__kernel void inplace_sub(\n"
-"          __global float * vec1,\n"
-"          __global const float * vec2,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec1[i] -= vec2[i];\n"
-"}\n"
-; //matrix_col_align1_inplace_sub
-
-const char * const matrix_col_align1_lower_triangular_substitute_inplace = 
-"__kernel void lower_triangular_substitute_inplace(\n"
-"          __global const float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector)\n"
-"{\n"
-"  float temp;\n"
-"  for (int row = 0; row < matrix_rows; ++row)\n"
-"  {\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"    if (get_global_id(0) == 0)\n"
-"      vector[row] /= matrix[row+row*matrix_internal_rows];\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"    temp = vector[row];\n"
-"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-"      vector[elim] -= temp * matrix[row * matrix_internal_rows + elim];\n"
-"  }\n"
-"}\n"
-; //matrix_col_align1_lower_triangular_substitute_inplace
-
-const char * const matrix_col_align1_trans_vec_mul = 
-"__kernel void trans_vec_mul(\n"
-"          __global const float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global const float * vector,  \n"
-"          __global float * result) \n"
-"{ \n"
-"  //row and col indicate indices within transposed matrix\n"
-"  for (unsigned int row = get_global_id(0); row < matrix_cols; row += get_global_size(0))\n"
-"  {\n"
-"    float dot_prod2 = 0.0f;\n"
-"    for (unsigned int col = 0; col < matrix_rows; ++col)\n"
-"      dot_prod2 += matrix[row * matrix_internal_rows + col] * vector[col];\n"
-"    result[row] = dot_prod2;\n"
-"  }\n"
-"}\n"
-; //matrix_col_align1_trans_vec_mul
-
-const char * const matrix_col_align1_rank1_update = 
-"//perform a rank-1 update of the matrix, i.e. A += x * x^T\n"
-"__kernel void rank1_update(\n"
-"          __global float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global const float * vector1,  \n"
-"          __global const float * vector2) \n"
-"{ \n"
-"  float tmp;\n"
-"  for (unsigned int row= get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"
-"  {\n"
-"    tmp = vector1[row];\n"
-"    for (unsigned int col = 0; col < matrix_cols; ++col)\n"
-"      matrix[row + col * matrix_internal_rows] += tmp * vector2[col];\n"
-"  }\n"
-"}\n"
-; //matrix_col_align1_rank1_update
-
-const char * const matrix_col_align1_sub = 
-"__kernel void sub(\n"
-"          __global const float * vec1,\n"
-"          __global const float * vec2, \n"
-"          __global float * result,\n"
-"          unsigned int size)\n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    result[i] = vec1[i] - vec2[i];\n"
-"}\n"
-; //matrix_col_align1_sub
-
-const char * const matrix_col_align1_trans_unit_upper_triangular_substitute_inplace = 
-"//transposed lower triangular matrix\n"
-"__kernel void trans_unit_upper_triangular_substitute_inplace(\n"
-"          __global const float * matrix, \n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector) \n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = matrix_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    \n"
-"    temp = vector[row]; \n"
-"    //eliminate column with index 'row' in parallel: \n"
-"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-"      vector[elim] -= temp * matrix[row + elim  * matrix_internal_rows]; \n"
-"  } \n"
-"   \n"
-"}\n"
-; //matrix_col_align1_trans_unit_upper_triangular_substitute_inplace
-
-const char * const matrix_col_align1_lu_factorize = 
-"__kernel void lu_factorize(\n"
-"          __global float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols) \n"
-"{ \n"
-"  float temp;\n"
-"  for (unsigned int i=1; i<matrix_rows; ++i)\n"
-"  {\n"
-"    for (unsigned int k=0; k<i; ++k)\n"
-"    {\n"
-"      if (get_global_id(0) == 0)\n"
-"        matrix[i + k*matrix_internal_rows] /= matrix[k + k*matrix_internal_rows];\n"
-"      barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"      temp = matrix[i + k*matrix_internal_rows];\n"
-"      \n"
-"      //parallel subtraction:\n"
-"      for (unsigned int j=k+1 + get_global_id(0); j<matrix_cols; j += get_global_size(0))\n"
-"        matrix[i + j*matrix_internal_rows] -= temp * matrix[k + j*matrix_internal_rows];\n"
-"    }\n"
-"  }\n"
-"} \n"
-; //matrix_col_align1_lu_factorize
-
-const char * const matrix_col_align1_add = 
-"__kernel void add(\n"
-"          __global const float * vec1,\n"
-"          __global const float * vec2, \n"
-"          __global float * result,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    result[i] = vec1[i] + vec2[i];\n"
-"}\n"
-; //matrix_col_align1_add
-
-const char * const matrix_col_align1_vec_mul = 
-"__kernel void vec_mul(\n"
-"          __global const float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global const float * vector,  \n"
-"          __global float * result) \n"
-"{ \n"
-"  for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"
-"  {\n"
-"    float dot_prod = 0.0f;\n"
-"    for (unsigned int col = 0; col < matrix_cols; ++col)\n"
-"      dot_prod += matrix[row + col*matrix_internal_rows] * vector[col];\n"
-"    result[row] = dot_prod;\n"
-"  }\n"
-"}\n"
-; //matrix_col_align1_vec_mul
-
-const char * const matrix_col_align1_trans_lower_triangular_substitute_inplace = 
-"__kernel void trans_lower_triangular_substitute_inplace(\n"
-"          __global const float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector)\n"
-"{\n"
-"  float temp;\n"
-"  for (int row = 0; row < matrix_rows; ++row)\n"
-"  {\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"    if (get_global_id(0) == 0)\n"
-"      vector[row] /= matrix[row+row*matrix_internal_rows];\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"    temp = vector[row];\n"
-"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-"      vector[elim] -= temp * matrix[elim * matrix_internal_rows + row];\n"
-"  }\n"
-"}\n"
-; //matrix_col_align1_trans_lower_triangular_substitute_inplace
-
-const char * const matrix_col_align1_inplace_divide = 
-"__kernel void inplace_divide(\n"
-"          __global float * vec,\n"
-"          __global const float * fac,  //note: CPU variant is mapped to prod_scalar\n"
-"          unsigned int size) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec[i] /= factor;\n"
-"}\n"
-; //matrix_col_align1_inplace_divide
-
-const char * const matrix_col_align1_trans_upper_triangular_substitute_inplace = 
-"//transposed lower triangular matrix\n"
-"__kernel void trans_upper_triangular_substitute_inplace(\n"
-"          __global const float * matrix, \n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector) \n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = matrix_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_global_id(0) == 0) \n"
-"      vector[row] /= matrix[row + row*matrix_internal_rows]; \n"
-" \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    temp = vector[row]; \n"
-"    //eliminate column with index 'row' in parallel: \n"
-"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-"      vector[elim] -= temp * matrix[row + elim * matrix_internal_rows]; \n"
-"  } \n"
-"   \n"
-"}\n"
-; //matrix_col_align1_trans_upper_triangular_substitute_inplace
-
-const char * const matrix_col_align1_unit_upper_triangular_substitute_inplace = 
-"__kernel void unit_upper_triangular_substitute_inplace( \n"
-"          __global const float * matrix, \n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector) \n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = matrix_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    \n"
-"    temp = vector[row]; \n"
-"    //eliminate column with index 'row' in parallel: \n"
-"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-"      vector[elim] -= temp * matrix[elim + row  * matrix_internal_rows]; \n"
-"  } \n"
-"   \n"
-"}\n"
-; //matrix_col_align1_unit_upper_triangular_substitute_inplace
-
-const char * const matrix_col_align1_inplace_add = 
-"__kernel void inplace_add(\n"
-"          __global float * vec1,\n"
-"          __global const float * vec2,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec1[i] += vec2[i];\n"
-"}\n"
-; //matrix_col_align1_inplace_add
-
-const char * const matrix_col_align1_trans_unit_lower_triangular_substitute_inplace = 
-"\n"
-"__kernel void trans_unit_lower_triangular_substitute_inplace(\n"
-"          __global const float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector)\n"
-"{\n"
-"  float temp;\n"
-"  for (int row = 0; row < matrix_rows; ++row)\n"
-"  {\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"\n"
-"    temp = vector[row];\n"
-"\n"
-"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-"      vector[elim] -= temp * matrix[elim * matrix_internal_rows + row];\n"
-"  }\n"
-"}\n"
-"\n"
-"\n"
-; //matrix_col_align1_trans_unit_lower_triangular_substitute_inplace
-
-const char * const matrix_col_align1_scaled_rank1_update = 
-"__kernel void scaled_rank1_update(\n"
-"          __global float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          float val,\n"
-"          __global const float * vector1,  \n"
-"          __global const float * vector2) \n"
-"{ \n"
-"  float tmp;\n"
-"  for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"
-"  {\n"
-"    tmp = val * vector1[row];\n"
-"    for (unsigned int col = 0; col < matrix_cols; ++col)\n"
-"      matrix[row + col*matrix_internal_rows] += tmp * vector2[col];\n"
-"  }\n"
-"}\n"
-; //matrix_col_align1_scaled_rank1_update
-
-const char * const matrix_col_align1_clear = 
-"__kernel void clear(\n"
-"          __global float * vec,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec[i] = 0;\n"
-"}\n"
-; //matrix_col_align1_clear
-
-const char * const matrix_col_align1_cpu_inplace_mult = 
-"__kernel void cpu_inplace_mult(\n"
-"          __global float * vec,\n"
-"          float factor, \n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec[i] *= factor;\n"
-"}\n"
-; //matrix_col_align1_cpu_inplace_mult
-
-const char * const matrix_col_align1_inplace_mult = 
-"__kernel void inplace_mult(\n"
-"          __global float * vec,\n"
-"          __global const float * fac, \n"
-"          unsigned int size) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec[i] *= factor;\n"
-"}\n"
-; //matrix_col_align1_inplace_mult
-
-const char * const matrix_col_align1_upper_triangular_substitute_inplace = 
-"__kernel void upper_triangular_substitute_inplace( \n"
-"          __global const float * matrix, \n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector) \n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = matrix_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_global_id(0) == 0) \n"
-"      vector[row] /= matrix[row + row*matrix_internal_rows]; \n"
-" \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    temp = vector[row]; \n"
-"    //eliminate column with index 'row' in parallel: \n"
-"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-"      vector[elim] -= temp * matrix[elim + row  * matrix_internal_rows]; \n"
-"  } \n"
-"   \n"
-"}\n"
-; //matrix_col_align1_upper_triangular_substitute_inplace
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h b/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h
deleted file mode 100644
index 7a9ec40..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_COL_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_COL_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_col_col_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_prod_col_col_col;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_prod_col_col_col<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_prod_col_col_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_prod_col_col_col_align1_prod_TT);
-        source.append(matrix_prod_col_col_col_align1_prod_TA);
-        source.append(matrix_prod_col_col_col_align1_prod_AA);
-        source.append(matrix_prod_col_col_col_align1_prod_AT);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_prod_col_col_col<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_prod_col_col_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_col_align1_prod_TT, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_col_align1_prod_TA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_col_align1_prod_AA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_col_align1_prod_AT, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h b/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h
deleted file mode 100644
index fd6ece1..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_COL_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_COL_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_prod_col_col_col_align1_prod_TT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...col_major, A...col_major, B...col_major\n"
-"__kernel void prod_TT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_rows;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_rows;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_col_align1_prod_TT
-
-const char * const matrix_prod_col_col_col_align1_prod_TA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...col_major, A...col_major, B...col_major\n"
-"__kernel void prod_TA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_rows;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size * B_internal_rows;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_col_align1_prod_TA
-
-const char * const matrix_prod_col_col_col_align1_prod_AA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...col_major, A...col_major, B...col_major\n"
-"__kernel void prod_AA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_rows;\n"
-"  int bBegin = col_block_id * block_size * B_internal_rows;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_col_align1_prod_AA
-
-const char * const matrix_prod_col_col_col_align1_prod_AT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...col_major, A...col_major, B...col_major\n"
-"__kernel void prod_AT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_rows;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_rows;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_col_align1_prod_AT
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h b/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h
deleted file mode 100644
index 42d912e..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_COL_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_COL_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_col_col_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_prod_col_col_row;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_prod_col_col_row<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_prod_col_col_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_prod_col_col_row_align1_prod_TT);
-        source.append(matrix_prod_col_col_row_align1_prod_TA);
-        source.append(matrix_prod_col_col_row_align1_prod_AA);
-        source.append(matrix_prod_col_col_row_align1_prod_AT);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_prod_col_col_row<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_prod_col_col_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_row_align1_prod_TT, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_row_align1_prod_TA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_row_align1_prod_AA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_row_align1_prod_AT, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h b/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h
deleted file mode 100644
index a59293d..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_COL_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_COL_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_prod_col_col_row_align1_prod_TT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...row_major, A...col_major, B...col_major\n"
-"__kernel void prod_TT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_rows;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_rows;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_row_align1_prod_TT
-
-const char * const matrix_prod_col_col_row_align1_prod_TA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...row_major, A...col_major, B...col_major\n"
-"__kernel void prod_TA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_rows;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size * B_internal_rows;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_row_align1_prod_TA
-
-const char * const matrix_prod_col_col_row_align1_prod_AA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...row_major, A...col_major, B...col_major\n"
-"__kernel void prod_AA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_rows;\n"
-"  int bBegin = col_block_id * block_size * B_internal_rows;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_row_align1_prod_AA
-
-const char * const matrix_prod_col_col_row_align1_prod_AT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...row_major, A...col_major, B...col_major\n"
-"__kernel void prod_AT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_rows;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_rows;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_row_align1_prod_AT
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h b/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h
deleted file mode 100644
index 6804a44..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_ROW_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_col_row_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_prod_col_row_col;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_prod_col_row_col<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_prod_col_row_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_prod_col_row_col_align1_prod_TT);
-        source.append(matrix_prod_col_row_col_align1_prod_TA);
-        source.append(matrix_prod_col_row_col_align1_prod_AA);
-        source.append(matrix_prod_col_row_col_align1_prod_AT);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_prod_col_row_col<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_prod_col_row_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_col_align1_prod_TT, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_col_align1_prod_TA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_col_align1_prod_AA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_col_align1_prod_AT, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h b/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h
deleted file mode 100644
index 4df8697..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_ROW_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_prod_col_row_col_align1_prod_TT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...col_major, A...col_major, B...row_major\n"
-"__kernel void prod_TT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_rows;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size * B_internal_cols;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_col_align1_prod_TT
-
-const char * const matrix_prod_col_row_col_align1_prod_TA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...col_major, A...col_major, B...row_major\n"
-"__kernel void prod_TA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_rows;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_cols;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_col_align1_prod_TA
-
-const char * const matrix_prod_col_row_col_align1_prod_AA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...col_major, A...col_major, B...row_major\n"
-"__kernel void prod_AA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_rows;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_cols;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_col_align1_prod_AA
-
-const char * const matrix_prod_col_row_col_align1_prod_AT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...col_major, A...col_major, B...row_major\n"
-"__kernel void prod_AT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_rows;\n"
-"  int bBegin = col_block_id * block_size * B_internal_cols;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_col_align1_prod_AT
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h b/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h
deleted file mode 100644
index 7553a7b..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_ROW_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_col_row_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_prod_col_row_row;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_prod_col_row_row<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_prod_col_row_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_prod_col_row_row_align1_prod_TT);
-        source.append(matrix_prod_col_row_row_align1_prod_TA);
-        source.append(matrix_prod_col_row_row_align1_prod_AA);
-        source.append(matrix_prod_col_row_row_align1_prod_AT);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_prod_col_row_row<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_prod_col_row_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_row_align1_prod_TT, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_row_align1_prod_TA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_row_align1_prod_AA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_row_align1_prod_AT, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h b/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h
deleted file mode 100644
index a9829b3..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_ROW_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_prod_col_row_row_align1_prod_TT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...row_major, A...col_major, B...row_major\n"
-"__kernel void prod_TT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_rows;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size * B_internal_cols;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_row_align1_prod_TT
-
-const char * const matrix_prod_col_row_row_align1_prod_TA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...row_major, A...col_major, B...row_major\n"
-"__kernel void prod_TA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_rows;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_cols;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_row_align1_prod_TA
-
-const char * const matrix_prod_col_row_row_align1_prod_AA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...row_major, A...col_major, B...row_major\n"
-"__kernel void prod_AA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_rows;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_cols;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_row_align1_prod_AA
-
-const char * const matrix_prod_col_row_row_align1_prod_AT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...row_major, A...col_major, B...row_major\n"
-"__kernel void prod_AT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_rows;\n"
-"  int bBegin = col_block_id * block_size * B_internal_cols;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_row_align1_prod_AT
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h b/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h
deleted file mode 100644
index 4156a2f..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_COL_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_row_col_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_prod_row_col_col;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_prod_row_col_col<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_prod_row_col_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_prod_row_col_col_align1_prod_TT);
-        source.append(matrix_prod_row_col_col_align1_prod_TA);
-        source.append(matrix_prod_row_col_col_align1_prod_AA);
-        source.append(matrix_prod_row_col_col_align1_prod_AT);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_prod_row_col_col<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_prod_row_col_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_col_align1_prod_TT, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_col_align1_prod_TA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_col_align1_prod_AA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_col_align1_prod_AT, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h b/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h
deleted file mode 100644
index ac303b2..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_COL_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_prod_row_col_col_align1_prod_TT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...col_major, A...row_major, B...col_major\n"
-"__kernel void prod_TT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_cols;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_rows;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_col_align1_prod_TT
-
-const char * const matrix_prod_row_col_col_align1_prod_TA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...col_major, A...row_major, B...col_major\n"
-"__kernel void prod_TA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_cols;\n"
-"  int bBegin = col_block_id * block_size * B_internal_rows;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_col_align1_prod_TA
-
-const char * const matrix_prod_row_col_col_align1_prod_AA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...col_major, A...row_major, B...col_major\n"
-"__kernel void prod_AA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_cols;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size * B_internal_rows;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_col_align1_prod_AA
-
-const char * const matrix_prod_row_col_col_align1_prod_AT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...col_major, A...row_major, B...col_major\n"
-"__kernel void prod_AT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_cols;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_rows;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_col_align1_prod_AT
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h b/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h
deleted file mode 100644
index 1c30743..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_COL_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_row_col_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_prod_row_col_row;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_prod_row_col_row<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_prod_row_col_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_prod_row_col_row_align1_prod_TT);
-        source.append(matrix_prod_row_col_row_align1_prod_TA);
-        source.append(matrix_prod_row_col_row_align1_prod_AA);
-        source.append(matrix_prod_row_col_row_align1_prod_AT);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_prod_row_col_row<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_prod_row_col_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_row_align1_prod_TT, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_row_align1_prod_TA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_row_align1_prod_AA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_row_align1_prod_AT, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h b/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h
deleted file mode 100644
index 736dd43..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_COL_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_prod_row_col_row_align1_prod_TT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...row_major, A...row_major, B...col_major\n"
-"__kernel void prod_TT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_cols;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_rows;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_row_align1_prod_TT
-
-const char * const matrix_prod_row_col_row_align1_prod_TA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...row_major, A...row_major, B...col_major\n"
-"__kernel void prod_TA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_cols;\n"
-"  int bBegin = col_block_id * block_size * B_internal_rows;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_row_align1_prod_TA
-
-const char * const matrix_prod_row_col_row_align1_prod_AA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...row_major, A...row_major, B...col_major\n"
-"__kernel void prod_AA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_cols;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size * B_internal_rows;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_row_align1_prod_AA
-
-const char * const matrix_prod_row_col_row_align1_prod_AT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...row_major, A...row_major, B...col_major\n"
-"__kernel void prod_AT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_cols;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_rows;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-"  int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_row_align1_prod_AT
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h b/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h
deleted file mode 100644
index 8c9a094..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_ROW_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_row_row_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_prod_row_row_col;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_prod_row_row_col<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_prod_row_row_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_prod_row_row_col_align1_prod_TT);
-        source.append(matrix_prod_row_row_col_align1_prod_TA);
-        source.append(matrix_prod_row_row_col_align1_prod_AA);
-        source.append(matrix_prod_row_row_col_align1_prod_AT);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_prod_row_row_col<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_prod_row_row_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_col_align1_prod_TT, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_col_align1_prod_TA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_col_align1_prod_AA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_col_align1_prod_AT, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h b/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h
deleted file mode 100644
index a012c0d..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_ROW_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_prod_row_row_col_align1_prod_TT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...col_major, A...row_major, B...row_major\n"
-"__kernel void prod_TT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_cols;\n"
-"  int bBegin = col_block_id * block_size * B_internal_cols;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_col_align1_prod_TT
-
-const char * const matrix_prod_row_row_col_align1_prod_TA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...col_major, A...row_major, B...row_major\n"
-"__kernel void prod_TA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_cols;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_cols;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_col_align1_prod_TA
-
-const char * const matrix_prod_row_row_col_align1_prod_AA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...col_major, A...row_major, B...row_major\n"
-"__kernel void prod_AA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_cols;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_cols;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_col_align1_prod_AA
-
-const char * const matrix_prod_row_row_col_align1_prod_AT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...col_major, A...row_major, B...row_major\n"
-"__kernel void prod_AT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_cols;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size * B_internal_cols;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_col_align1_prod_AT
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h b/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h
deleted file mode 100644
index 5d43aae..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_row_row_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_prod_row_row_row;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_prod_row_row_row<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_prod_row_row_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_prod_row_row_row_align1_prod_TT);
-        source.append(matrix_prod_row_row_row_align1_prod_TA);
-        source.append(matrix_prod_row_row_row_align1_prod_AA);
-        source.append(matrix_prod_row_row_row_align1_prod_AT);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_prod_row_row_row<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_prod_row_row_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_row_align1_prod_TT, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_row_align1_prod_TA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_row_align1_prod_AA, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_row_align1_prod_AT, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("prod_TT");
-        prog_.add_kernel("prod_TA");
-        prog_.add_kernel("prod_AA");
-        prog_.add_kernel("prod_AT");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h b/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h
deleted file mode 100644
index 1cb1f90..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_prod_row_row_row_align1_prod_TT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...row_major, A...row_major, B...row_major\n"
-"__kernel void prod_TT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_cols;\n"
-"  int bBegin = col_block_id * block_size * B_internal_cols;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_row_align1_prod_TT
-
-const char * const matrix_prod_row_row_row_align1_prod_TA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...row_major, A...row_major, B...row_major\n"
-"__kernel void prod_TA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size;\n"
-"  int aStep = block_size * A_internal_cols;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_cols;\n"
-"  int block_num = A_rows / block_size;\n"
-"  if (block_num * block_size != A_rows)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_row_align1_prod_TA
-
-const char * const matrix_prod_row_row_row_align1_prod_AA = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...row_major, A...row_major, B...row_major\n"
-"__kernel void prod_AA(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_cols;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size;\n"
-"  int bStep = block_size * B_internal_cols;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-"  int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_row_align1_prod_AA
-
-const char * const matrix_prod_row_row_row_align1_prod_AT = 
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...row_major, A...row_major, B...row_major\n"
-"__kernel void prod_AT(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global const float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols,\n"
-"          __global float * C,\n"
-"          unsigned int C_rows,\n"
-"          unsigned int C_cols,\n"
-"          unsigned int C_internal_rows,\n"
-"          unsigned int C_internal_cols,\n"
-"          __local float * bufA,\n"
-"          __local float * bufB) \n"
-"{ \n"
-"  int block_size = get_local_size(0);\n"
-"  int row_block_id = get_group_id(0);\n"
-"  int col_block_id = get_group_id(1);\n"
-"  int row_thread_id = get_local_id(0);\n"
-"  int col_thread_id = get_local_id(1);\n"
-"  int aBegin = row_block_id * block_size * A_internal_cols;\n"
-"  int aStep = block_size;\n"
-"  int bBegin = col_block_id * block_size * B_internal_cols;\n"
-"  int bStep = block_size;\n"
-"  int block_num = A_cols / block_size;\n"
-"  if (block_num * block_size != A_cols)\n"
-"    ++block_num;\n"
-"  float Csub = 0;\n"
-"  int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-"  int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-"  for (int block = 0;\n"
-"           block < block_num;\n"
-"           ++block)\n"
-"  {\n"
-"    if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-"    else\n"
-"      bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-"    else\n"
-"      bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    for (int k = 0; k < block_size; ++k)\n"
-"      Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    aBegin += aStep;\n"
-"    bBegin += bStep;\n"
-"  }\n"
-"  if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-"    C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_row_align1_prod_AT
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_row_kernels.h b/viennacl/linalg/kernels/matrix_row_kernels.h
deleted file mode 100644
index 4ef8ba7..0000000
--- a/viennacl/linalg/kernels/matrix_row_kernels.h
+++ /dev/null
@@ -1,302 +0,0 @@
-#ifndef _VIENNACL_MATRIX_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_row;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_row<float, 16>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_row_16";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_row_align1_unit_lower_triangular_substitute_inplace);
-        source.append(matrix_row_align1_inplace_sub);
-        source.append(matrix_row_align1_lower_triangular_substitute_inplace);
-        source.append(matrix_row_align1_trans_vec_mul);
-        source.append(matrix_row_align1_rank1_update);
-        source.append(matrix_row_align1_sub);
-        source.append(matrix_row_align1_trans_unit_upper_triangular_substitute_inplace);
-        source.append(matrix_row_align1_lu_factorize);
-        source.append(matrix_row_align1_add);
-        source.append(matrix_row_align1_vec_mul);
-        source.append(matrix_row_align1_trans_lower_triangular_substitute_inplace);
-        source.append(matrix_row_align1_inplace_divide);
-        source.append(matrix_row_align1_trans_upper_triangular_substitute_inplace);
-        source.append(matrix_row_align1_unit_upper_triangular_substitute_inplace);
-        source.append(matrix_row_align1_inplace_add);
-        source.append(matrix_row_align1_trans_unit_lower_triangular_substitute_inplace);
-        source.append(matrix_row_align1_scaled_rank1_update);
-        source.append(matrix_row_align1_clear);
-        source.append(matrix_row_align1_cpu_inplace_mult);
-        source.append(matrix_row_align1_inplace_mult);
-        source.append(matrix_row_align1_upper_triangular_substitute_inplace);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("lower_triangular_substitute_inplace");
-        prog_.add_kernel("trans_vec_mul");
-        prog_.add_kernel("rank1_update");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("lu_factorize");
-        prog_.add_kernel("add");
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("trans_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("trans_upper_triangular_substitute_inplace");
-        prog_.add_kernel("unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("scaled_rank1_update");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("upper_triangular_substitute_inplace");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct matrix_row<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_row_align1_unit_lower_triangular_substitute_inplace);
-        source.append(matrix_row_align1_inplace_sub);
-        source.append(matrix_row_align1_lower_triangular_substitute_inplace);
-        source.append(matrix_row_align1_trans_vec_mul);
-        source.append(matrix_row_align1_rank1_update);
-        source.append(matrix_row_align1_sub);
-        source.append(matrix_row_align1_trans_unit_upper_triangular_substitute_inplace);
-        source.append(matrix_row_align1_lu_factorize);
-        source.append(matrix_row_align1_add);
-        source.append(matrix_row_align1_vec_mul);
-        source.append(matrix_row_align1_trans_lower_triangular_substitute_inplace);
-        source.append(matrix_row_align1_inplace_divide);
-        source.append(matrix_row_align1_trans_upper_triangular_substitute_inplace);
-        source.append(matrix_row_align1_unit_upper_triangular_substitute_inplace);
-        source.append(matrix_row_align1_inplace_add);
-        source.append(matrix_row_align1_trans_unit_lower_triangular_substitute_inplace);
-        source.append(matrix_row_align1_scaled_rank1_update);
-        source.append(matrix_row_align1_clear);
-        source.append(matrix_row_align1_cpu_inplace_mult);
-        source.append(matrix_row_align1_inplace_mult);
-        source.append(matrix_row_align1_upper_triangular_substitute_inplace);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("lower_triangular_substitute_inplace");
-        prog_.add_kernel("trans_vec_mul");
-        prog_.add_kernel("rank1_update");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("lu_factorize");
-        prog_.add_kernel("add");
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("trans_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("trans_upper_triangular_substitute_inplace");
-        prog_.add_kernel("unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("scaled_rank1_update");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("upper_triangular_substitute_inplace");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_row<double, 16>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_row_16";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_unit_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_vec_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_rank1_update, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_unit_upper_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_lu_factorize, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_vec_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_divide, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_upper_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_unit_upper_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_unit_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_scaled_rank1_update, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_clear, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_cpu_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_upper_triangular_substitute_inplace, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("lower_triangular_substitute_inplace");
-        prog_.add_kernel("trans_vec_mul");
-        prog_.add_kernel("rank1_update");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("lu_factorize");
-        prog_.add_kernel("add");
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("trans_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("trans_upper_triangular_substitute_inplace");
-        prog_.add_kernel("unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("scaled_rank1_update");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("upper_triangular_substitute_inplace");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct matrix_row<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_unit_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_vec_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_rank1_update, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_unit_upper_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_lu_factorize, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_vec_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_divide, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_upper_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_unit_upper_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_unit_lower_triangular_substitute_inplace, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_scaled_rank1_update, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_clear, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_cpu_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_row_align1_upper_triangular_substitute_inplace, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("lower_triangular_substitute_inplace");
-        prog_.add_kernel("trans_vec_mul");
-        prog_.add_kernel("rank1_update");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("lu_factorize");
-        prog_.add_kernel("add");
-        prog_.add_kernel("vec_mul");
-        prog_.add_kernel("trans_lower_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("trans_upper_triangular_substitute_inplace");
-        prog_.add_kernel("unit_upper_triangular_substitute_inplace");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
-        prog_.add_kernel("scaled_rank1_update");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("upper_triangular_substitute_inplace");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_row_source.h b/viennacl/linalg/kernels/matrix_row_source.h
deleted file mode 100644
index 70ff53b..0000000
--- a/viennacl/linalg/kernels/matrix_row_source.h
+++ /dev/null
@@ -1,415 +0,0 @@
-#ifndef _VIENNACL_MATRIX_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_row_align1_unit_lower_triangular_substitute_inplace = 
-"__kernel void unit_lower_triangular_substitute_inplace(\n"
-"          __global const float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector)\n"
-"{\n"
-"  float temp;\n"
-"  for (int row = 0; row < matrix_rows; ++row)\n"
-"  {\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"    temp = vector[row];\n"
-"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-"      vector[elim] -= temp * matrix[elim * matrix_internal_cols + row];\n"
-"  }\n"
-"}\n"
-; //matrix_row_align1_unit_lower_triangular_substitute_inplace
-
-const char * const matrix_row_align1_inplace_sub = 
-"__kernel void inplace_sub(\n"
-"          __global float * vec1,\n"
-"          __global const float * vec2,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec1[i] -= vec2[i];\n"
-"}\n"
-; //matrix_row_align1_inplace_sub
-
-const char * const matrix_row_align1_lower_triangular_substitute_inplace = 
-"__kernel void lower_triangular_substitute_inplace(\n"
-"          __global const float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector)\n"
-"{\n"
-"  float temp;\n"
-"  for (int row = 0; row < matrix_rows; ++row)\n"
-"  {\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"    if (get_global_id(0) == 0)\n"
-"      vector[row] /= matrix[row+row*matrix_internal_cols];\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"    temp = vector[row];\n"
-"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-"      vector[elim] -= temp * matrix[elim * matrix_internal_cols + row];\n"
-"  }\n"
-"}\n"
-; //matrix_row_align1_lower_triangular_substitute_inplace
-
-const char * const matrix_row_align1_trans_vec_mul = 
-"__kernel void trans_vec_mul(\n"
-"          __global const float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global const float * vector,  \n"
-"          __global float * result) \n"
-"{ \n"
-"  //row and col indicate indices within transposed matrix\n"
-"  for (unsigned int row = get_global_id(0); row < matrix_cols; row += get_global_size(0))\n"
-"  {\n"
-"    float dot_prod2 = 0.0f;\n"
-"    for (unsigned int col = 0; col < matrix_rows; ++col)\n"
-"      dot_prod2 += matrix[row + col*matrix_internal_cols] * vector[col];\n"
-"    result[row] = dot_prod2;\n"
-"  }\n"
-"}\n"
-; //matrix_row_align1_trans_vec_mul
-
-const char * const matrix_row_align1_rank1_update = 
-"//perform a rank-1 update of the matrix, i.e. A += x * x^T\n"
-"__kernel void rank1_update(\n"
-"          __global float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global const float * vector1,  \n"
-"          __global const float * vector2) \n"
-"{ \n"
-"  float tmp;\n"
-"  unsigned int offset;\n"
-"  for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"
-"  {\n"
-"    tmp = vector1[row];\n"
-"    offset = row*matrix_internal_cols;\n"
-"    for (unsigned int col = 0; col < matrix_cols; ++col)\n"
-"      matrix[offset+col] += tmp * vector2[col];\n"
-"  }\n"
-"}\n"
-; //matrix_row_align1_rank1_update
-
-const char * const matrix_row_align1_sub = 
-"__kernel void sub(\n"
-"          __global const float * vec1,\n"
-"          __global const float * vec2, \n"
-"          __global float * result,\n"
-"          unsigned int size)\n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    result[i] = vec1[i] - vec2[i];\n"
-"}\n"
-; //matrix_row_align1_sub
-
-const char * const matrix_row_align1_trans_unit_upper_triangular_substitute_inplace = 
-"//transposed lower triangular matrix\n"
-"__kernel void trans_unit_upper_triangular_substitute_inplace(\n"
-"          __global const float * matrix, \n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector) \n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = matrix_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    temp = vector[row]; \n"
-"    //eliminate column with index 'row' in parallel: \n"
-"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-"      vector[elim] -= temp * matrix[row * matrix_internal_cols + elim]; \n"
-"  } \n"
-"   \n"
-"}\n"
-; //matrix_row_align1_trans_unit_upper_triangular_substitute_inplace
-
-const char * const matrix_row_align1_lu_factorize = 
-"__kernel void lu_factorize(\n"
-"          __global float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols) \n"
-"{ \n"
-"  float temp;\n"
-"  unsigned rowi;\n"
-"  unsigned rowk;\n"
-"  for (unsigned int i=1; i<matrix_rows; ++i)\n"
-"  {\n"
-"    rowi = i * matrix_internal_cols;\n"
-"    for (unsigned int k=0; k<i; ++k)\n"
-"    {\n"
-"      rowk = k * matrix_internal_cols;\n"
-"      if (get_global_id(0) == 0)\n"
-"        matrix[rowi + k] /= matrix[rowk + k];\n"
-"      barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"      temp = matrix[rowi + k];\n"
-"      \n"
-"      //parallel subtraction:\n"
-"      for (unsigned int j=k+1 + get_global_id(0); j<matrix_rows; j += get_global_size(0))\n"
-"        matrix[rowi + j] -= temp * matrix[rowk + j];\n"
-"    }\n"
-"  }\n"
-"} \n"
-; //matrix_row_align1_lu_factorize
-
-const char * const matrix_row_align1_add = 
-"__kernel void add(\n"
-"          __global const float * vec1,\n"
-"          __global const float * vec2, \n"
-"          __global float * result,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    result[i] = vec1[i] + vec2[i];\n"
-"}\n"
-; //matrix_row_align1_add
-
-const char * const matrix_row_align1_vec_mul = 
-"\n"
-"\n"
-"\n"
-"__kernel void vec_mul(\n"
-"          __global const float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global const float * vector,  \n"
-"          __global float * result) \n"
-"{ \n"
-"  for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"
-"  {\n"
-"    float dot_prod = 0.0f;\n"
-"    for (unsigned int col = 0; col < matrix_cols; ++col)\n"
-"      dot_prod += matrix[row*matrix_internal_cols + col] * vector[col];\n"
-"    result[row] = dot_prod;\n"
-"  }\n"
-"}\n"
-"\n"
-"\n"
-; //matrix_row_align1_vec_mul
-
-const char * const matrix_row_align1_trans_lower_triangular_substitute_inplace = 
-"__kernel void trans_lower_triangular_substitute_inplace(\n"
-"          __global const float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector)\n"
-"{\n"
-"  float temp;\n"
-"  for (int row = 0; row < matrix_rows; ++row)\n"
-"  {\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"    if (get_global_id(0) == 0)\n"
-"      vector[row] /= matrix[row+row*matrix_internal_cols];\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"    temp = vector[row];\n"
-"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-"      vector[elim] -= temp * matrix[row * matrix_internal_cols + elim];\n"
-"  }\n"
-"}\n"
-; //matrix_row_align1_trans_lower_triangular_substitute_inplace
-
-const char * const matrix_row_align1_inplace_divide = 
-"__kernel void inplace_divide(\n"
-"          __global float * vec,\n"
-"          __global const float * fac,  //note: CPU variant is mapped to prod_scalar\n"
-"          unsigned int size) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec[i] /= factor;\n"
-"}\n"
-; //matrix_row_align1_inplace_divide
-
-const char * const matrix_row_align1_trans_upper_triangular_substitute_inplace = 
-"//transposed lower triangular matrix\n"
-"__kernel void trans_upper_triangular_substitute_inplace(\n"
-"          __global const float * matrix, \n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector) \n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = matrix_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_global_id(0) == 0) \n"
-"      vector[row] /= matrix[row*matrix_internal_cols + row]; \n"
-" \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    temp = vector[row]; \n"
-"    //eliminate column with index 'row' in parallel: \n"
-"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-"      vector[elim] -= temp * matrix[row * matrix_internal_cols + elim]; \n"
-"  } \n"
-"   \n"
-"}\n"
-; //matrix_row_align1_trans_upper_triangular_substitute_inplace
-
-const char * const matrix_row_align1_unit_upper_triangular_substitute_inplace = 
-"__kernel void unit_upper_triangular_substitute_inplace( \n"
-"          __global const float * matrix, \n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector) \n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = matrix_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    temp = vector[row]; \n"
-"    //eliminate column with index 'row' in parallel: \n"
-"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-"      vector[elim] -= temp * matrix[elim * matrix_internal_cols + row]; \n"
-"  } \n"
-"   \n"
-"}\n"
-; //matrix_row_align1_unit_upper_triangular_substitute_inplace
-
-const char * const matrix_row_align1_inplace_add = 
-"__kernel void inplace_add(\n"
-"          __global float * vec1,\n"
-"          __global const float * vec2,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec1[i] += vec2[i];\n"
-"}\n"
-; //matrix_row_align1_inplace_add
-
-const char * const matrix_row_align1_trans_unit_lower_triangular_substitute_inplace = 
-"\n"
-"__kernel void trans_unit_lower_triangular_substitute_inplace(\n"
-"          __global const float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector)\n"
-"{\n"
-"  float temp;\n"
-"  for (int row = 0; row < matrix_rows; ++row)\n"
-"  {\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"\n"
-"    temp = vector[row];\n"
-"\n"
-"    for  (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-"      vector[elim] -= temp * matrix[row * matrix_internal_cols + elim];\n"
-"  }\n"
-"}\n"
-"\n"
-"\n"
-; //matrix_row_align1_trans_unit_lower_triangular_substitute_inplace
-
-const char * const matrix_row_align1_scaled_rank1_update = 
-"__kernel void scaled_rank1_update(\n"
-"          __global float * matrix,\n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          float val,\n"
-"          __global const float * vector1,  \n"
-"          __global const float * vector2) \n"
-"{ \n"
-"  float tmp;\n"
-"  unsigned int offset;\n"
-"  for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"
-"  {\n"
-"    tmp = val * vector1[row];\n"
-"    offset = row * matrix_internal_cols;\n"
-"    for (unsigned int col = 0; col < matrix_cols; ++col)\n"
-"      matrix[offset+col] += tmp * vector2[col];\n"
-"  }\n"
-"}\n"
-; //matrix_row_align1_scaled_rank1_update
-
-const char * const matrix_row_align1_clear = 
-"__kernel void clear(\n"
-"          __global float * vec,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec[i] = 0;\n"
-"}\n"
-; //matrix_row_align1_clear
-
-const char * const matrix_row_align1_cpu_inplace_mult = 
-"__kernel void cpu_inplace_mult(\n"
-"          __global float * vec,\n"
-"          float factor, \n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec[i] *= factor;\n"
-"}\n"
-; //matrix_row_align1_cpu_inplace_mult
-
-const char * const matrix_row_align1_inplace_mult = 
-"__kernel void inplace_mult(\n"
-"          __global float * vec,\n"
-"          __global const float * fac, \n"
-"          unsigned int size) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec[i] *= factor;\n"
-"}\n"
-; //matrix_row_align1_inplace_mult
-
-const char * const matrix_row_align1_upper_triangular_substitute_inplace = 
-"__kernel void upper_triangular_substitute_inplace( \n"
-"          __global const float * matrix, \n"
-"          unsigned int matrix_rows,\n"
-"          unsigned int matrix_cols,\n"
-"          unsigned int matrix_internal_rows,\n"
-"          unsigned int matrix_internal_cols,\n"
-"          __global float * vector) \n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = matrix_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_global_id(0) == 0) \n"
-"      vector[row] /= matrix[row*matrix_internal_cols + row]; \n"
-" \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    temp = vector[row]; \n"
-"    //eliminate column with index 'row' in parallel: \n"
-"    for  (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-"      vector[elim] -= temp * matrix[elim * matrix_internal_cols + row]; \n"
-"  } \n"
-"   \n"
-"}\n"
-; //matrix_row_align1_upper_triangular_substitute_inplace
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h b/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h
deleted file mode 100644
index 26ff158..0000000
--- a/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_COL_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_SOLVE_COL_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_solve_col_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_solve_col_col;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_solve_col_col<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_solve_col_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_solve_col_col_align1_upper_trans_solve);
-        source.append(matrix_solve_col_col_align1_trans_upper_trans_solve);
-        source.append(matrix_solve_col_col_align1_unit_lower_solve);
-        source.append(matrix_solve_col_col_align1_trans_unit_upper_trans_solve);
-        source.append(matrix_solve_col_col_align1_trans_upper_solve);
-        source.append(matrix_solve_col_col_align1_unit_lower_trans_solve);
-        source.append(matrix_solve_col_col_align1_trans_unit_upper_solve);
-        source.append(matrix_solve_col_col_align1_trans_unit_lower_trans_solve);
-        source.append(matrix_solve_col_col_align1_lower_trans_solve);
-        source.append(matrix_solve_col_col_align1_upper_solve);
-        source.append(matrix_solve_col_col_align1_trans_lower_trans_solve);
-        source.append(matrix_solve_col_col_align1_lower_solve);
-        source.append(matrix_solve_col_col_align1_trans_lower_solve);
-        source.append(matrix_solve_col_col_align1_unit_upper_trans_solve);
-        source.append(matrix_solve_col_col_align1_unit_upper_solve);
-        source.append(matrix_solve_col_col_align1_trans_unit_lower_solve);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("upper_trans_solve");
-        prog_.add_kernel("trans_upper_trans_solve");
-        prog_.add_kernel("unit_lower_solve");
-        prog_.add_kernel("trans_unit_upper_trans_solve");
-        prog_.add_kernel("trans_upper_solve");
-        prog_.add_kernel("unit_lower_trans_solve");
-        prog_.add_kernel("trans_unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_trans_solve");
-        prog_.add_kernel("lower_trans_solve");
-        prog_.add_kernel("upper_solve");
-        prog_.add_kernel("trans_lower_trans_solve");
-        prog_.add_kernel("lower_solve");
-        prog_.add_kernel("trans_lower_solve");
-        prog_.add_kernel("unit_upper_trans_solve");
-        prog_.add_kernel("unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_solve");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_solve_col_col<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_solve_col_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_unit_lower_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_unit_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_unit_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_unit_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_unit_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_lower_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_lower_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_unit_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_unit_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_unit_lower_solve, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("upper_trans_solve");
-        prog_.add_kernel("trans_upper_trans_solve");
-        prog_.add_kernel("unit_lower_solve");
-        prog_.add_kernel("trans_unit_upper_trans_solve");
-        prog_.add_kernel("trans_upper_solve");
-        prog_.add_kernel("unit_lower_trans_solve");
-        prog_.add_kernel("trans_unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_trans_solve");
-        prog_.add_kernel("lower_trans_solve");
-        prog_.add_kernel("upper_solve");
-        prog_.add_kernel("trans_lower_trans_solve");
-        prog_.add_kernel("lower_solve");
-        prog_.add_kernel("trans_lower_solve");
-        prog_.add_kernel("unit_upper_trans_solve");
-        prog_.add_kernel("unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_solve");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_col_col_source.h b/viennacl/linalg/kernels/matrix_solve_col_col_source.h
deleted file mode 100644
index cfff087..0000000
--- a/viennacl/linalg/kernels/matrix_solve_col_col_source.h
+++ /dev/null
@@ -1,485 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_COL_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_SOLVE_COL_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_solve_col_col_align1_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_upper_trans_solve
-
-const char * const matrix_solve_col_col_align1_trans_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_upper_trans_solve
-
-const char * const matrix_solve_col_col_align1_unit_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void unit_lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_unit_lower_solve
-
-const char * const matrix_solve_col_col_align1_trans_unit_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_unit_upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_unit_upper_trans_solve
-
-const char * const matrix_solve_col_col_align1_trans_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_upper_solve
-
-const char * const matrix_solve_col_col_align1_unit_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void unit_lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_unit_lower_trans_solve
-
-const char * const matrix_solve_col_col_align1_trans_unit_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_unit_upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_unit_upper_solve
-
-const char * const matrix_solve_col_col_align1_trans_unit_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_unit_lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_unit_lower_trans_solve
-
-const char * const matrix_solve_col_col_align1_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_lower_trans_solve
-
-const char * const matrix_solve_col_col_align1_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_upper_solve
-
-const char * const matrix_solve_col_col_align1_trans_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_lower_trans_solve
-
-const char * const matrix_solve_col_col_align1_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_lower_solve
-
-const char * const matrix_solve_col_col_align1_trans_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_lower_solve
-
-const char * const matrix_solve_col_col_align1_unit_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void unit_upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_unit_upper_trans_solve
-
-const char * const matrix_solve_col_col_align1_unit_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void unit_upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_unit_upper_solve
-
-const char * const matrix_solve_col_col_align1_trans_unit_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_unit_lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_unit_lower_solve
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h b/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h
deleted file mode 100644
index 240a7e6..0000000
--- a/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_COL_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_SOLVE_COL_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_solve_col_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_solve_col_row;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_solve_col_row<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_solve_col_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_solve_col_row_align1_upper_trans_solve);
-        source.append(matrix_solve_col_row_align1_trans_upper_trans_solve);
-        source.append(matrix_solve_col_row_align1_unit_lower_solve);
-        source.append(matrix_solve_col_row_align1_trans_unit_upper_trans_solve);
-        source.append(matrix_solve_col_row_align1_trans_upper_solve);
-        source.append(matrix_solve_col_row_align1_unit_lower_trans_solve);
-        source.append(matrix_solve_col_row_align1_trans_unit_upper_solve);
-        source.append(matrix_solve_col_row_align1_trans_unit_lower_trans_solve);
-        source.append(matrix_solve_col_row_align1_lower_trans_solve);
-        source.append(matrix_solve_col_row_align1_upper_solve);
-        source.append(matrix_solve_col_row_align1_trans_lower_trans_solve);
-        source.append(matrix_solve_col_row_align1_lower_solve);
-        source.append(matrix_solve_col_row_align1_trans_lower_solve);
-        source.append(matrix_solve_col_row_align1_unit_upper_trans_solve);
-        source.append(matrix_solve_col_row_align1_unit_upper_solve);
-        source.append(matrix_solve_col_row_align1_trans_unit_lower_solve);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("upper_trans_solve");
-        prog_.add_kernel("trans_upper_trans_solve");
-        prog_.add_kernel("unit_lower_solve");
-        prog_.add_kernel("trans_unit_upper_trans_solve");
-        prog_.add_kernel("trans_upper_solve");
-        prog_.add_kernel("unit_lower_trans_solve");
-        prog_.add_kernel("trans_unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_trans_solve");
-        prog_.add_kernel("lower_trans_solve");
-        prog_.add_kernel("upper_solve");
-        prog_.add_kernel("trans_lower_trans_solve");
-        prog_.add_kernel("lower_solve");
-        prog_.add_kernel("trans_lower_solve");
-        prog_.add_kernel("unit_upper_trans_solve");
-        prog_.add_kernel("unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_solve");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_solve_col_row<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_solve_col_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_unit_lower_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_unit_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_unit_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_unit_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_unit_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_lower_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_lower_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_unit_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_unit_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_unit_lower_solve, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("upper_trans_solve");
-        prog_.add_kernel("trans_upper_trans_solve");
-        prog_.add_kernel("unit_lower_solve");
-        prog_.add_kernel("trans_unit_upper_trans_solve");
-        prog_.add_kernel("trans_upper_solve");
-        prog_.add_kernel("unit_lower_trans_solve");
-        prog_.add_kernel("trans_unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_trans_solve");
-        prog_.add_kernel("lower_trans_solve");
-        prog_.add_kernel("upper_solve");
-        prog_.add_kernel("trans_lower_trans_solve");
-        prog_.add_kernel("lower_solve");
-        prog_.add_kernel("trans_lower_solve");
-        prog_.add_kernel("unit_upper_trans_solve");
-        prog_.add_kernel("unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_solve");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_col_row_source.h b/viennacl/linalg/kernels/matrix_solve_col_row_source.h
deleted file mode 100644
index 60a6be3..0000000
--- a/viennacl/linalg/kernels/matrix_solve_col_row_source.h
+++ /dev/null
@@ -1,485 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_COL_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_SOLVE_COL_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_solve_col_row_align1_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_upper_trans_solve
-
-const char * const matrix_solve_col_row_align1_trans_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_upper_trans_solve
-
-const char * const matrix_solve_col_row_align1_unit_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void unit_lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_unit_lower_solve
-
-const char * const matrix_solve_col_row_align1_trans_unit_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_unit_upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_unit_upper_trans_solve
-
-const char * const matrix_solve_col_row_align1_trans_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_upper_solve
-
-const char * const matrix_solve_col_row_align1_unit_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void unit_lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_unit_lower_trans_solve
-
-const char * const matrix_solve_col_row_align1_trans_unit_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_unit_upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_unit_upper_solve
-
-const char * const matrix_solve_col_row_align1_trans_unit_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_unit_lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_unit_lower_trans_solve
-
-const char * const matrix_solve_col_row_align1_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_lower_trans_solve
-
-const char * const matrix_solve_col_row_align1_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_upper_solve
-
-const char * const matrix_solve_col_row_align1_trans_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_lower_trans_solve
-
-const char * const matrix_solve_col_row_align1_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_lower_solve
-
-const char * const matrix_solve_col_row_align1_trans_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_lower_solve
-
-const char * const matrix_solve_col_row_align1_unit_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void unit_upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_unit_upper_trans_solve
-
-const char * const matrix_solve_col_row_align1_unit_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void unit_upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_unit_upper_solve
-
-const char * const matrix_solve_col_row_align1_trans_unit_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_unit_lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_unit_lower_solve
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h b/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h
deleted file mode 100644
index 1ecbafa..0000000
--- a/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_ROW_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_SOLVE_ROW_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_solve_row_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_solve_row_col;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_solve_row_col<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_solve_row_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_solve_row_col_align1_upper_trans_solve);
-        source.append(matrix_solve_row_col_align1_trans_upper_trans_solve);
-        source.append(matrix_solve_row_col_align1_unit_lower_solve);
-        source.append(matrix_solve_row_col_align1_trans_unit_upper_trans_solve);
-        source.append(matrix_solve_row_col_align1_trans_upper_solve);
-        source.append(matrix_solve_row_col_align1_unit_lower_trans_solve);
-        source.append(matrix_solve_row_col_align1_trans_unit_upper_solve);
-        source.append(matrix_solve_row_col_align1_trans_unit_lower_trans_solve);
-        source.append(matrix_solve_row_col_align1_lower_trans_solve);
-        source.append(matrix_solve_row_col_align1_upper_solve);
-        source.append(matrix_solve_row_col_align1_trans_lower_trans_solve);
-        source.append(matrix_solve_row_col_align1_lower_solve);
-        source.append(matrix_solve_row_col_align1_trans_lower_solve);
-        source.append(matrix_solve_row_col_align1_unit_upper_trans_solve);
-        source.append(matrix_solve_row_col_align1_unit_upper_solve);
-        source.append(matrix_solve_row_col_align1_trans_unit_lower_solve);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("upper_trans_solve");
-        prog_.add_kernel("trans_upper_trans_solve");
-        prog_.add_kernel("unit_lower_solve");
-        prog_.add_kernel("trans_unit_upper_trans_solve");
-        prog_.add_kernel("trans_upper_solve");
-        prog_.add_kernel("unit_lower_trans_solve");
-        prog_.add_kernel("trans_unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_trans_solve");
-        prog_.add_kernel("lower_trans_solve");
-        prog_.add_kernel("upper_solve");
-        prog_.add_kernel("trans_lower_trans_solve");
-        prog_.add_kernel("lower_solve");
-        prog_.add_kernel("trans_lower_solve");
-        prog_.add_kernel("unit_upper_trans_solve");
-        prog_.add_kernel("unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_solve");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_solve_row_col<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_solve_row_col_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_unit_lower_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_unit_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_unit_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_unit_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_unit_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_lower_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_lower_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_unit_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_unit_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_unit_lower_solve, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("upper_trans_solve");
-        prog_.add_kernel("trans_upper_trans_solve");
-        prog_.add_kernel("unit_lower_solve");
-        prog_.add_kernel("trans_unit_upper_trans_solve");
-        prog_.add_kernel("trans_upper_solve");
-        prog_.add_kernel("unit_lower_trans_solve");
-        prog_.add_kernel("trans_unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_trans_solve");
-        prog_.add_kernel("lower_trans_solve");
-        prog_.add_kernel("upper_solve");
-        prog_.add_kernel("trans_lower_trans_solve");
-        prog_.add_kernel("lower_solve");
-        prog_.add_kernel("trans_lower_solve");
-        prog_.add_kernel("unit_upper_trans_solve");
-        prog_.add_kernel("unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_solve");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_row_col_source.h b/viennacl/linalg/kernels/matrix_solve_row_col_source.h
deleted file mode 100644
index 132fdf4..0000000
--- a/viennacl/linalg/kernels/matrix_solve_row_col_source.h
+++ /dev/null
@@ -1,485 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_ROW_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_SOLVE_ROW_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_solve_row_col_align1_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_upper_trans_solve
-
-const char * const matrix_solve_row_col_align1_trans_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_upper_trans_solve
-
-const char * const matrix_solve_row_col_align1_unit_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void unit_lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_unit_lower_solve
-
-const char * const matrix_solve_row_col_align1_trans_unit_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_unit_upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_unit_upper_trans_solve
-
-const char * const matrix_solve_row_col_align1_trans_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_upper_solve
-
-const char * const matrix_solve_row_col_align1_unit_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void unit_lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_unit_lower_trans_solve
-
-const char * const matrix_solve_row_col_align1_trans_unit_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_unit_upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_unit_upper_solve
-
-const char * const matrix_solve_row_col_align1_trans_unit_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_unit_lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_unit_lower_trans_solve
-
-const char * const matrix_solve_row_col_align1_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_lower_trans_solve
-
-const char * const matrix_solve_row_col_align1_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_upper_solve
-
-const char * const matrix_solve_row_col_align1_trans_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_lower_trans_solve
-
-const char * const matrix_solve_row_col_align1_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_lower_solve
-
-const char * const matrix_solve_row_col_align1_trans_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_lower_solve
-
-const char * const matrix_solve_row_col_align1_unit_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void unit_upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_unit_upper_trans_solve
-
-const char * const matrix_solve_row_col_align1_unit_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void unit_upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_unit_upper_solve
-
-const char * const matrix_solve_row_col_align1_trans_unit_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_unit_lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_unit_lower_solve
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h b/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h
deleted file mode 100644
index 35fa2a1..0000000
--- a/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_ROW_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_SOLVE_ROW_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_solve_row_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct matrix_solve_row_row;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct matrix_solve_row_row<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_matrix_solve_row_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(matrix_solve_row_row_align1_upper_trans_solve);
-        source.append(matrix_solve_row_row_align1_trans_upper_trans_solve);
-        source.append(matrix_solve_row_row_align1_unit_lower_solve);
-        source.append(matrix_solve_row_row_align1_trans_unit_upper_trans_solve);
-        source.append(matrix_solve_row_row_align1_trans_upper_solve);
-        source.append(matrix_solve_row_row_align1_unit_lower_trans_solve);
-        source.append(matrix_solve_row_row_align1_trans_unit_upper_solve);
-        source.append(matrix_solve_row_row_align1_trans_unit_lower_trans_solve);
-        source.append(matrix_solve_row_row_align1_lower_trans_solve);
-        source.append(matrix_solve_row_row_align1_upper_solve);
-        source.append(matrix_solve_row_row_align1_trans_lower_trans_solve);
-        source.append(matrix_solve_row_row_align1_lower_solve);
-        source.append(matrix_solve_row_row_align1_trans_lower_solve);
-        source.append(matrix_solve_row_row_align1_unit_upper_trans_solve);
-        source.append(matrix_solve_row_row_align1_unit_upper_solve);
-        source.append(matrix_solve_row_row_align1_trans_unit_lower_solve);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("upper_trans_solve");
-        prog_.add_kernel("trans_upper_trans_solve");
-        prog_.add_kernel("unit_lower_solve");
-        prog_.add_kernel("trans_unit_upper_trans_solve");
-        prog_.add_kernel("trans_upper_solve");
-        prog_.add_kernel("unit_lower_trans_solve");
-        prog_.add_kernel("trans_unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_trans_solve");
-        prog_.add_kernel("lower_trans_solve");
-        prog_.add_kernel("upper_solve");
-        prog_.add_kernel("trans_lower_trans_solve");
-        prog_.add_kernel("lower_solve");
-        prog_.add_kernel("trans_lower_solve");
-        prog_.add_kernel("unit_upper_trans_solve");
-        prog_.add_kernel("unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_solve");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct matrix_solve_row_row<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_matrix_solve_row_row_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_unit_lower_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_unit_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_unit_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_unit_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_unit_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_lower_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_lower_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_lower_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_unit_upper_trans_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_unit_upper_solve, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_unit_lower_solve, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("upper_trans_solve");
-        prog_.add_kernel("trans_upper_trans_solve");
-        prog_.add_kernel("unit_lower_solve");
-        prog_.add_kernel("trans_unit_upper_trans_solve");
-        prog_.add_kernel("trans_upper_solve");
-        prog_.add_kernel("unit_lower_trans_solve");
-        prog_.add_kernel("trans_unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_trans_solve");
-        prog_.add_kernel("lower_trans_solve");
-        prog_.add_kernel("upper_solve");
-        prog_.add_kernel("trans_lower_trans_solve");
-        prog_.add_kernel("lower_solve");
-        prog_.add_kernel("trans_lower_solve");
-        prog_.add_kernel("unit_upper_trans_solve");
-        prog_.add_kernel("unit_upper_solve");
-        prog_.add_kernel("trans_unit_lower_solve");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_row_row_source.h b/viennacl/linalg/kernels/matrix_solve_row_row_source.h
deleted file mode 100644
index c606788..0000000
--- a/viennacl/linalg/kernels/matrix_solve_row_row_source.h
+++ /dev/null
@@ -1,485 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_ROW_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_SOLVE_ROW_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const matrix_solve_row_row_align1_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_upper_trans_solve
-
-const char * const matrix_solve_row_row_align1_trans_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_upper_trans_solve
-
-const char * const matrix_solve_row_row_align1_unit_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void unit_lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_unit_lower_solve
-
-const char * const matrix_solve_row_row_align1_trans_unit_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_unit_upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_unit_upper_trans_solve
-
-const char * const matrix_solve_row_row_align1_trans_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_upper_solve
-
-const char * const matrix_solve_row_row_align1_unit_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void unit_lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_unit_lower_trans_solve
-
-const char * const matrix_solve_row_row_align1_trans_unit_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_unit_upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_unit_upper_solve
-
-const char * const matrix_solve_row_row_align1_trans_unit_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_unit_lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_unit_lower_trans_solve
-
-const char * const matrix_solve_row_row_align1_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_lower_trans_solve
-
-const char * const matrix_solve_row_row_align1_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_upper_solve
-
-const char * const matrix_solve_row_row_align1_trans_lower_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_lower_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_lower_trans_solve
-
-const char * const matrix_solve_row_row_align1_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_lower_solve
-
-const char * const matrix_solve_row_row_align1_trans_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"    if (get_local_id(0) == 0) \n"
-"      B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_lower_solve
-
-const char * const matrix_solve_row_row_align1_unit_upper_trans_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void unit_upper_trans_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_unit_upper_trans_solve
-
-const char * const matrix_solve_row_row_align1_unit_upper_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void unit_upper_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = A_rows-1; row > -1; --row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_unit_upper_solve
-
-const char * const matrix_solve_row_row_align1_trans_unit_lower_solve = 
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_unit_lower_solve(\n"
-"          __global const float * A,\n"
-"          unsigned int A_rows,\n"
-"          unsigned int A_cols,\n"
-"          unsigned int A_internal_rows,\n"
-"          unsigned int A_internal_cols,\n"
-"          __global float * B,  \n"
-"          unsigned int B_rows,\n"
-"          unsigned int B_cols,\n"
-"          unsigned int B_internal_rows,\n"
-"          unsigned int B_internal_cols)\n"
-"{ \n"
-"  float temp; \n"
-"  for (int row = 0; row < A_rows; ++row) \n"
-"  { \n"
-"    barrier(CLK_GLOBAL_MEM_FENCE); \n"
-"      temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-"    //eliminate column of op(A) with index 'row' in parallel: \n"
-"    for  (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-"      B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-"   }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_unit_lower_solve
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/scalar_kernels.h b/viennacl/linalg/kernels/scalar_kernels.h
deleted file mode 100644
index 858398a..0000000
--- a/viennacl/linalg/kernels/scalar_kernels.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef _VIENNACL_SCALAR_KERNELS_HPP_
-#define _VIENNACL_SCALAR_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/scalar_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct scalar;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct scalar<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_scalar_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(scalar_align1_inplace_sub);
-        source.append(scalar_align1_cpu_inplace_div);
-        source.append(scalar_align1_cpu_inplace_add);
-        source.append(scalar_align1_cpu_sub);
-        source.append(scalar_align1_cpu_mul);
-        source.append(scalar_align1_sub);
-        source.append(scalar_align1_inplace_mul);
-        source.append(scalar_align1_cpu_inplace_mul);
-        source.append(scalar_align1_mul);
-        source.append(scalar_align1_cpu_add);
-        source.append(scalar_align1_inplace_div);
-        source.append(scalar_align1_add);
-        source.append(scalar_align1_cpu_inplace_sub);
-        source.append(scalar_align1_inplace_add);
-        source.append(scalar_align1_divide);
-        source.append(scalar_align1_cpu_div);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("cpu_inplace_div");
-        prog_.add_kernel("cpu_inplace_add");
-        prog_.add_kernel("cpu_sub");
-        prog_.add_kernel("cpu_mul");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("inplace_mul");
-        prog_.add_kernel("cpu_inplace_mul");
-        prog_.add_kernel("mul");
-        prog_.add_kernel("cpu_add");
-        prog_.add_kernel("inplace_div");
-        prog_.add_kernel("add");
-        prog_.add_kernel("cpu_inplace_sub");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("divide");
-        prog_.add_kernel("cpu_div");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct scalar<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_scalar_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_inplace_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_inplace_div, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_inplace_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_inplace_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_inplace_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_mul, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_inplace_div, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_inplace_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_inplace_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_divide, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_div, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("cpu_inplace_div");
-        prog_.add_kernel("cpu_inplace_add");
-        prog_.add_kernel("cpu_sub");
-        prog_.add_kernel("cpu_mul");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("inplace_mul");
-        prog_.add_kernel("cpu_inplace_mul");
-        prog_.add_kernel("mul");
-        prog_.add_kernel("cpu_add");
-        prog_.add_kernel("inplace_div");
-        prog_.add_kernel("add");
-        prog_.add_kernel("cpu_inplace_sub");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("divide");
-        prog_.add_kernel("cpu_div");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/scalar_source.h b/viennacl/linalg/kernels/scalar_source.h
deleted file mode 100644
index 0b7504d..0000000
--- a/viennacl/linalg/kernels/scalar_source.h
+++ /dev/null
@@ -1,217 +0,0 @@
-#ifndef _VIENNACL_SCALAR_SOURCE_HPP_
-#define _VIENNACL_SCALAR_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const scalar_align1_inplace_sub = 
-" \n"
-"__kernel void inplace_sub(\n"
-"          __global float * val1,\n"
-"          __global const float * val2) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *val1 -= *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_inplace_sub
-
-const char * const scalar_align1_cpu_inplace_div = 
-" \n"
-"__kernel void cpu_inplace_div(\n"
-"          __global float * val1,\n"
-"          float val2) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *val1 /= val2;\n"
-"}\n"
-"\n"
-" \n"
-; //scalar_align1_cpu_inplace_div
-
-const char * const scalar_align1_cpu_inplace_add = 
-" \n"
-"__kernel void cpu_inplace_add(\n"
-"          __global float * val1,\n"
-"          float val2) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *val1 += val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_cpu_inplace_add
-
-const char * const scalar_align1_cpu_sub = 
-" \n"
-"__kernel void cpu_sub(\n"
-"          __global const float * val1,\n"
-"          float val2, \n"
-"          __global float * result) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *result = *val1 - val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_cpu_sub
-
-const char * const scalar_align1_cpu_mul = 
-" \n"
-"__kernel void cpu_mul(\n"
-"          __global const float * val1,\n"
-"          float val2, \n"
-"          __global float * result) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *result = *val1 * val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_cpu_mul
-
-const char * const scalar_align1_sub = 
-" \n"
-"__kernel void sub(\n"
-"          __global const float * val1,\n"
-"          __global const float * val2, \n"
-"          __global float * result) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *result = *val1 - *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_sub
-
-const char * const scalar_align1_inplace_mul = 
-" \n"
-"__kernel void inplace_mul(\n"
-"          __global float * val1,\n"
-"          __global const float * val2) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *val1 *= *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_inplace_mul
-
-const char * const scalar_align1_cpu_inplace_mul = 
-" \n"
-"__kernel void cpu_inplace_mul(\n"
-"          __global float * val1,\n"
-"          float val2) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *val1 *= val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_cpu_inplace_mul
-
-const char * const scalar_align1_mul = 
-" \n"
-"__kernel void mul(\n"
-"          __global const float * val1,\n"
-"          __global const float * val2, \n"
-"          __global float * result) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *result = *val1 * *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_mul
-
-const char * const scalar_align1_cpu_add = 
-" \n"
-"__kernel void cpu_add(\n"
-"          __global const float * val1,\n"
-"          float val2, \n"
-"          __global float * result) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *result = *val1 + val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_cpu_add
-
-const char * const scalar_align1_inplace_div = 
-" \n"
-"__kernel void inplace_div(\n"
-"          __global float * val1,\n"
-"          __global const float * val2) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *val1 /= *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_inplace_div
-
-const char * const scalar_align1_add = 
-" \n"
-"__kernel void add(\n"
-"          __global const float * val1,\n"
-"          __global const float * val2, \n"
-"          __global float * result) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *result = *val1 + *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_add
-
-const char * const scalar_align1_cpu_inplace_sub = 
-" \n"
-"__kernel void cpu_inplace_sub(\n"
-"          __global float * val1,\n"
-"          float val2) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *val1 -= val2;\n"
-"}\n"
-" \n"
-"\n"
-; //scalar_align1_cpu_inplace_sub
-
-const char * const scalar_align1_inplace_add = 
-" \n"
-"__kernel void inplace_add(\n"
-"          __global float * val1,\n"
-"          __global const float * val2) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *val1 += *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_inplace_add
-
-const char * const scalar_align1_divide = 
-" \n"
-"// note: 'div' seems to produce some name clashes with the OpenCL jit-compiler, thus using 'divide'\n"
-"__kernel void divide(\n"
-"          __global const float * val1,\n"
-"          __global const float * val2, \n"
-"          __global float * result) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *result = *val1 / *val2;\n"
-"}\n"
-"\n"
-" \n"
-; //scalar_align1_divide
-
-const char * const scalar_align1_cpu_div = 
-" \n"
-"__kernel void cpu_div(\n"
-"          __global const float * val1,\n"
-"          float val2, \n"
-"          __global float * result) \n"
-"{ \n"
-"  if (get_global_id(0) == 0)\n"
-"    *result = *val1 / val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_cpu_div
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/vector_kernels.h b/viennacl/linalg/kernels/vector_kernels.h
deleted file mode 100644
index 31510d0..0000000
--- a/viennacl/linalg/kernels/vector_kernels.h
+++ /dev/null
@@ -1,547 +0,0 @@
-#ifndef _VIENNACL_VECTOR_KERNELS_HPP_
-#define _VIENNACL_VECTOR_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/vector_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-   template<class TYPE, unsigned int alignment>
-   struct vector;
-
-
-    /////////////// single precision kernels //////////////// 
-   template <>
-   struct vector<float, 16>
-   {
-    static std::string program_name()
-    {
-      return "f_vector_16";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(vector_align16_inplace_sub);
-        source.append(vector_align1_norm_inf);
-        source.append(vector_align1_index_norm_inf);
-        source.append(vector_align16_mult);
-        source.append(vector_align1_swap);
-        source.append(vector_align4_inplace_div_add);
-        source.append(vector_align1_norm_2);
-        source.append(vector_align16_sub);
-        source.append(vector_align4_cpu_mul_add);
-        source.append(vector_align1_vmax);
-        source.append(vector_align1_inner_prod);
-        source.append(vector_align16_add);
-        source.append(vector_align1_plane_rotation);
-        source.append(vector_align4_inplace_mul_sub);
-        source.append(vector_align4_inplace_mul_add);
-        source.append(vector_align4_mul_add);
-        source.append(vector_align16_cpu_mult);
-        source.append(vector_align16_inplace_divide);
-        source.append(vector_align1_sqrt_sum);
-        source.append(vector_align4_cpu_inplace_mul_add);
-        source.append(vector_align16_inplace_add);
-        source.append(vector_align16_divide);
-        source.append(vector_align1_norm_1);
-        source.append(vector_align1_clear);
-        source.append(vector_align1_cpu_inplace_mult);
-        source.append(vector_align16_inplace_mult);
-        source.append(vector_align1_sum);
-        source.append(vector_align4_inplace_div_sub);
-        source.append(vector_align1_diag_precond);
-        source.append(vector_align1_mul_sub);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("norm_inf");
-        prog_.add_kernel("index_norm_inf");
-        prog_.add_kernel("mult");
-        prog_.add_kernel("swap");
-        prog_.add_kernel("inplace_div_add");
-        prog_.add_kernel("norm_2");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("cpu_mul_add");
-        prog_.add_kernel("vmax");
-        prog_.add_kernel("inner_prod");
-        prog_.add_kernel("add");
-        prog_.add_kernel("plane_rotation");
-        prog_.add_kernel("inplace_mul_sub");
-        prog_.add_kernel("inplace_mul_add");
-        prog_.add_kernel("mul_add");
-        prog_.add_kernel("cpu_mult");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("sqrt_sum");
-        prog_.add_kernel("cpu_inplace_mul_add");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("divide");
-        prog_.add_kernel("norm_1");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("sum");
-        prog_.add_kernel("inplace_div_sub");
-        prog_.add_kernel("diag_precond");
-        prog_.add_kernel("mul_sub");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct vector<float, 4>
-   {
-    static std::string program_name()
-    {
-      return "f_vector_4";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(vector_align1_inplace_sub);
-        source.append(vector_align1_norm_inf);
-        source.append(vector_align1_index_norm_inf);
-        source.append(vector_align1_mult);
-        source.append(vector_align1_swap);
-        source.append(vector_align4_inplace_div_add);
-        source.append(vector_align1_norm_2);
-        source.append(vector_align1_sub);
-        source.append(vector_align4_cpu_mul_add);
-        source.append(vector_align1_vmax);
-        source.append(vector_align1_inner_prod);
-        source.append(vector_align1_add);
-        source.append(vector_align1_plane_rotation);
-        source.append(vector_align4_inplace_mul_sub);
-        source.append(vector_align4_inplace_mul_add);
-        source.append(vector_align4_mul_add);
-        source.append(vector_align1_cpu_mult);
-        source.append(vector_align1_inplace_divide);
-        source.append(vector_align1_sqrt_sum);
-        source.append(vector_align4_cpu_inplace_mul_add);
-        source.append(vector_align1_inplace_add);
-        source.append(vector_align1_divide);
-        source.append(vector_align1_norm_1);
-        source.append(vector_align1_clear);
-        source.append(vector_align1_cpu_inplace_mult);
-        source.append(vector_align1_inplace_mult);
-        source.append(vector_align1_sum);
-        source.append(vector_align4_inplace_div_sub);
-        source.append(vector_align1_diag_precond);
-        source.append(vector_align1_mul_sub);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("norm_inf");
-        prog_.add_kernel("index_norm_inf");
-        prog_.add_kernel("mult");
-        prog_.add_kernel("swap");
-        prog_.add_kernel("inplace_div_add");
-        prog_.add_kernel("norm_2");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("cpu_mul_add");
-        prog_.add_kernel("vmax");
-        prog_.add_kernel("inner_prod");
-        prog_.add_kernel("add");
-        prog_.add_kernel("plane_rotation");
-        prog_.add_kernel("inplace_mul_sub");
-        prog_.add_kernel("inplace_mul_add");
-        prog_.add_kernel("mul_add");
-        prog_.add_kernel("cpu_mult");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("sqrt_sum");
-        prog_.add_kernel("cpu_inplace_mul_add");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("divide");
-        prog_.add_kernel("norm_1");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("sum");
-        prog_.add_kernel("inplace_div_sub");
-        prog_.add_kernel("diag_precond");
-        prog_.add_kernel("mul_sub");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct vector<float, 1>
-   {
-    static std::string program_name()
-    {
-      return "f_vector_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        source.append(vector_align1_inplace_sub);
-        source.append(vector_align1_norm_inf);
-        source.append(vector_align1_index_norm_inf);
-        source.append(vector_align1_mult);
-        source.append(vector_align1_swap);
-        source.append(vector_align1_inplace_div_add);
-        source.append(vector_align1_norm_2);
-        source.append(vector_align1_sub);
-        source.append(vector_align1_cpu_mul_add);
-        source.append(vector_align1_vmax);
-        source.append(vector_align1_inner_prod);
-        source.append(vector_align1_add);
-        source.append(vector_align1_plane_rotation);
-        source.append(vector_align1_inplace_mul_sub);
-        source.append(vector_align1_inplace_mul_add);
-        source.append(vector_align1_mul_add);
-        source.append(vector_align1_cpu_mult);
-        source.append(vector_align1_inplace_divide);
-        source.append(vector_align1_sqrt_sum);
-        source.append(vector_align1_cpu_inplace_mul_add);
-        source.append(vector_align1_inplace_add);
-        source.append(vector_align1_divide);
-        source.append(vector_align1_norm_1);
-        source.append(vector_align1_clear);
-        source.append(vector_align1_cpu_inplace_mult);
-        source.append(vector_align1_inplace_mult);
-        source.append(vector_align1_sum);
-        source.append(vector_align1_inplace_div_sub);
-        source.append(vector_align1_diag_precond);
-        source.append(vector_align1_mul_sub);
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("norm_inf");
-        prog_.add_kernel("index_norm_inf");
-        prog_.add_kernel("mult");
-        prog_.add_kernel("swap");
-        prog_.add_kernel("inplace_div_add");
-        prog_.add_kernel("norm_2");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("cpu_mul_add");
-        prog_.add_kernel("vmax");
-        prog_.add_kernel("inner_prod");
-        prog_.add_kernel("add");
-        prog_.add_kernel("plane_rotation");
-        prog_.add_kernel("inplace_mul_sub");
-        prog_.add_kernel("inplace_mul_add");
-        prog_.add_kernel("mul_add");
-        prog_.add_kernel("cpu_mult");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("sqrt_sum");
-        prog_.add_kernel("cpu_inplace_mul_add");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("divide");
-        prog_.add_kernel("norm_1");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("sum");
-        prog_.add_kernel("inplace_div_sub");
-        prog_.add_kernel("diag_precond");
-        prog_.add_kernel("mul_sub");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-
-    /////////////// double precision kernels //////////////// 
-   template <>
-   struct vector<double, 16>
-   {
-    static std::string program_name()
-    {
-      return "d_vector_16";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(vector_align16_inplace_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_norm_inf, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_index_norm_inf, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align16_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_swap, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_div_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_norm_2, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align16_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_cpu_mul_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_vmax, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inner_prod, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align16_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_plane_rotation, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_mul_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_mul_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_mul_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align16_cpu_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align16_inplace_divide, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_sqrt_sum, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_cpu_inplace_mul_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align16_inplace_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align16_divide, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_norm_1, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_clear, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align16_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_sum, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_div_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_diag_precond, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_mul_sub, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("norm_inf");
-        prog_.add_kernel("index_norm_inf");
-        prog_.add_kernel("mult");
-        prog_.add_kernel("swap");
-        prog_.add_kernel("inplace_div_add");
-        prog_.add_kernel("norm_2");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("cpu_mul_add");
-        prog_.add_kernel("vmax");
-        prog_.add_kernel("inner_prod");
-        prog_.add_kernel("add");
-        prog_.add_kernel("plane_rotation");
-        prog_.add_kernel("inplace_mul_sub");
-        prog_.add_kernel("inplace_mul_add");
-        prog_.add_kernel("mul_add");
-        prog_.add_kernel("cpu_mult");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("sqrt_sum");
-        prog_.add_kernel("cpu_inplace_mul_add");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("divide");
-        prog_.add_kernel("norm_1");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("sum");
-        prog_.add_kernel("inplace_div_sub");
-        prog_.add_kernel("diag_precond");
-        prog_.add_kernel("mul_sub");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct vector<double, 4>
-   {
-    static std::string program_name()
-    {
-      return "d_vector_4";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_norm_inf, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_index_norm_inf, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_swap, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_div_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_norm_2, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_cpu_mul_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_vmax, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inner_prod, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_plane_rotation, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_mul_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_mul_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_mul_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_divide, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_sqrt_sum, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_cpu_inplace_mul_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_divide, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_norm_1, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_clear, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_sum, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_div_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_diag_precond, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_mul_sub, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("norm_inf");
-        prog_.add_kernel("index_norm_inf");
-        prog_.add_kernel("mult");
-        prog_.add_kernel("swap");
-        prog_.add_kernel("inplace_div_add");
-        prog_.add_kernel("norm_2");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("cpu_mul_add");
-        prog_.add_kernel("vmax");
-        prog_.add_kernel("inner_prod");
-        prog_.add_kernel("add");
-        prog_.add_kernel("plane_rotation");
-        prog_.add_kernel("inplace_mul_sub");
-        prog_.add_kernel("inplace_mul_add");
-        prog_.add_kernel("mul_add");
-        prog_.add_kernel("cpu_mult");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("sqrt_sum");
-        prog_.add_kernel("cpu_inplace_mul_add");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("divide");
-        prog_.add_kernel("norm_1");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("sum");
-        prog_.add_kernel("inplace_div_sub");
-        prog_.add_kernel("diag_precond");
-        prog_.add_kernel("mul_sub");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-   template <>
-   struct vector<double, 1>
-   {
-    static std::string program_name()
-    {
-      return "d_vector_1";
-    }
-    static void init()
-    {
-      viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
-      static std::map<cl_context, bool> init_done;
-      viennacl::ocl::context & context_ = viennacl::ocl::current_context();
-      if (!init_done[context_.handle()])
-      {
-        std::string source;
-        std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_norm_inf, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_index_norm_inf, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_swap, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_div_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_norm_2, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_mul_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_vmax, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inner_prod, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_plane_rotation, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_mul_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_mul_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_mul_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_divide, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_sqrt_sum, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_inplace_mul_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_add, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_divide, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_norm_1, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_clear, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_mult, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_sum, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_div_sub, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_diag_precond, fp64_ext));
-        source.append(viennacl::tools::make_double_kernel(vector_align1_mul_sub, fp64_ext));
-        std::string prog_name = program_name();
-        #ifdef VIENNACL_BUILD_INFO
-        std::cout << "Creating program " << prog_name << std::endl;
-        #endif
-        context_.add_program(source, prog_name);
-        viennacl::ocl::program & prog_ = context_.get_program(prog_name);
-        prog_.add_kernel("inplace_sub");
-        prog_.add_kernel("norm_inf");
-        prog_.add_kernel("index_norm_inf");
-        prog_.add_kernel("mult");
-        prog_.add_kernel("swap");
-        prog_.add_kernel("inplace_div_add");
-        prog_.add_kernel("norm_2");
-        prog_.add_kernel("sub");
-        prog_.add_kernel("cpu_mul_add");
-        prog_.add_kernel("vmax");
-        prog_.add_kernel("inner_prod");
-        prog_.add_kernel("add");
-        prog_.add_kernel("plane_rotation");
-        prog_.add_kernel("inplace_mul_sub");
-        prog_.add_kernel("inplace_mul_add");
-        prog_.add_kernel("mul_add");
-        prog_.add_kernel("cpu_mult");
-        prog_.add_kernel("inplace_divide");
-        prog_.add_kernel("sqrt_sum");
-        prog_.add_kernel("cpu_inplace_mul_add");
-        prog_.add_kernel("inplace_add");
-        prog_.add_kernel("divide");
-        prog_.add_kernel("norm_1");
-        prog_.add_kernel("clear");
-        prog_.add_kernel("cpu_inplace_mult");
-        prog_.add_kernel("inplace_mult");
-        prog_.add_kernel("sum");
-        prog_.add_kernel("inplace_div_sub");
-        prog_.add_kernel("diag_precond");
-        prog_.add_kernel("mul_sub");
-        init_done[context_.handle()] = true;
-       } //if
-     } //init
-    }; // struct
-
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/vector_source.h b/viennacl/linalg/kernels/vector_source.h
deleted file mode 100644
index 84891fb..0000000
--- a/viennacl/linalg/kernels/vector_source.h
+++ /dev/null
@@ -1,833 +0,0 @@
-#ifndef _VIENNACL_VECTOR_SOURCE_HPP_
-#define _VIENNACL_VECTOR_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
-  namespace kernels
-  {
-const char * const vector_align16_inplace_sub = 
-"__kernel void inplace_sub(\n"
-"          __global float16 * vec1,\n"
-"          __global const float16 * vec2,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-"    vec1[i] -= vec2[i];\n"
-"}\n"
-; //vector_align16_inplace_sub
-
-const char * const vector_align16_mult = 
-"__kernel void mult(\n"
-"          __global const float16 * vec,\n"
-"          __global const float * fac, \n"
-"          __global float16 * result,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-"    result[i] = vec[i] * factor;\n"
-"}\n"
-; //vector_align16_mult
-
-const char * const vector_align16_sub = 
-"__kernel void sub(\n"
-"          __global const float16 * vec1,\n"
-"          __global const float16 * vec2, \n"
-"          __global float16 * result,\n"
-"          unsigned int size)\n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-"    result[i] = vec1[i] - vec2[i];\n"
-"}\n"
-; //vector_align16_sub
-
-const char * const vector_align16_cpu_inplace_mul = 
-"\n"
-"__kernel void cpu_inplace_mult(\n"
-"          __global float16 * vec,\n"
-"          float factor, \n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-"    vec[i] *= factor;\n"
-"}\n"
-"\n"
-; //vector_align16_cpu_inplace_mul
-
-const char * const vector_align16_add = 
-"__kernel void add(\n"
-"          __global const float16 * vec1,\n"
-"          __global const float16 * vec2, \n"
-"          __global float16 * result,\n"
-"          unsigned int size)\n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-"    result[i] = vec1[i] + vec2[i];\n"
-"}\n"
-; //vector_align16_add
-
-const char * const vector_align16_cpu_mult = 
-"__kernel void cpu_mult(\n"
-"          __global const float16 * vec,\n"
-"          float factor, \n"
-"          __global float16 * result,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-"    result[i] = vec[i] * factor;\n"
-"}\n"
-; //vector_align16_cpu_mult
-
-const char * const vector_align16_inplace_divide = 
-"__kernel void inplace_divide(\n"
-"          __global float16 * vec,\n"
-"          __global const float * fac,  //note: CPU variant is mapped to prod_scalar\n"
-"          unsigned int size) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-"    vec[i] /= factor;\n"
-"}\n"
-; //vector_align16_inplace_divide
-
-const char * const vector_align16_inplace_add = 
-"__kernel void inplace_add(\n"
-"          __global float16 * vec1,\n"
-"          __global const float16 * vec2,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-"    vec1[i] += vec2[i];\n"
-"}\n"
-; //vector_align16_inplace_add
-
-const char * const vector_align16_divide = 
-"//Note: 'div' cannot be used because of complaints by the jit-compiler\n"
-"__kernel void divide(\n"
-"          __global const float16 * vec,\n"
-"          __global const float * fac,  //note: CPU variant is mapped to prod_scalar\n"
-"          __global float16 * result,\n"
-"          unsigned int size)  \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-"    result[i] = vec[i] / factor;\n"
-"}\n"
-; //vector_align16_divide
-
-const char * const vector_align16_inplace_mult = 
-"__kernel void inplace_mult(\n"
-"          __global float16 * vec,\n"
-"          __global const float * fac, \n"
-"          unsigned int size) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-"    vec[i] *= factor;\n"
-"}\n"
-; //vector_align16_inplace_mult
-
-const char * const vector_align4_inplace_div_add = 
-"__kernel void inplace_div_add(\n"
-"          __global float4 * vec1,\n"
-"          __global const float4 * vec2,\n"
-"          __global const float * fac,   //CPU variant is mapped to mult_add\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"
-"    vec1[i] -= vec2[i] / factor;\n"
-"}\n"
-; //vector_align4_inplace_div_add
-
-const char * const vector_align4_cpu_mul_add = 
-"__kernel void cpu_mul_add(\n"
-"          __global const float4 * vec1,\n"
-"          float factor,\n"
-"          __global const float4 * vec2,\n"
-"          __global float4 * result,\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"
-"    result[i] = vec1[i] * factor + vec2[i];\n"
-"}\n"
-; //vector_align4_cpu_mul_add
-
-const char * const vector_align4_inplace_mul_sub = 
-"__kernel void inplace_mul_sub(\n"
-"          __global float4 * vec1,\n"
-"          __global const float4 * vec2,\n"
-"          __global const float * fac,   //CPU variant is mapped to mult_add\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"
-"    vec1[i] -= vec2[i] * factor;\n"
-"}\n"
-; //vector_align4_inplace_mul_sub
-
-const char * const vector_align4_inplace_mul_add = 
-"__kernel void inplace_mul_add(\n"
-"          __global float4 * vec1,\n"
-"          __global const float4 * vec2,\n"
-"          __global const float * fac,\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  unsigned int size_div_4 = size >> 2;\n"
-"  for (unsigned int i = get_global_id(0); i < size_div_4; i += get_global_size(0))\n"
-"    vec1[i] += vec2[i] * factor;\n"
-"}\n"
-; //vector_align4_inplace_mul_add
-
-const char * const vector_align4_mul_add = 
-"__kernel void mul_add(\n"
-"          __global const float4 * vec1,\n"
-"          __global const float * fac,\n"
-"          __global const float4 * vec2,\n"
-"          __global float4 * result,\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"
-"    result[i] = vec1[i] * factor + vec2[i];\n"
-"}\n"
-; //vector_align4_mul_add
-
-const char * const vector_align4_cpu_inplace_mul_add = 
-"__kernel void cpu_inplace_mul_add(\n"
-"          __global float4 * vec1,\n"
-"          __global const float4 * vec2,\n"
-"          float factor,\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"
-"    vec1[i] += vec2[i] * factor;\n"
-"}\n"
-; //vector_align4_cpu_inplace_mul_add
-
-const char * const vector_align4_inplace_div_sub = 
-"__kernel void inplace_div_sub(\n"
-"          __global float4 * vec1,\n"
-"          __global const float4 * vec2,\n"
-"          __global const float * fac,   //CPU variant is mapped to mult_add\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"
-"    vec1[i] -= vec2[i] / factor;\n"
-"}\n"
-; //vector_align4_inplace_div_sub
-
-const char * const vector_align1_inplace_sub = 
-"__kernel void inplace_sub(\n"
-"          __global float * vec1,\n"
-"          __global const float * vec2,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec1[i] -= vec2[i];\n"
-"}\n"
-; //vector_align1_inplace_sub
-
-const char * const vector_align1_norm_inf = 
-"\n"
-"////// norm_inf\n"
-"float impl_norm_inf(\n"
-"          __global const float * vec,\n"
-"          unsigned int start_index,\n"
-"          unsigned int end_index,\n"
-"          __local float * tmp_buffer)\n"
-"{\n"
-"  float tmp = 0;\n"
-"  for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"
-"    tmp = fmax(fabs(vec[i]), tmp);\n"
-"  tmp_buffer[get_local_id(0)] = tmp;\n"
-"  \n"
-"  //step 2: parallel reduction:\n"
-"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-"  {\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    if (get_global_id(0) < stride)\n"
-"      tmp_buffer[get_global_id(0)] = fmax(tmp_buffer[get_global_id(0)], tmp_buffer[get_global_id(0)+stride]);\n"
-"  }\n"
-"  \n"
-"  return tmp_buffer[0];\n"
-"}\n"
-"\n"
-"__kernel void norm_inf(\n"
-"          __global const float * vec,\n"
-"          unsigned int size,\n"
-"          __local float * tmp_buffer,\n"
-"          global float * group_buffer)\n"
-"{\n"
-"  float tmp = impl_norm_inf(vec,\n"
-"                          (      get_group_id(0) * size) / get_num_groups(0),\n"
-"                          ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"
-"                          tmp_buffer);\n"
-"  \n"
-"  if (get_local_id(0) == 0)\n"
-"    group_buffer[get_group_id(0)] = tmp;  \n"
-"}\n"
-; //vector_align1_norm_inf
-
-const char * const vector_align1_index_norm_inf = 
-"//index_norm_inf:\n"
-"unsigned int float_vector1_index_norm_inf_impl(\n"
-"          __global const float * vec,\n"
-"          unsigned int size,\n"
-"          __local float * float_buffer,\n"
-"          __local unsigned int * index_buffer)\n"
-"{\n"
-"  //step 1: fill buffer:\n"
-"  float cur_max = 0.0f;\n"
-"  float tmp;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"  {\n"
-"    tmp = fabs(vec[i]);\n"
-"    if (cur_max < tmp)\n"
-"    {\n"
-"      float_buffer[get_global_id(0)] = tmp;\n"
-"      index_buffer[get_global_id(0)] = i;\n"
-"      cur_max = tmp;\n"
-"    }\n"
-"  }\n"
-"  \n"
-"  //step 2: parallel reduction:\n"
-"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-"  {\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    if (get_global_id(0) < stride)\n"
-"    {\n"
-"      //find the first occurring index\n"
-"      if (float_buffer[get_global_id(0)] < float_buffer[get_global_id(0)+stride])\n"
-"      {\n"
-"        index_buffer[get_global_id(0)] = index_buffer[get_global_id(0)+stride];\n"
-"        float_buffer[get_global_id(0)] = float_buffer[get_global_id(0)+stride];\n"
-"      }\n"
-"      \n"
-"      //index_buffer[get_global_id(0)] = float_buffer[get_global_id(0)] < float_buffer[get_global_id(0)+stride] ? index_buffer[get_global_id(0)+stride] : index_buffer[get_global_id(0)];\n"
-"      //float_buffer[get_global_id(0)] = max(float_buffer[get_global_id(0)], float_buffer[get_global_id(0)+stride]);\n"
-"    }\n"
-"  }\n"
-"  \n"
-"  return index_buffer[0];\n"
-"}\n"
-"\n"
-"__kernel void index_norm_inf(\n"
-"          __global float * vec,\n"
-"          unsigned int size,\n"
-"          __local float * float_buffer,\n"
-"          __local unsigned int * index_buffer,\n"
-"          global unsigned int * result) \n"
-"{ \n"
-"  unsigned int tmp = float_vector1_index_norm_inf_impl(vec, size, float_buffer, index_buffer);\n"
-"  if (get_global_id(0) == 0) *result = tmp;\n"
-"}\n"
-"\n"
-"\n"
-; //vector_align1_index_norm_inf
-
-const char * const vector_align1_mult = 
-"__kernel void mult(\n"
-"          __global const float * vec,\n"
-"          __global const float * fac, \n"
-"          __global float * result,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    result[i] = vec[i] * factor;\n"
-"}\n"
-; //vector_align1_mult
-
-const char * const vector_align1_swap = 
-"////// swap:\n"
-"__kernel void swap(\n"
-"          __global float * vec1,\n"
-"          __global float * vec2,\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  float tmp;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"  {\n"
-"    tmp = vec2[i];\n"
-"    vec2[i] = vec1[i];\n"
-"    vec1[i] = tmp;\n"
-"  }\n"
-"}\n"
-" \n"
-; //vector_align1_swap
-
-const char * const vector_align1_inplace_div_add = 
-"///// divide add:\n"
-"__kernel void inplace_div_add(\n"
-"          __global float * vec1,\n"
-"          __global const float * vec2,\n"
-"          __global const float * fac,   //CPU variant is mapped to mult_add\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec1[i] -= vec2[i] / factor;\n"
-"}\n"
-; //vector_align1_inplace_div_add
-
-const char * const vector_align1_norm_2 = 
-"//helper:\n"
-"void helper_norm2_parallel_reduction( __local float * tmp_buffer )\n"
-"{\n"
-"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-"  {\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    if (get_global_id(0) < stride)\n"
-"      tmp_buffer[get_global_id(0)] += tmp_buffer[get_global_id(0)+stride];\n"
-"  }\n"
-"}\n"
-"\n"
-"////// norm_2\n"
-"float impl_norm_2(\n"
-"          __global const float * vec,\n"
-"          unsigned int start_index,\n"
-"          unsigned int end_index,\n"
-"          __local float * tmp_buffer)\n"
-"{\n"
-"  float tmp = 0;\n"
-"  float vec_entry = 0;\n"
-"  for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"
-"  {\n"
-"    vec_entry = vec[i];\n"
-"    tmp += vec_entry * vec_entry;\n"
-"  }\n"
-"  tmp_buffer[get_local_id(0)] = tmp;\n"
-"  \n"
-"  helper_norm2_parallel_reduction(tmp_buffer);\n"
-"  \n"
-"  return tmp_buffer[0];\n"
-"};\n"
-"\n"
-"__kernel void norm_2(\n"
-"          __global const float * vec,\n"
-"          unsigned int size,\n"
-"          __local float * tmp_buffer,\n"
-"          global float * group_buffer)\n"
-"{\n"
-"  float tmp = impl_norm_2(vec,\n"
-"                          (      get_group_id(0) * size) / get_num_groups(0),\n"
-"                          ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"
-"                          tmp_buffer);\n"
-"  \n"
-"  if (get_local_id(0) == 0)\n"
-"    group_buffer[get_group_id(0)] = tmp;  \n"
-"}\n"
-"\n"
-; //vector_align1_norm_2
-
-const char * const vector_align1_sub = 
-"__kernel void sub(\n"
-"          __global const float * vec1,\n"
-"          __global const float * vec2, \n"
-"          __global float * result,\n"
-"          unsigned int size)\n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    result[i] = vec1[i] - vec2[i];\n"
-"}\n"
-; //vector_align1_sub
-
-const char * const vector_align1_cpu_mul_add = 
-"__kernel void cpu_mul_add(\n"
-"          __global const float * vec1,\n"
-"          float factor,\n"
-"          __global const float * vec2,\n"
-"          __global float * result,\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    result[i] = vec1[i] * factor + vec2[i];\n"
-"}\n"
-; //vector_align1_cpu_mul_add
-
-const char * const vector_align1_vmax = 
-"__kernel void vmax(\n"
-"          __global float * vec1,\n"
-"          __global float * result,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  //parallel reduction on global memory:\n"
-"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-"  {\n"
-"    if (get_global_id(0) < stride)\n"
-"      vec1[get_global_id(0)] = fmax(vec1[get_global_id(0)+stride], vec1[get_global_id(0)]);\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"  }\n"
-"  \n"
-"  if (get_global_id(0) == 0)\n"
-"    *result = vec1[0];  \n"
-"}\n"
-; //vector_align1_vmax
-
-const char * const vector_align1_inner_prod = 
-"//helper:\n"
-"void helper_inner_prod_parallel_reduction( __local float * tmp_buffer )\n"
-"{\n"
-"  for (unsigned int stride = get_local_size(0)/2; stride > 0; stride /= 2)\n"
-"  {\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    if (get_local_id(0) < stride)\n"
-"      tmp_buffer[get_local_id(0)] += tmp_buffer[get_local_id(0)+stride];\n"
-"  }\n"
-"}\n"
-"//////// inner products:\n"
-"float impl_inner_prod(\n"
-"          __global const float * vec1,\n"
-"          __global const float * vec2,\n"
-"          unsigned int start_index,\n"
-"          unsigned int end_index,\n"
-"          __local float * tmp_buffer)\n"
-"{\n"
-"  float tmp = 0;\n"
-"  for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"
-"    tmp += vec1[i] * vec2[i];\n"
-"  tmp_buffer[get_local_id(0)] = tmp;\n"
-"  \n"
-"  helper_inner_prod_parallel_reduction(tmp_buffer);\n"
-"  \n"
-"  return tmp_buffer[0];\n"
-"}\n"
-"__kernel void inner_prod(\n"
-"          __global const float * vec1,\n"
-"          __global const float * vec2,\n"
-"          unsigned int size,\n"
-"          __local float * tmp_buffer,\n"
-"          global float * group_buffer)\n"
-"{\n"
-"  float tmp = impl_inner_prod(vec1,\n"
-"                              vec2,\n"
-"                              (      get_group_id(0) * size) / get_num_groups(0),\n"
-"                              ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"
-"                              tmp_buffer);\n"
-"  \n"
-"  if (get_local_id(0) == 0)\n"
-"    group_buffer[get_group_id(0)] = tmp;\n"
-"  \n"
-"}\n"
-; //vector_align1_inner_prod
-
-const char * const vector_align1_add = 
-"__kernel void add(\n"
-"          __global const float * vec1,\n"
-"          __global const float * vec2, \n"
-"          __global float * result,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    result[i] = vec1[i] + vec2[i];\n"
-"}\n"
-; //vector_align1_add
-
-const char * const vector_align1_plane_rotation = 
-"////// plane rotation: (x,y) <- (\alpha x + \beta y, -\beta x + \alpha y)\n"
-"__kernel void plane_rotation(\n"
-"          __global float * vec1,\n"
-"          __global float * vec2, \n"
-"          float alpha,\n"
-"          float beta,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  float tmp1 = 0;\n"
-"  float tmp2 = 0;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"  {\n"
-"    tmp1 = vec1[i];\n"
-"    tmp2 = vec2[i];\n"
-"    \n"
-"    vec1[i] = alpha * tmp1 + beta * tmp2;\n"
-"    vec2[i] = alpha * tmp2 - beta * tmp1;\n"
-"  }\n"
-"}\n"
-; //vector_align1_plane_rotation
-
-const char * const vector_align1_inplace_mul_sub = 
-"__kernel void inplace_mul_sub(\n"
-"          __global float * vec1,\n"
-"          __global const float * vec2,\n"
-"          __global const float * fac,   //CPU variant is mapped to mult_add\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec1[i] -= vec2[i] * factor;\n"
-"}\n"
-; //vector_align1_inplace_mul_sub
-
-const char * const vector_align1_inplace_mul_add = 
-"__kernel void inplace_mul_add(\n"
-"          __global float * vec1,\n"
-"          __global const float * vec2,\n"
-"          __global const float * fac,\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec1[i] += vec2[i] * factor;\n"
-"}\n"
-; //vector_align1_inplace_mul_add
-
-const char * const vector_align1_mul_add = 
-"__kernel void mul_add(\n"
-"          __global const float * vec1,\n"
-"          __global const float * fac,\n"
-"          __global const float * vec2,\n"
-"          __global float * result,\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    result[i] = vec1[i] * factor + vec2[i];\n"
-"}\n"
-; //vector_align1_mul_add
-
-const char * const vector_align1_cpu_mult = 
-"__kernel void cpu_mult(\n"
-"          __global const float * vec,\n"
-"          float factor, \n"
-"          __global float * result,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    result[i] = vec[i] * factor;\n"
-"}\n"
-; //vector_align1_cpu_mult
-
-const char * const vector_align1_inplace_divide = 
-"__kernel void inplace_divide(\n"
-"          __global float * vec,\n"
-"          __global const float * fac,  //note: CPU variant is mapped to prod_scalar\n"
-"          unsigned int size) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec[i] /= factor;\n"
-"}\n"
-; //vector_align1_inplace_divide
-
-const char * const vector_align1_sqrt_sum = 
-"__kernel void sqrt_sum(\n"
-"          __global float * vec1,\n"
-"          __global float * result,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  //parallel reduction on global memory:  \n"
-"  \n"
-"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-"  {\n"
-"    if (get_global_id(0) < stride)\n"
-"      vec1[get_global_id(0)] += vec1[get_global_id(0)+stride];\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"  }\n"
-"  \n"
-"  if (get_global_id(0) == 0)\n"
-"    *result = sqrt(vec1[0]);\n"
-"  \n"
-"}\n"
-; //vector_align1_sqrt_sum
-
-const char * const vector_align1_cpu_inplace_mul_add = 
-"__kernel void cpu_inplace_mul_add(\n"
-"          __global float * vec1,\n"
-"          __global const float * vec2,\n"
-"          float factor,\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec1[i] += vec2[i] * factor;\n"
-"}\n"
-; //vector_align1_cpu_inplace_mul_add
-
-const char * const vector_align1_inplace_add = 
-"__kernel void inplace_add(\n"
-"          __global float * vec1,\n"
-"          __global const float * vec2,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec1[i] += vec2[i];\n"
-"}\n"
-; //vector_align1_inplace_add
-
-const char * const vector_align1_divide = 
-"// Note: name 'div' is not allowed by the jit-compiler\n"
-"__kernel void divide(\n"
-"          __global const float * vec,\n"
-"          __global const float * fac,  //note: CPU variant is mapped to prod_scalar\n"
-"          __global float * result,\n"
-"          unsigned int size)  \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    result[i] = vec[i] / factor;\n"
-"}\n"
-; //vector_align1_divide
-
-const char * const vector_align1_norm_1 = 
-"//helper:\n"
-"void helper_norm1_parallel_reduction( __local float * tmp_buffer )\n"
-"{\n"
-"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-"  {\n"
-"    barrier(CLK_LOCAL_MEM_FENCE);\n"
-"    if (get_global_id(0) < stride)\n"
-"      tmp_buffer[get_global_id(0)] += tmp_buffer[get_global_id(0)+stride];\n"
-"  }\n"
-"}\n"
-"\n"
-"////// norm_1\n"
-"float impl_norm_1(\n"
-"          __global const float * vec,\n"
-"          unsigned int start_index,\n"
-"          unsigned int end_index,\n"
-"          __local float * tmp_buffer)\n"
-"{\n"
-"  float tmp = 0;\n"
-"  for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"
-"    tmp += fabs(vec[i]);\n"
-"  \n"
-"  tmp_buffer[get_local_id(0)] = tmp;\n"
-"  \n"
-"  helper_norm1_parallel_reduction(tmp_buffer);\n"
-"  \n"
-"  return tmp_buffer[0];\n"
-"};\n"
-"\n"
-"__kernel void norm_1(\n"
-"          __global const float * vec,\n"
-"          unsigned int size,\n"
-"          __local float * tmp_buffer,\n"
-"          global float * group_buffer)\n"
-"{\n"
-"  float tmp = impl_norm_1(vec,\n"
-"                          (      get_group_id(0) * size) / get_num_groups(0),\n"
-"                          ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"
-"                          tmp_buffer);\n"
-"  \n"
-"  if (get_local_id(0) == 0)\n"
-"    group_buffer[get_group_id(0)] = tmp;  \n"
-"}\n"
-"\n"
-; //vector_align1_norm_1
-
-const char * const vector_align1_clear = 
-"__kernel void clear(\n"
-"          __global float * vec,\n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec[i] = 0;\n"
-"}\n"
-; //vector_align1_clear
-
-const char * const vector_align1_cpu_inplace_mult = 
-"__kernel void cpu_inplace_mult(\n"
-"          __global float * vec,\n"
-"          float factor, \n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec[i] *= factor;\n"
-"}\n"
-; //vector_align1_cpu_inplace_mult
-
-const char * const vector_align1_inplace_mult = 
-"__kernel void inplace_mult(\n"
-"          __global float * vec,\n"
-"          __global const float * fac, \n"
-"          unsigned int size) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec[i] *= factor;\n"
-"}\n"
-; //vector_align1_inplace_mult
-
-const char * const vector_align1_sum = 
-"__kernel void sum(\n"
-"          __global float * vec1,\n"
-"          __global float * result) \n"
-"{ \n"
-"  //parallel reduction on global memory:  \n"
-"  \n"
-"  for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-"  {\n"
-"    if (get_global_id(0) < stride)\n"
-"      vec1[get_global_id(0)] += vec1[get_global_id(0)+stride];\n"
-"    barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"  }\n"
-"  \n"
-"  if (get_global_id(0) == 0)\n"
-"    *result = vec1[0];  \n"
-"}\n"
-; //vector_align1_sum
-
-const char * const vector_align1_inplace_div_sub = 
-"///// divide substract:\n"
-"__kernel void inplace_div_sub(\n"
-"          __global float * vec1,\n"
-"          __global const float * vec2,\n"
-"          __global const float * fac,   //CPU variant is mapped to mult_add\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    vec1[i] -= vec2[i] / factor;\n"
-"}\n"
-; //vector_align1_inplace_div_sub
-
-const char * const vector_align1_diag_precond = 
-"__kernel void diag_precond(\n"
-"          __global const float * diag_A_inv, \n"
-"          __global float * x, \n"
-"          unsigned int size) \n"
-"{ \n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    x[i] *= diag_A_inv[i];\n"
-"}\n"
-; //vector_align1_diag_precond
-
-const char * const vector_align1_mul_sub = 
-"///// multiply subtract:\n"
-"__kernel void mul_sub(\n"
-"          __global const float * vec1,\n"
-"          __global const float * fac,\n"
-"          __global const float * vec2,\n"
-"          __global float * result,\n"
-"          unsigned int size\n"
-"          ) \n"
-"{ \n"
-"  float factor = *fac;\n"
-"  for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-"    result[i] = vec1[i] * factor - vec2[i];\n"
-"}\n"
-; //vector_align1_mul_sub
-
-  }  //namespace kernels
- }  //namespace linalg
-}  //namespace viennacl
-#endif
diff --git a/viennacl/linalg/matrix_operations.hpp b/viennacl/linalg/matrix_operations.hpp
index b7457dd..a15e7ab 100644
--- a/viennacl/linalg/matrix_operations.hpp
+++ b/viennacl/linalg/matrix_operations.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_MATRIX_OPERATIONS_HPP_
-#define _VIENNACL_MATRIX_OPERATIONS_HPP_
+#ifndef VIENNACL_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_MATRIX_OPERATIONS_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file matrix_operations.hpp
     @brief Implementations of dense matrix related operations. also matrix-vector products.
@@ -26,6 +28,10 @@
 #include "viennacl/scalar.hpp"
 #include "viennacl/vector.hpp"
 #include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/predicate.hpp"
+#include "viennacl/traits/size.hpp"
+#include "viennacl/traits/start.hpp"
+#include "viennacl/traits/handle.hpp"
 #include "viennacl/tools/matrix_kernel_class_deducer.hpp"
 #include "viennacl/tools/matrix_prod_kernel_class_deducer.hpp"
 #include "viennacl/linalg/kernels/vector_kernels.h"
@@ -70,7 +76,7 @@ namespace viennacl
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "add");
       assert( (mat1.internal_size() == mat2.internal_size())
              && "Operands must have same dimension and memory layout in this version of ViennaCL!");
-      unsigned int size = std::min(mat1.internal_size(), mat2.internal_size());
+      cl_uint size = std::min(mat1.internal_size(), mat2.internal_size());
 
       viennacl::ocl::enqueue(k(mat1, mat2, result, size));        
     }
@@ -79,31 +85,101 @@ namespace viennacl
     *
     * This is the implementation of the convenience expression result += mat1;
     *
+    * @param mat2   The addend (either a matrix or a matrix_range)
+    * @param result The resulting matrix  (either a matrix or a matrix_range)
+    */
+    template <typename M1, typename M2>
+    typename viennacl::enable_if< viennacl::is_matrix<M1>::value
+                                  && viennacl::is_matrix<M2>::value
+                                >::type
+    inplace_add(M1 & result, M2 const & mat2)
+    {
+      assert(viennacl::traits::size1(result) == viennacl::traits::size1(mat2));
+      assert(viennacl::traits::size2(result) == viennacl::traits::size2(mat2));
+
+      typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< M1 >::ResultType    KernelClass;
+      
+      size_t block_size = 15;
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "inplace_add");
+      k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(viennacl::traits::size1(result), block_size));
+      k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(viennacl::traits::size2(result), block_size));
+      k.local_work_size(0, block_size);
+      k.local_work_size(1, block_size);
+      
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(result),
+                                       cl_uint(viennacl::traits::start1(result)), cl_uint(viennacl::traits::start2(result)), 
+                                       cl_uint(viennacl::traits::size1(result)), cl_uint(viennacl::traits::size2(result)),
+                                       cl_uint(viennacl::traits::internal_size1(result)), cl_uint(viennacl::traits::internal_size2(result)),
+                                viennacl::traits::handle(mat2), 
+                                      cl_uint(viennacl::traits::start1(mat2)), cl_uint(viennacl::traits::start2(mat2)), 
+                                      cl_uint(viennacl::traits::size1(mat2)), cl_uint(viennacl::traits::size2(mat2)),
+                                      cl_uint(viennacl::traits::internal_size1(mat2)), cl_uint(viennacl::traits::internal_size2(mat2))
+                              )
+                            );
+    }
+
+    /** @brief Adds a dense matrix to another
+    *
+    * This is the implementation of the convenience expression result += mat1;
+    *
     * @param mat1   The left hand side operand
     * @param mat2   The right hand side operand
     * @param result The resulting matrix
     */
-    template<class TYPE, typename F, unsigned int ALIGNMENT>
-    void inplace_add(viennacl::matrix<TYPE, F, ALIGNMENT> & result, 
-                     const viennacl::matrix<TYPE, F, ALIGNMENT> & mat2)
+    /*
+    template <typename MatrixType>
+    void inplace_add(viennacl::matrix_range<MatrixType> & result, 
+                     const viennacl::matrix_range<MatrixType> & mat2)
     {
       assert(result.size1() == mat2.size1());
       assert(result.size2() == mat2.size2());
 
-      typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<TYPE, F, ALIGNMENT> >::ResultType    KernelClass;
+      typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< MatrixType >::ResultType    KernelClass;
+      
+      size_t block_size = 15;
       
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "inplace_add");
-      assert( (result.internal_size() == mat2.internal_size())
-             && "Operands must have same dimension and memory layout in this version of ViennaCL!");
-      unsigned int size = std::min(result.internal_size(), mat2.internal_size());
+      k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(result.size1(), block_size));
+      k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(result.size2(), block_size));
+      k.local_work_size(0, block_size);
+      k.local_work_size(1, block_size);
 
-      viennacl::ocl::enqueue(k(result, mat2, size));        
-    }
+      viennacl::ocl::enqueue(k(result.get(), cl_uint(result.start1()), cl_uint(result.start2()), 
+                                             cl_uint(result.size1()), cl_uint(result.size2()),
+                                             cl_uint(result.get().internal_size1()), cl_uint(result.get().internal_size2()),
+                                mat2.get(), cl_uint(mat2.start1()), cl_uint(mat2.start2()),
+                                            cl_uint(mat2.size1()), cl_uint(mat2.size2()),
+                                            cl_uint(mat2.get().internal_size1()), cl_uint(mat2.get().internal_size2())
+                              )
+                            );
+    } */
 
+    /** @brief Adds a dense matrix to another
+    *
+    * This is the implementation of the convenience expression result += mat1;
+    *
+    * @param mat1   The left hand side operand
+    * @param mat2   The right hand side operand
+    * @param result The resulting matrix
+    */
+    /*
+    template<class TYPE, typename F, unsigned int ALIGNMENT>
+    void inplace_add(viennacl::matrix<TYPE, F, ALIGNMENT> & result, 
+                     const viennacl::matrix_range<viennacl::matrix<TYPE, F, ALIGNMENT> > & mat2)
+    {
+      viennacl::range r1(0, result.size1());
+      viennacl::range r2(0, result.size2());
+      viennacl::matrix_range<viennacl::matrix<TYPE, F, ALIGNMENT> > result_wrap(result, r1, r2);
+      inplace_add(result_wrap, mat2);
+    } */
 
-    /** @brief Adds two dense matrices and writes the result to a third matrix
+
+
+
+    /** @brief Subtracts two dense matrices and writes the result to a third matrix
     *
-    * This is the implementation of the convenience expression result = mat1 + mat2;
+    * This is the implementation of the convenience expression result = mat1 - mat2;
     *
     * @param mat1   The left hand side operand
     * @param mat2   The right hand side operand
@@ -124,17 +200,16 @@ namespace viennacl
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "sub");
       assert( (mat1.internal_size() == mat2.internal_size())
              && "Operands must have same dimension and memory layout in this version of ViennaCL!");
-      unsigned int size = std::min(mat1.internal_size(), mat2.internal_size());
+      cl_uint size = std::min(mat1.internal_size(), mat2.internal_size());
 
       viennacl::ocl::enqueue(k(mat1, mat2, result, size));        
     }
 
-    /** @brief Adds a dense matrix to another
+    /** @brief Subtracts a dense matrix from another
     *
-    * This is the implementation of the convenience expression result += mat1;
+    * This is the implementation of the convenience expression mat1 -= mat2;
     *
-    * @param mat1   The left hand side operand
-    * @param mat2   The right hand side operand
+    * @param mat2   The matrix to be subtracted
     * @param result The resulting matrix
     */
     template<class TYPE, typename F, unsigned int ALIGNMENT>
@@ -149,18 +224,17 @@ namespace viennacl
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "inplace_sub");
       assert( (result.internal_size() == mat2.internal_size())
              && "Operands must have same dimension and memory layout in this version of ViennaCL!");
-      unsigned int size = std::min(result.internal_size(), mat2.internal_size());
+      cl_uint size = std::min(result.internal_size(), mat2.internal_size());
 
       viennacl::ocl::enqueue(k(result, mat2, size));        
     }
 
     /** @brief Multiplies a dense matrix by a scalar
     *
-    * This is the implementation of the convenience expression result += mat1;
+    * This is the implementation of the convenience expression matrix *= val;
     *
-    * @param mat1   The left hand side operand
-    * @param mat2   The right hand side operand
-    * @param result The resulting matrix
+    * @param result The matrix to be manipulated
+    * @param val    The CPU scalar by which all entries of the matrix are multiplied
     */
     template<class SCALARTYPE, typename F, unsigned int ALIGNMENT>
     void inplace_mult(viennacl::matrix<SCALARTYPE, F, ALIGNMENT> & result, 
@@ -169,19 +243,16 @@ namespace viennacl
       typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType    KernelClass;
       
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "cpu_inplace_mult");
-      unsigned int size = result.internal_size();
-
-      viennacl::ocl::enqueue(k(result, val, size));
+      viennacl::ocl::enqueue(k(result, val, cl_uint(result.internal_size())));
     }
 
 
     /** @brief Multiplies a dense matrix by a scalar
     *
-    * This is the implementation of the convenience expression result += mat1;
+    * This is the implementation of the convenience expression matrix *= val;
     *
-    * @param mat1   The left hand side operand
-    * @param mat2   The right hand side operand
-    * @param result The resulting matrix
+    * @param result The matrix to be manipulated
+    * @param val    The scalar by which all entries of the matrix are multiplied
     */
     template<class SCALARTYPE, typename F, unsigned int ALIGNMENT>
     void inplace_mult(viennacl::matrix<SCALARTYPE, F, ALIGNMENT> & result, 
@@ -190,20 +261,17 @@ namespace viennacl
       typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType    KernelClass;
       
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "inplace_mult");
-      unsigned int size = result.internal_size();
-
-      viennacl::ocl::enqueue(k(result, val, size));
+      viennacl::ocl::enqueue(k(result, val, cl_uint(result.internal_size())));
     }
 
 
 
     /** @brief Multiplies a dense matrix by a scalar
     *
-    * This is the implementation of the convenience expression result += mat1;
+    * This is the implementation of the convenience expression matrix /= val;
     *
-    * @param mat1   The left hand side operand
-    * @param mat2   The right hand side operand
-    * @param result The resulting matrix
+    * @param result The matrix to be manipulated
+    * @param val    The scalar by which all entries of the matrix are divided
     */
     template<class SCALARTYPE, typename F, unsigned int ALIGNMENT>
     void inplace_divide(viennacl::matrix<SCALARTYPE, F, ALIGNMENT> & result, 
@@ -258,7 +326,8 @@ namespace viennacl
       
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "vec_mul");
       viennacl::ocl::enqueue(
-                             k(mat, mat.size1(), mat.size2(), mat.internal_size1(), mat.internal_size2(), vec, result));    
+                             k(mat, cl_uint(mat.size1()), cl_uint(mat.size2()),
+                                    cl_uint(mat.internal_size1()), cl_uint(mat.internal_size2()), vec, result));    
     }
 
 
@@ -322,7 +391,8 @@ namespace viennacl
       
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "trans_vec_mul");
       
-      viennacl::ocl::enqueue(k(mat, mat.size1(), mat.size2(), mat.internal_size1(), mat.internal_size2(), vec, result));        
+      viennacl::ocl::enqueue(k(mat, cl_uint(mat.size1()), cl_uint(mat.size2()),
+                                    cl_uint(mat.internal_size1()), cl_uint(mat.internal_size2()), vec, result));        
     }
 
 
@@ -365,14 +435,73 @@ namespace viennacl
       k.local_work_size(1, block_size);
       
       viennacl::ocl::enqueue(
-                             k(A, A.size1(), A.size2(), A.internal_size1(), A.internal_size2(),
-                               B, B.size1(), B.size2(), B.internal_size1(), B.internal_size2(),
-                               C, C.size1(), C.size2(), C.internal_size1(), C.internal_size2(),
+                             k(A, cl_uint(0), cl_uint(0), 
+                                  cl_uint(A.size1()), cl_uint(A.size2()),
+                                  cl_uint(A.internal_size1()), cl_uint(A.internal_size2()),
+                               B, cl_uint(0), cl_uint(0),
+                                  cl_uint(B.size1()), cl_uint(B.size2()),
+                                  cl_uint(B.internal_size1()), cl_uint(B.internal_size2()),
+                               C, cl_uint(0), cl_uint(0), 
+                                  cl_uint(C.size1()), cl_uint(C.size2()),
+                                  cl_uint(C.internal_size1()), cl_uint(C.internal_size2()),
                                viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
                                viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) ));        
     }
 
 
+    /** @brief Carries out matrix-matrix multiplication for submatrices
+    *
+    * Implementation of C = prod(A, B); for submatrices
+    *
+    */
+    template<typename T1, typename T2, typename T3>
+    void prod_impl(const viennacl::matrix_range<T1> & A, 
+                    const viennacl::matrix_range<T2> & B, 
+                          viennacl::matrix_range<T3> & C, 
+                          int block_size = 15) // [JW] added ability to set block size from outside ..
+    {
+      typedef typename T1::value_type::value_type   value_type;
+      
+      assert(A.size1() == C.size1());
+      assert(A.size2() == B.size1());
+      assert(B.size2() == C.size2());
+      // Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead
+      assert(C.get().handle() != A.get().handle() 
+             && C.get().handle() != B.get().handle()
+             && "No direct inplace matrix-matrix product possible. Introduce a temporary!");
+      
+      typedef typename viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< T1, T2, T3 >::ResultType    KernelClass;
+      KernelClass::init();
+      
+      //std::cout << "KernelClass::program_name() : " << KernelClass::program_name() << std::endl;
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "prod_AA");
+      
+      /*k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size1() / 2, block_size / 2));
+      k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size2() / 2, block_size / 2));
+      k.local_work_size(0, block_size / 2);
+      k.local_work_size(1, block_size / 2);*/
+      
+      k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size1(), block_size));
+      k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size2(), block_size));
+      k.local_work_size(0, block_size);
+      k.local_work_size(1, block_size);
+      
+      viennacl::ocl::enqueue(
+          k(A.get(), cl_uint(A.start1()), cl_uint(A.start2()),
+                     cl_uint(A.size1()), cl_uint(A.size2()),
+                     cl_uint(A.get().internal_size1()), cl_uint(A.get().internal_size2()),
+            B.get(), cl_uint(B.start1()), cl_uint(B.start2()),
+                     cl_uint(B.size1()), cl_uint(B.size2()),
+                     cl_uint(B.get().internal_size1()), cl_uint(B.get().internal_size2()),
+            C.get(), cl_uint(C.start1()), cl_uint(C.start2()),
+                     cl_uint(C.size1()), cl_uint(C.size2()),
+                     cl_uint(C.get().internal_size1()), cl_uint(C.get().internal_size2()),
+            viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size),
+            viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size) ));        
+    }
+
+
+
     /** @brief Carries out matrix-matrix multiplication
     *
     * Implementation of C = prod(trans(A), B);
@@ -408,14 +537,74 @@ namespace viennacl
       k.local_work_size(0, block_size);
       k.local_work_size(1, block_size);
       viennacl::ocl::enqueue(
-                             k(A.lhs(), A.lhs().size1(), A.lhs().size2(), A.lhs().internal_size1(), A.lhs().internal_size2(),
-                               B, B.size1(), B.size2(), B.internal_size1(), B.internal_size2(),
-                               C, C.size1(), C.size2(), C.internal_size1(), C.internal_size2(),
-                               viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
-                               viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) ));        
+              k(A.lhs(), cl_uint(0), cl_uint(0), 
+                         cl_uint(A.lhs().size1()), cl_uint(A.lhs().size2()),
+                         cl_uint(A.lhs().internal_size1()), cl_uint(A.lhs().internal_size2()),
+                B, cl_uint(0), cl_uint(0),
+                   cl_uint(B.size1()), cl_uint(B.size2()),
+                   cl_uint(B.internal_size1()), cl_uint(B.internal_size2()),
+                C, cl_uint(0), cl_uint(0),
+                   cl_uint(C.size1()), cl_uint(C.size2()),
+                   cl_uint(C.internal_size1()), cl_uint(C.internal_size2()),
+                viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
+                viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) )
+                            );        
     }
 
 
+    /** @brief Carries out matrix-matrix multiplication for submatrices
+    *
+    * Implementation of C = prod(trans(A), B); for submatrices
+    *
+    */
+    template <typename M1, typename M2, typename M3>
+    void prod_impl(const viennacl::matrix_expression< const matrix_range<M1>,
+                                                      const matrix_range<M1>,
+                                                      op_trans> & A_trans, 
+                    const viennacl::matrix_range<M2> & B, 
+                          viennacl::matrix_range<M3> & C)
+    {
+      typedef typename M1::value_type::value_type    value_type;
+      assert(A_trans.size2() == C.size1());
+      assert(A_trans.size1() == B.size1());
+      assert(B.size2() == C.size2());
+      // Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead
+      assert(C.get().handle() != A_trans.lhs().get().handle() 
+             && C.get().handle() != B.get().handle()
+             && "No direct inplace matrix-matrix product possible. Introduce a temporary!");
+      
+      int block_size = 15;
+
+      typedef typename viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< M1, M2, M3 >::ResultType    KernelClass;
+      KernelClass::init();
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "prod_TA");
+      
+      k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size1(), block_size));
+      k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size2(), block_size));
+      
+      k.local_work_size(0, block_size);
+      k.local_work_size(1, block_size);
+      
+      const matrix_range<M1> & A = A_trans.lhs();
+      viennacl::ocl::enqueue(
+              k(A.get(), cl_uint(A.start1()), cl_uint(A.start2()),
+                         cl_uint(A.size1()), cl_uint(A.size2()),
+                         cl_uint(A.get().internal_size1()), cl_uint(A.get().internal_size2()),
+                B.get(), cl_uint(B.start1()), cl_uint(B.start2()), 
+                         cl_uint(B.size1()), cl_uint(B.size2()),
+                         cl_uint(B.get().internal_size1()), cl_uint(B.get().internal_size2()),
+                C.get(), cl_uint(C.start1()), cl_uint(C.start2()),
+                         cl_uint(C.size1()), cl_uint(C.size2()),
+                         cl_uint(C.get().internal_size1()), cl_uint(C.get().internal_size2()),
+                viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size),
+                viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size) )
+                            );        
+    }
+
+
+
+
     /** @brief Carries out matrix-matrix multiplication
     *
     * Implementation of C = prod(A, trans(B));
@@ -451,15 +640,78 @@ namespace viennacl
       k.local_work_size(0, block_size);
       k.local_work_size(1, block_size);
       viennacl::ocl::enqueue(
-                             k(A, A.size1(), A.size2(), A.internal_size1(), A.internal_size2(),
-                               B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2(),
-                               C, C.size1(), C.size2(), C.internal_size1(), C.internal_size2(),
-                               viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
-                               viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) ));        
+              k(A, cl_uint(0), cl_uint(0),
+                   cl_uint(A.size1()), cl_uint(A.size2()),
+                   cl_uint(A.internal_size1()), cl_uint(A.internal_size2()),
+                B.lhs(), cl_uint(0), cl_uint(0),
+                         cl_uint(B.lhs().size1()), cl_uint(B.lhs().size2()),
+                         cl_uint(B.lhs().internal_size1()), cl_uint(B.lhs().internal_size2()),
+                C, cl_uint(0), cl_uint(0),
+                   cl_uint(C.size1()), cl_uint(C.size2()),
+                   cl_uint(C.internal_size1()), cl_uint(C.internal_size2()),
+                viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
+                viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) )
+                            );        
+    }
+
+
+    /** @brief Carries out matrix-matrix multiplication for submatrices
+    *
+    * Implementation of C = prod(A, trans(B)); for submatrices
+    *
+    */
+    template <typename M1, typename M2, typename M3>
+    void prod_impl(const viennacl::matrix_range<M1> & A, 
+                   const viennacl::matrix_expression< const matrix_range<M2>,
+                                                      const matrix_range<M2>,
+                                                      op_trans> & B_trans,
+                   viennacl::matrix_range<M3> & C)
+    {
+      typedef typename M1::value_type::value_type    value_type;
+      assert(A.size1() == C.size1());
+      assert(A.size2() == B_trans.size2());
+      assert(B_trans.size1() == C.size2());
+      // Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead
+      assert(C.get().handle() != A.get().handle() 
+             && C.get().handle() != B_trans.lhs().get().handle()
+             && "No direct inplace matrix-matrix product possible. Introduce a temporary!");
+      
+      int block_size = 15;
+
+      typedef typename viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< M1, M2, M3 >::ResultType    KernelClass;
+      KernelClass::init();
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "prod_AT");
+      
+      k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size1(), block_size));
+      k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size2(), block_size));
+      
+      k.local_work_size(0, block_size);
+      k.local_work_size(1, block_size);
+      const matrix_range<M2> & B = B_trans.lhs();
+      viennacl::ocl::enqueue(
+              k(A.get(), cl_uint(A.start1()), cl_uint(A.start2()),
+                         cl_uint(A.size1()), cl_uint(A.size2()),
+                         cl_uint(A.get().internal_size1()), cl_uint(A.get().internal_size2()),
+                B.get(), cl_uint(B.start1()), cl_uint(B.start2()),
+                         cl_uint(B.size1()), cl_uint(B.size2()),
+                         cl_uint(B.get().internal_size1()), cl_uint(B.get().internal_size2()),
+                C.get(), cl_uint(C.start1()), cl_uint(C.start2()),
+                         cl_uint(C.size1()), cl_uint(C.size2()),
+                         cl_uint(C.get().internal_size1()), cl_uint(C.get().internal_size2()),
+                viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size),
+                viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size) )
+                            );        
     }
 
 
 
+
+
+
+
+
+
     /** @brief Carries out matrix-matrix multiplication
     *
     * Implementation of C = prod(trans(A), trans(B));
@@ -497,14 +749,72 @@ namespace viennacl
       k.local_work_size(0, block_size);
       k.local_work_size(1, block_size);
       viennacl::ocl::enqueue(
-                             k(A.lhs(), A.lhs().size1(), A.lhs().size2(), A.lhs().internal_size1(), A.lhs().internal_size2(),
-                               B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2(),
-                               C, C.size1(), C.size2(), C.internal_size1(), C.internal_size2(),
-                               viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
-                               viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) ));        
+            k(A.lhs(), cl_uint(0), cl_uint(0), 
+                       cl_uint(A.lhs().size1()), cl_uint(A.lhs().size2()),
+                       cl_uint(A.lhs().internal_size1()), cl_uint(A.lhs().internal_size2()),
+              B.lhs(), cl_uint(0), cl_uint(0), 
+                       cl_uint(B.lhs().size1()), cl_uint(B.lhs().size2()),
+                       cl_uint(B.lhs().internal_size1()), cl_uint(B.lhs().internal_size2()),
+              C, cl_uint(0), cl_uint(0), 
+                 cl_uint(C.size1()), cl_uint(C.size2()),
+                 cl_uint(C.internal_size1()), cl_uint(C.internal_size2()),
+              viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
+              viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) )
+                            );        
     }
 
 
+    /** @brief Carries out matrix-matrix multiplication for submatrices
+    *
+    * Implementation of C = prod(trans(A), trans(B)); for submatrices
+    *
+    */
+    template <typename M1, typename M2, typename M3>
+    void prod_impl(const viennacl::matrix_expression< const matrix_range<M1>,
+                                                      const matrix_range<M1>,
+                                                      op_trans> & A_trans,
+                   const viennacl::matrix_expression< const matrix_range<M2>,
+                                                      const matrix_range<M2>,
+                                                      op_trans> & B_trans,
+                   viennacl::matrix_range<M3> & C)
+    {
+      typedef typename M1::value_type::value_type    value_type;
+      assert(A_trans.size2() == C.size1());
+      assert(A_trans.size1() == B_trans.size2());
+      assert(B_trans.size1() == C.size2());
+      // Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead
+      assert(C.get().handle() != A_trans.lhs().get().handle() 
+             && C.get().handle() != B_trans.lhs().get().handle()
+             && "No direct inplace matrix-matrix product possible. Introduce a temporary!");
+      
+      int block_size = 15;
+
+      typedef typename viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< M1, M2, M3 >::ResultType    KernelClass;
+      KernelClass::init();
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "prod_TT");
+      
+      k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size1(), block_size));
+      k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size2(), block_size));
+      
+      k.local_work_size(0, block_size);
+      k.local_work_size(1, block_size);
+      const matrix_range<M1> & A = A_trans.lhs();
+      const matrix_range<M2> & B = B_trans.lhs();
+      viennacl::ocl::enqueue(
+            k(A.get(), cl_uint(A.start1()), cl_uint(A.start2()),
+                       cl_uint(A.size1()), cl_uint(A.size2()),
+                       cl_uint(A.get().internal_size1()), cl_uint(A.get().internal_size2()),
+              B.get(), cl_uint(B.start1()), cl_uint(B.start2()),
+                       cl_uint(B.size1()), cl_uint(B.size2()),
+                       cl_uint(B.get().internal_size1()), cl_uint(B.get().internal_size2()),
+              C.get(), cl_uint(C.start1()), cl_uint(C.start2()),
+                       cl_uint(C.size1()), cl_uint(C.size2()),
+                       cl_uint(C.get().internal_size1()), cl_uint(C.get().internal_size2()),
+              viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size),
+              viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size) )
+                            );        
+    }
 
 
 
@@ -552,7 +862,8 @@ namespace viennacl
       
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "rank1_update");
 
-      viennacl::ocl::enqueue(k(mat1, mat1.size1(), mat1.size2(), mat1.internal_size1(), mat1.internal_size2(), vec1, vec2));        
+      viennacl::ocl::enqueue(k(mat1, cl_uint(mat1.size1()), cl_uint(mat1.size2()),
+                                     cl_uint(mat1.internal_size1()), cl_uint(mat1.internal_size2()), vec1, vec2));        
     }
     
     
@@ -578,7 +889,8 @@ namespace viennacl
       
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "scaled_rank1_update");
 
-      viennacl::ocl::enqueue(k(mat1, mat1.size1(), mat1.size2(), mat1.internal_size1(), mat1.internal_size2(), 
+      viennacl::ocl::enqueue(k(mat1, cl_uint(mat1.size1()), cl_uint(mat1.size2()),
+                                     cl_uint(mat1.internal_size1()), cl_uint(mat1.internal_size2()), 
                                                            val, vec1, vec2));        
     }
     
diff --git a/viennacl/linalg/norm_1.hpp b/viennacl/linalg/norm_1.hpp
index c8a4c8f..5805be6 100644
--- a/viennacl/linalg/norm_1.hpp
+++ b/viennacl/linalg/norm_1.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_LINALG_NORM_1_HPP_
+#define VIENNACL_LINALG_NORM_1_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_NORM_1_HPP_
-#define _VIENNACL_NORM_1_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file norm_1.hpp
     @brief Generic interface for the l^1-norm. See viennacl/linalg/vector_operations.hpp for implementations.
@@ -21,7 +23,9 @@
 
 #include <math.h>    //for sqrt()
 #include "viennacl/forwards.h"
-#include "tag_of.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/enable_if.hpp"
+#include "viennacl/meta/tag_of.hpp"
 
 namespace viennacl
 {
@@ -40,8 +44,8 @@ namespace viennacl
     template< typename VectorT >
     typename VectorT::value_type
     norm_1(VectorT const& vector, 
-         typename viennacl::tools::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT >::type >::value
+                                     >::type* dummy = 0)
     {
       // std::cout << "ublas .. " << std::endl;
       return boost::numeric::ublas::norm_1(vector);
@@ -55,8 +59,8 @@ namespace viennacl
     template< typename VectorT>
     typename VectorT::value_type
     norm_1(VectorT const& v1,
-         typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value
+                                     >::type* dummy = 0)
     {
       //std::cout << "stl .. " << std::endl;
       typename VectorT::value_type result = 0;
@@ -74,8 +78,8 @@ namespace viennacl
                                  const viennacl::vector<ScalarType, alignment>,
                                  viennacl::op_norm_1 >
     norm_1(viennacl::vector<ScalarType, alignment> const & vector, 
-         typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment> >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment> >::type >::value
+                                     >::type* dummy = 0)
     {
       return viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment>, 
                                           const viennacl::vector<ScalarType, alignment>,
diff --git a/viennacl/linalg/norm_2.hpp b/viennacl/linalg/norm_2.hpp
index e375fea..d046a18 100644
--- a/viennacl/linalg/norm_2.hpp
+++ b/viennacl/linalg/norm_2.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_LINALG_NORM_2_HPP_
+#define VIENNACL_LINALG_NORM_2_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_NORM_2_HPP_
-#define _VIENNACL_NORM_2_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file norm_2.hpp
     @brief Generic interface for the l^2-norm. See viennacl/linalg/vector_operations.hpp for implementations.
@@ -21,7 +23,9 @@
 
 #include <math.h>    //for sqrt()
 #include "viennacl/forwards.h"
-#include "tag_of.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/enable_if.hpp"
+#include "viennacl/meta/tag_of.hpp"
 
 namespace viennacl
 {
@@ -48,8 +52,8 @@ namespace viennacl
       template< typename VectorT >
       typename VectorT::value_type
       norm_2(VectorT const& v, 
-          typename viennacl::tools::enable_if< viennacl::is_mtl4< typename viennacl::traits::tag_of< VectorT >::type >::value
-                                              >::type* dummy = 0)
+          typename viennacl::enable_if< viennacl::is_mtl4< typename viennacl::traits::tag_of< VectorT >::type >::value
+                                      >::type* dummy = 0)
       {
         // std::cout << "mtl4 .. " << std::endl;
         return mtl::two_norm(v);
@@ -79,8 +83,8 @@ namespace viennacl
       template< typename VectorT >
       typename VectorT::RealScalar
       norm_2(VectorT const& v, 
-          typename viennacl::tools::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< VectorT >::type >::value
-                                              >::type* dummy = 0)
+          typename viennacl::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< VectorT >::type >::value
+                                      >::type* dummy = 0)
       {
         // std::cout << "ublas .. " << std::endl;
         return v.norm();
@@ -105,8 +109,8 @@ namespace viennacl
       template< typename VectorT >
       typename VectorT::value_type
       norm_2(VectorT const& v, 
-          typename viennacl::tools::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT >::type >::value
-                                              >::type* dummy = 0)
+          typename viennacl::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT >::type >::value
+                                      >::type* dummy = 0)
       {
         // std::cout << "ublas .. " << std::endl;
         return boost::numeric::ublas::norm_2(v);
@@ -121,8 +125,8 @@ namespace viennacl
     template< typename VectorT>
     typename VectorT::value_type
     norm_2(VectorT const& v1,
-         typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value
+                                     >::type* dummy = 0)
     {
       //std::cout << "stl .. " << std::endl;
       typename VectorT::value_type result = 0;
@@ -140,8 +144,8 @@ namespace viennacl
                                  const viennacl::vector<ScalarType, alignment>,
                                  viennacl::op_norm_2 >
     norm_2(viennacl::vector<ScalarType, alignment> const & v, 
-         typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment> >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment> >::type >::value
+                                     >::type* dummy = 0)
     {
        //std::cout << "viennacl .. " << std::endl;
       return viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment>, 
diff --git a/viennacl/linalg/norm_inf.hpp b/viennacl/linalg/norm_inf.hpp
index 695ab9f..a5ac852 100644
--- a/viennacl/linalg/norm_inf.hpp
+++ b/viennacl/linalg/norm_inf.hpp
@@ -1,27 +1,31 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_LINALG_NORM_INF_HPP_
+#define VIENNACL_LINALG_NORM_INF_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_NORM_INF_HPP_
-#define _VIENNACL_NORM_INF_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
 
-/** @file norm_1.hpp
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file norm_inf.hpp
     @brief Generic interface for the l^infty-norm. See viennacl/linalg/vector_operations.hpp for implementations.
 */
 
 #include <math.h>    //for sqrt()
 #include "viennacl/forwards.h"
-#include "tag_of.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/enable_if.hpp"
+#include "viennacl/meta/tag_of.hpp"
 
 namespace viennacl
 {
@@ -40,7 +44,7 @@ namespace viennacl
     template< typename VectorT >
     typename VectorT::value_type
     norm_inf(VectorT const& v1, 
-         typename viennacl::tools::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT >::type >::value
+         typename viennacl::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT >::type >::value
                                             >::type* dummy = 0)
     {
       // std::cout << "ublas .. " << std::endl;
@@ -55,7 +59,7 @@ namespace viennacl
     template< typename VectorT>
     typename VectorT::value_type
     norm_inf(VectorT const& v1,
-         typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value
+         typename viennacl::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value
                                             >::type* dummy = 0)
     {
       //std::cout << "stl .. " << std::endl;
@@ -77,7 +81,7 @@ namespace viennacl
                                  const viennacl::vector<ScalarType, alignment>,
                                  viennacl::op_norm_inf >
     norm_inf(viennacl::vector<ScalarType, alignment> const & v1, 
-         typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment> >::type >::value
+         typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment> >::type >::value
                                             >::type* dummy = 0)
     {
        //std::cout << "viennacl .. " << std::endl;
diff --git a/viennacl/linalg/prod.hpp b/viennacl/linalg/prod.hpp
index f1e41b2..d5965fc 100644
--- a/viennacl/linalg/prod.hpp
+++ b/viennacl/linalg/prod.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_PROD_HPP_
-#define _VIENNACL_PROD_HPP_
+#ifndef VIENNACL_LINALG_PROD_HPP_
+#define VIENNACL_LINALG_PROD_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file prod.hpp
     @brief Generic interface for matrix-vector and matrix-matrix products. 
@@ -22,7 +24,9 @@
 */
 
 #include "viennacl/forwards.h"
-#include "tag_of.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/enable_if.hpp"
+#include "viennacl/meta/tag_of.hpp"
 #include <vector>
 #include <map>
 
@@ -42,8 +46,8 @@ namespace viennacl
     template< typename MatrixT, typename VectorT >
     VectorT 
     prod(MatrixT const& matrix, VectorT const& vector, 
-         typename viennacl::tools::enable_if< viennacl::is_mtl4< typename viennacl::traits::tag_of< MatrixT >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_mtl4< typename viennacl::traits::tag_of< MatrixT >::type >::value
+                                     >::type* dummy = 0)
     {
       // std::cout << "mtl4 .. " << std::endl;
       return VectorT(matrix * vector);
@@ -57,8 +61,8 @@ namespace viennacl
     template< typename MatrixT, typename VectorT >
     VectorT 
     prod(MatrixT const& matrix, VectorT const& vector, 
-         typename viennacl::tools::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< MatrixT >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< MatrixT >::type >::value
+                                     >::type* dummy = 0)
     {
       // std::cout << "ublas .. " << std::endl;
       return matrix * vector;
@@ -72,8 +76,8 @@ namespace viennacl
     template< typename MatrixT, typename VectorT >
     VectorT 
     prod(MatrixT const& matrix, VectorT const& vector, 
-         typename viennacl::tools::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< MatrixT >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< MatrixT >::type >::value
+                                     >::type* dummy = 0)
     {
       // std::cout << "ublas .. " << std::endl;
       return boost::numeric::ublas::prod(matrix, vector);
@@ -123,8 +127,8 @@ namespace viennacl
     template< typename MatrixT, typename VectorT >
     VectorT 
     prod(MatrixT const& matrix, VectorT const& vector, 
-         typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< MatrixT >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< MatrixT >::type >::value
+                                     >::type* dummy = 0)
     {
       // std::cout << "std .. " << std::endl;
       return prod_impl(matrix, vector);
@@ -133,14 +137,57 @@ namespace viennacl
     // ----------------------------------------------------
     // VIENNACL
     //
+    template< typename MatrixT1, typename MatrixT2 >
+    viennacl::matrix_expression< const MatrixT1, 
+                                 const viennacl::matrix_range<MatrixT2>,
+                                 viennacl::op_prod >
+    prod(MatrixT1 const& A,
+         viennacl::matrix_range<MatrixT2> const& B, 
+         typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT1 >::type >::value
+                                     >::type* dummy = 0)
+    {
+      // std::cout << "viennacl .. " << std::endl;
+      return viennacl::matrix_expression< const MatrixT1, 
+                                          const viennacl::matrix_range<MatrixT2>,
+                                          viennacl::op_prod >(A, B);
+    }
+
+
+    template< typename MatrixT1, typename MatrixT2 >
+    viennacl::matrix_expression< const MatrixT1, 
+                                 const viennacl::matrix_expression<const viennacl::matrix_range<MatrixT2>,
+                                                                   const viennacl::matrix_range<MatrixT2>,
+                                                                   op_trans>,
+                                 viennacl::op_prod >
+    prod(MatrixT1 const & A,
+         viennacl::matrix_expression<const viennacl::matrix_range<MatrixT2>,
+                                     const viennacl::matrix_range<MatrixT2>,
+                                     op_trans> const & B, 
+         typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT2 >::type >::value
+                                     >::type* dummy = 0)
+    {
+      // std::cout << "viennacl .. " << std::endl;
+      return viennacl::matrix_expression< const MatrixT1, 
+                                          const viennacl::matrix_expression<const viennacl::matrix_range<MatrixT2>,
+                                                                            const viennacl::matrix_range<MatrixT2>,
+                                                                            op_trans>,
+                                          viennacl::op_prod >(A, B);
+    }
+
+
+
+
+
+
+
     template< typename MatrixT, typename NumericT, unsigned int ALIGNMENT >
     viennacl::vector_expression< const MatrixT, 
                                  const viennacl::vector<NumericT, ALIGNMENT>,
                                  viennacl::op_prod >
     prod(MatrixT const& matrix,
          viennacl::vector<NumericT, ALIGNMENT> const& vector, 
-         typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value
+                                     >::type* dummy = 0)
     {
       // std::cout << "viennacl .. " << std::endl;
       return viennacl::linalg::prod_impl(matrix, vector);
@@ -152,8 +199,8 @@ namespace viennacl
                                  viennacl::op_prod >
     prod(MatrixT const& matrix_A,
          viennacl::matrix<NumericT, F, ALIGNMENT> const& matrix_B, 
-         typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value
+                                     >::type* dummy = 0)
     {
       // std::cout << "viennacl .. " << std::endl;
       return viennacl::matrix_expression< const MatrixT, 
@@ -171,8 +218,8 @@ namespace viennacl
          const viennacl::matrix_expression< const viennacl::matrix<NumericT, F, ALIGNMENT>, 
                                             const viennacl::matrix<NumericT, F, ALIGNMENT>,
                                             viennacl::op_trans > & matrix_B,
-         typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value
-                                            >::type* dummy = 0)
+         typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value
+                                     >::type* dummy = 0)
     {
       // std::cout << "viennacl .. " << std::endl;
       return viennacl::matrix_expression< const MatrixT, 
diff --git a/viennacl/linalg/qr.hpp b/viennacl/linalg/qr.hpp
new file mode 100644
index 0000000..fd1f6b7
--- /dev/null
+++ b/viennacl/linalg/qr.hpp
@@ -0,0 +1,586 @@
+#ifndef VIENNACL_LINALG_QR_HPP
+#define VIENNACL_LINALG_QR_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/qr.hpp
+    @brief Proivdes a QR factorization using a block-based approach.  Experimental in 1.2.x.
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <cmath>
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+
+namespace viennacl
+{
+    namespace linalg
+    {
+      
+        // orthogonalises j-th column of A
+        template <typename MatrixType, typename VectorType>
+        typename MatrixType::value_type setup_householder_vector(MatrixType const & A, VectorType & v, size_t j)
+        {
+          typedef typename MatrixType::value_type   ScalarType;
+          
+          //compute norm of column below diagonal:
+          ScalarType sigma = 0;
+          ScalarType beta = 0;
+          for (size_t k = j+1; k<A.size1(); ++k)
+            sigma += A(k, j) * A(k, j);
+
+          //get v from A:
+          for (size_t k = j+1; k<A.size1(); ++k)
+            v[k] = A(k, j);
+          
+          if (sigma == 0)
+            return 0;
+          else
+          {
+            ScalarType mu = sqrt(sigma + A(j,j)*A(j,j));
+            //std::cout << "mu: " << mu << std::endl;
+            //std::cout << "sigma: " << sigma << std::endl;
+            
+            ScalarType v1;
+            if (A(j,j) <= 0)
+              v1 = A(j,j) - mu;
+            else
+              v1 = -sigma / (A(j,j) + mu);
+            
+            beta = 2.0 * v1 * v1 / (sigma + v1 * v1);
+            
+            //divide v by its diagonal element v[j]
+            v[j] = 1;
+            for (size_t k = j+1; k<A.size1(); ++k)
+              v[k] /= v1;
+          }
+            
+          return beta;
+        }
+
+        // Apply (I - beta v v^T) to the k-th column of A, where v is the reflector starting at j-th row/column
+        template <typename MatrixType, typename VectorType, typename ScalarType>
+        void householder_reflect(MatrixType & A, VectorType & v, ScalarType beta, size_t j, size_t k)
+        {
+          ScalarType v_in_col = A(j,k);
+          for (size_t i=j+1; i<A.size1(); ++i)
+            v_in_col += v[i] * A(i,k);
+
+          for (size_t i=j; i<A.size1(); ++i)
+            A(i,k) -= beta * v_in_col * v[i];
+        }
+
+        // Apply (I - beta v v^T) to A, where v is the reflector starting at j-th row/column
+        template <typename MatrixType, typename VectorType, typename ScalarType>
+        void householder_reflect(MatrixType & A, VectorType & v, ScalarType beta, size_t j)
+        {
+          size_t column_end = A.size2();
+          
+          for (size_t k=j; k<column_end; ++k) //over columns
+            householder_reflect(A, v, beta, j, k);
+        }
+        
+        
+        template <typename MatrixType, typename VectorType>
+        void write_householder_to_A(MatrixType & A, VectorType const & v, size_t j)
+        {
+          for (size_t i=j+1; i<A.size1(); ++i)
+            A(i,j) = v[i];
+        }
+        
+        
+        //takes an inplace QR matrix A and generates Q and R explicitly
+        template <typename MatrixType, typename VectorType>
+        void recoverQ(MatrixType const & A, VectorType const & betas, MatrixType & Q, MatrixType & R)
+        {
+          typedef typename MatrixType::value_type   ScalarType;
+          
+          std::vector<ScalarType> v(A.size1());
+
+          Q.clear();
+          R.clear();
+
+          //
+          // Recover R from upper-triangular part of A:
+          //
+          size_t i_max = std::min(R.size1(), R.size2());
+          for (size_t i=0; i<i_max; ++i)
+            for (size_t j=i; j<R.size2(); ++j)
+              R(i,j) = A(i,j);
+         
+          //
+          // Recover Q by applying all the Householder reflectors to the identity matrix:
+          //
+          for (size_t i=0; i<Q.size1(); ++i)
+            Q(i,i) = 1.0;
+
+          size_t j_max = std::min(A.size1(), A.size2());
+          for (size_t j=0; j<j_max; ++j)
+          {
+            size_t col_index = j_max - j - 1;
+            v[col_index] = 1.0;
+            for (size_t i=col_index+1; i<A.size1(); ++i)
+              v[i] = A(i, col_index);
+            
+            /*std::cout << "Recovery with beta = " << betas[col_index] << ", j=" << col_index << std::endl;
+            std::cout << "v: ";
+            for (size_t i=0; i<v.size(); ++i)
+              std::cout << v[i] << ", ";
+            std::cout << std::endl;*/
+
+            if (betas[col_index] != 0)
+              householder_reflect(Q, v, betas[col_index], col_index);
+          }
+        }
+       
+        /*template<typename MatrixType>
+        std::vector<typename MatrixType::value_type> qr(MatrixType & A)
+        {
+          typedef typename MatrixType::value_type   ScalarType;
+          
+          std::vector<ScalarType> betas(A.size2());
+          std::vector<ScalarType> v(A.size1());
+
+          //copy A to Q:
+          for (size_t j=0; j<A.size2(); ++j)
+          {
+             betas[j] = setup_householder_vector(A, v, j);
+             householder_reflect(A, v, betas[j], j);
+             write_householder_to_A(A, v, j);
+          }
+          
+          return betas;
+        }*/
+        
+        
+        
+        class range
+        {
+          public:
+            range(size_t start, size_t end) : start_(start), end_(end) {}
+            
+            size_t lower() const { return start_; }
+            size_t upper() const { return end_; }
+            
+          private:
+            size_t start_;
+            size_t end_;
+        };
+
+        template <typename MatrixType>
+        class sub_matrix
+        {
+          public:
+            typedef typename MatrixType::value_type value_type;
+            
+            sub_matrix(MatrixType & mat,
+                       range row_range,
+                       range col_range) : mat_(mat), row_range_(row_range), col_range_(col_range) {}
+                       
+            value_type operator()(size_t row, size_t col) const
+            {
+              assert(row < size1());
+              assert(col < size2());
+              return mat_(row + row_range_.lower(), col + col_range_.lower()); 
+            }
+                       
+            size_t size1() const { return row_range_.upper() - row_range_.lower(); }
+            size_t size2() const { return col_range_.upper() - col_range_.lower(); }
+            
+          private:
+            MatrixType & mat_;
+            range row_range_;
+            range col_range_;
+        };
+
+
+        //computes C = prod(A, B)
+        template <typename MatrixTypeA, typename MatrixTypeB, typename MatrixTypeC>
+        void prod_AA(MatrixTypeA const & A, MatrixTypeB const & B, MatrixTypeC & C)
+        {
+          assert(C.size1() == A.size1());
+          assert(A.size2() == B.size1());
+          assert(B.size2() == C.size2());
+          
+          typedef typename MatrixTypeC::value_type   ScalarType;
+          
+          for (size_t i=0; i<C.size1(); ++i)
+          {
+            for (size_t j=0; j<C.size2(); ++j)
+            {
+              ScalarType val = 0;
+              for (size_t k=0; k<A.size2(); ++k)
+                val += A(i, k) * B(k, j);
+              C(i, j) = val;
+            }
+          }
+        }
+        
+        //computes C = prod(A^T, B)
+        template <typename MatrixTypeA, typename MatrixTypeB, typename MatrixTypeC>
+        void prod_TA(MatrixTypeA const & A, MatrixTypeB const & B, MatrixTypeC & C)
+        {
+          assert(C.size1() == A.size2());
+          assert(A.size1() == B.size1());
+          assert(B.size2() == C.size2());
+          
+          typedef typename MatrixTypeC::value_type   ScalarType;
+          
+          for (size_t i=0; i<C.size1(); ++i)
+          {
+            for (size_t j=0; j<C.size2(); ++j)
+            {
+              ScalarType val = 0;
+              for (size_t k=0; k<A.size1(); ++k)
+                val += A(k, i) * B(k, j);
+              C(i, j) = val;
+            }
+          }
+        }
+        
+        
+
+        template<typename MatrixType>
+        std::vector<typename MatrixType::value_type> inplace_qr(MatrixType & A, std::size_t block_size = 32)
+        {
+          typedef typename MatrixType::value_type   ScalarType;
+          
+          if ( A.size2() % block_size != 0 )
+            std::cout << "ViennaCL: Warning in inplace_qr(): Matrix columns are not divisible by block_size!" << std::endl;
+            
+          std::vector<ScalarType> betas(A.size2());
+          std::vector<ScalarType> v(A.size1());
+
+          //size_t block_size = 90;
+          MatrixType Y(A.size1(), block_size); Y.clear();
+          MatrixType W(A.size1(), block_size); W.clear();
+            
+          //run over A in a block-wise manner:
+          for (size_t j = 0; j < std::min(A.size1(), A.size2()); j += block_size)
+          {
+            //determine Householder vectors:
+            for (size_t k = 0; k < block_size; ++k)
+            {
+              betas[j+k] = setup_householder_vector(A, v, j+k);
+              for (size_t l = k; l < block_size; ++l)
+                householder_reflect(A, v, betas[j+k], j+k, j+l);
+
+              write_householder_to_A(A, v, j+k);
+            }
+
+            //
+            // Setup Y:
+            //
+            for (size_t k = 0; k < block_size; ++k)
+            {
+              //write Householder to Y:
+              Y(k,k) = 1.0;
+              for (size_t l=k+1; l<A.size1(); ++l)
+                Y(l,k) = A(l, j+k);
+            }
+            
+            //
+            // Setup W:
+            //
+            
+            //first vector:
+            W(j, 0) = -betas[j];
+            for (size_t l=j+1; l<A.size1(); ++l)
+              W(l,0) = -betas[j] * A(l, j);
+            
+            //k-th column of W is given by -beta * (Id + W*Y^T) v_k, where W and Y have k-1 columns
+            for (size_t k = 1; k < block_size; ++k)
+            {
+              //compute Y^T v_k:
+              std::vector<ScalarType> temp(k);  //actually of size (k \times 1)
+              for (size_t l=0; l<k; ++l)
+                for (size_t n=j; n<A.size1(); ++n)
+                  temp[l] += Y(n, l) * Y(n, k);
+                
+              //compute W * temp and add to z, which is directly written to W:
+              for (size_t n=0; n<A.size1(); ++n)
+              {
+                ScalarType val = 0;
+                for (size_t l=0; l<k; ++l)
+                  val += temp[l] * W(n, l);
+                W(n, k) = -1.0 * betas[j+k] * (Y(n, k) + val);
+              }
+            }
+
+            //
+            //apply (I+WY^T)^T = I + Y W^T to the remaining columns of A:
+            //
+            
+            if (A.size2() - j - block_size > 0)
+            {
+              //temp = prod(W^T, A)
+              
+              MatrixType temp(block_size, A.size2() - j - block_size);
+              
+              boost::numeric::ublas::range A_rows(j, A.size1());
+              boost::numeric::ublas::range A_cols(j+block_size, A.size2());
+              boost::numeric::ublas::matrix_range<MatrixType> A_part(A, A_rows, A_cols);
+
+              viennacl::matrix<ScalarType, viennacl::column_major> gpu_A_part(A_part.size1(), A_part.size2());
+              viennacl::copy(A_part, gpu_A_part);
+
+              //transfer W
+              boost::numeric::ublas::range W_cols(0, block_size);
+              boost::numeric::ublas::matrix_range<MatrixType> W_part(W, A_rows, W_cols);
+              viennacl::matrix<ScalarType, viennacl::column_major> gpu_W(W_part.size1(), W_part.size2());
+              viennacl::copy(W_part, gpu_W);
+              
+              viennacl::matrix<ScalarType, viennacl::column_major> gpu_temp(gpu_W.size2(), gpu_A_part.size2());
+              gpu_temp = viennacl::linalg::prod(trans(gpu_W), gpu_A_part);
+              
+              
+              
+              //A += Y * temp:
+              boost::numeric::ublas::range Y_cols(0, Y.size2());
+              boost::numeric::ublas::matrix_range<MatrixType> Y_part(Y, A_rows, Y_cols);
+              
+              viennacl::matrix<ScalarType, viennacl::column_major> gpu_Y(Y_part.size1(), Y_part.size2());
+              viennacl::copy(Y_part, gpu_Y);
+
+              //A_part += prod(Y_part, temp);
+              gpu_A_part += prod(gpu_Y, gpu_temp);
+              
+              MatrixType A_part_back(A_part.size1(), A_part.size2());
+              viennacl::copy(gpu_A_part, A_part_back);
+                
+              A_part = A_part_back;
+              //A_part += prod(Y_part, temp);
+            }
+          }
+          
+          return betas;
+        }
+
+
+        template<typename MatrixType>
+        std::vector<typename MatrixType::value_type> inplace_qr_ublas(MatrixType & A)
+        {
+          typedef typename MatrixType::value_type   ScalarType;
+          
+          std::vector<ScalarType> betas(A.size2());
+          std::vector<ScalarType> v(A.size1());
+
+          size_t block_size = 3;
+          MatrixType Y(A.size1(), block_size); Y.clear();
+          MatrixType W(A.size1(), block_size); W.clear();
+            
+          //run over A in a block-wise manner:
+          for (size_t j = 0; j < std::min(A.size1(), A.size2()); j += block_size)
+          {
+            //determine Householder vectors:
+            for (size_t k = 0; k < block_size; ++k)
+            {
+              betas[j+k] = setup_householder_vector(A, v, j+k);
+              for (size_t l = k; l < block_size; ++l)
+                householder_reflect(A, v, betas[j+k], j+k, j+l);
+
+              write_householder_to_A(A, v, j+k);
+            }
+
+            //
+            // Setup Y:
+            //
+            for (size_t k = 0; k < block_size; ++k)
+            {
+              //write Householder to Y:
+              Y(k,k) = 1.0;
+              for (size_t l=k+1; l<A.size1(); ++l)
+                Y(l,k) = A(l, j+k);
+            }
+            
+            //
+            // Setup W:
+            //
+            
+            //first vector:
+            W(j, 0) = -betas[j];
+            for (size_t l=j+1; l<A.size1(); ++l)
+              W(l,0) = -betas[j] * A(l, j);
+            
+            //k-th column of W is given by -beta * (Id + W*Y^T) v_k, where W and Y have k-1 columns
+            for (size_t k = 1; k < block_size; ++k)
+            {
+              //compute Y^T v_k:
+              std::vector<ScalarType> temp(k);  //actually of size (k \times 1)
+              for (size_t l=0; l<k; ++l)
+                for (size_t n=j; n<A.size1(); ++n)
+                  temp[l] += Y(n, l) * Y(n, k);
+                
+              //compute W * temp and add to z, which is directly written to W:
+              for (size_t n=0; n<A.size1(); ++n)
+              {
+                ScalarType val = 0;
+                for (size_t l=0; l<k; ++l)
+                  val += temp[l] * W(n, l);
+                W(n, k) = -1.0 * betas[j+k] * (Y(n, k) + val);
+              }
+            }
+
+            //
+            //apply (I+WY^T)^T = I + Y W^T to the remaining columns of A:
+            //
+            
+            if (A.size2() - j - block_size > 0)
+            {
+              //temp = prod(W^T, A)
+              MatrixType temp(block_size, A.size2() - j - block_size);
+              
+              boost::numeric::ublas::range A_rows(j, A.size1());
+              boost::numeric::ublas::range A_cols(j+block_size, A.size2());
+              boost::numeric::ublas::matrix_range<MatrixType> A_part(A, A_rows, A_cols);
+
+              boost::numeric::ublas::range W_cols(0, block_size);
+              boost::numeric::ublas::matrix_range<MatrixType> W_part(W, A_rows, W_cols);
+              
+              temp = boost::numeric::ublas::prod(trans(W_part), A_part);
+              
+              
+              //A += Y * temp:
+              boost::numeric::ublas::range Y_cols(0, Y.size2());
+              boost::numeric::ublas::matrix_range<MatrixType> Y_part(Y, A_rows, Y_cols);
+              
+              A_part += prod(Y_part, temp);
+            }
+          }
+          
+          return betas;
+        }
+
+
+        template<typename MatrixType>
+        std::vector<typename MatrixType::value_type> inplace_qr_pure(MatrixType & A)
+        {
+          typedef typename MatrixType::value_type   ScalarType;
+          
+          std::vector<ScalarType> betas(A.size2());
+          std::vector<ScalarType> v(A.size1());
+
+          size_t block_size = 5;
+          MatrixType Y(A.size1(), block_size); Y.clear();
+          MatrixType W(A.size1(), block_size); W.clear();
+            
+          //run over A in a block-wise manner:
+          for (size_t j = 0; j < std::min(A.size1(), A.size2()); j += block_size)
+          {
+            //determine Householder vectors:
+            for (size_t k = 0; k < block_size; ++k)
+            {
+              betas[j+k] = setup_householder_vector(A, v, j+k);
+              for (size_t l = k; l < block_size; ++l)
+                householder_reflect(A, v, betas[j+k], j+k, j+l);
+
+              write_householder_to_A(A, v, j+k);
+            }
+
+            //
+            // Setup Y:
+            //
+            for (size_t k = 0; k < block_size; ++k)
+            {
+              //write Householder to Y:
+              Y(k,k) = 1.0;
+              for (size_t l=k+1; l<A.size1(); ++l)
+                Y(l,k) = A(l, j+k);
+            }
+            
+            //
+            // Setup W:
+            //
+            
+            //first vector:
+            W(j, 0) = -betas[j];
+            for (size_t l=j+1; l<A.size1(); ++l)
+              W(l,0) = -betas[j] * A(l, j);
+            
+            //k-th column of W is given by -beta * (Id + W*Y^T) v_k, where W and Y have k-1 columns
+            for (size_t k = 1; k < block_size; ++k)
+            {
+              //compute Y^T v_k:
+              std::vector<ScalarType> temp(k);  //actually of size (k \times 1)
+              for (size_t l=0; l<k; ++l)
+                for (size_t n=j; n<A.size1(); ++n)
+                  temp[l] += Y(n, l) * Y(n, k);
+                
+              //compute W * temp and add to z, which is directly written to W:
+              for (size_t n=0; n<A.size1(); ++n)
+              {
+                ScalarType val = 0;
+                for (size_t l=0; l<k; ++l)
+                  val += temp[l] * W(n, l);
+                W(n, k) = -1.0 * betas[j+k] * (Y(n, k) + val);
+              }
+            }
+
+            //
+            //apply (I+WY^T)^T = I + Y W^T to the remaining columns of A:
+            //
+            
+            if (A.size2() - j - block_size > 0)
+            {
+              //temp = prod(W^T, A)
+              MatrixType temp(block_size, A.size2() - j - block_size);
+              ScalarType entry = 0;
+              for (size_t l = 0; l < temp.size2(); ++l)
+              {
+                for (size_t k = 0; k < temp.size1(); ++k)
+                {
+                  entry = 0;
+                  for (size_t n = j; n < A.size1(); ++n)
+                    entry += W(n, k) * A(n, j + block_size + l);
+                  temp(k,l) = entry;
+                }
+              }
+              
+              //A += Y * temp:
+              for (size_t l = j+block_size; l < A.size2(); ++l)
+              {
+                for (size_t k = j; k<A.size1(); ++k)
+                {
+                  ScalarType val = 0;
+                  for (size_t n=0; n<block_size; ++n)
+                    val += Y(k, n) * temp(n, l-j-block_size);
+                  A(k, l) += val;
+                }
+              }
+            }
+          }
+          
+          return betas;
+        }
+        
+    } //linalg
+} //viennacl
+
+
+#endif
diff --git a/viennacl/linalg/row_scaling.hpp b/viennacl/linalg/row_scaling.hpp
index 2f055b5..7e199ad 100644
--- a/viennacl/linalg/row_scaling.hpp
+++ b/viennacl/linalg/row_scaling.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_ROW_SCALING_HPP_
-#define _VIENNACL_ROW_SCALING_HPP_
+#ifndef VIENNACL_LINALG_ROW_SCALING_HPP_
+#define VIENNACL_LINALG_ROW_SCALING_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file row_scaling.hpp
     @brief A row normalization preconditioner is implemented here
@@ -196,13 +198,17 @@ namespace viennacl
         template <unsigned int ALIGNMENT>
         void apply(viennacl::vector<ScalarType, ALIGNMENT> & vec) const
         {
-          assert(system_matrix.size1() == vec.size());
+          assert(viennacl::traits::size1(system_matrix) == viennacl::traits::size(vec));
           
-          //run kernel (reuse Jacobi kernel):
+          //run kernel:
           viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<ScalarType, ALIGNMENT>::program_name(),
                                                                 "diag_precond");
 
-          viennacl::ocl::enqueue( k(diag_M_inv, vec, static_cast<cl_uint>(vec.size())) );        
+          viennacl::ocl::enqueue(
+             k(viennacl::traits::handle(diag_M_inv), cl_uint(viennacl::traits::start(diag_M_inv)), cl_uint(viennacl::traits::size(diag_M_inv)),
+               viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)) )
+                                );        
+          
         }
         
       private:
diff --git a/viennacl/linalg/spai.hpp b/viennacl/linalg/spai.hpp
new file mode 100644
index 0000000..6b07964
--- /dev/null
+++ b/viennacl/linalg/spai.hpp
@@ -0,0 +1,291 @@
+#ifndef VIENNACL_LINALG_SPAI_HPP
+#define VIENNACL_LINALG_SPAI_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/spai.hpp
+    @brief Main include file for the sparse approximate inverse preconditioner family (SPAI and FSPAI).  Experimental in 1.2.x.
+    
+    Most implementation contributed by Nikolay Lukash.
+*/
+
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+
+//local includes
+#include "viennacl/linalg/detail/spai/spai_tag.hpp"
+#include "viennacl/linalg/qr.hpp"
+#include "viennacl/linalg/detail/spai/spai-dynamic.hpp"
+#include "viennacl/linalg/detail/spai/spai-static.hpp"
+#include "viennacl/linalg/detail/spai/sparse_vector.hpp"
+#include "viennacl/linalg/detail/spai/block_matrix.hpp"
+#include "viennacl/linalg/detail/spai/block_vector.hpp"
+#include "viennacl/linalg/detail/spai/fspai.hpp"
+#include "viennacl/linalg/detail/spai/spai.hpp"
+
+//boost includes
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/lu.hpp"
+#include "boost/numeric/ublas/triangular.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+
+// ViennaCL includes
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/compressed_matrix_operations.hpp"
+#include "viennacl/linalg/matrix_operations.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/ocl/backend.hpp"
+#include "viennacl/linalg/kernels/spai_source.h"
+#include "viennacl/linalg/kernels/spai_kernels.h"
+
+
+namespace viennacl
+{
+    namespace linalg
+    {
+        
+        typedef viennacl::linalg::detail::spai::spai_tag         spai_tag;
+        typedef viennacl::linalg::detail::spai::fspai_tag        fspai_tag;
+        
+        /** @brief Implementation of the SParse Approximate Inverse Algorithm
+         * @param Matrix matrix that is used for computations
+         * @param Vector vector that is used for computations
+         */
+        //UBLAS version
+        template <typename MatrixType>
+        class spai_precond
+        {
+        public:
+            typedef typename MatrixType::value_type ScalarType;
+            typedef typename boost::numeric::ublas::vector<ScalarType> VectorType;
+            /** @brief Constructor
+             * @param A matrix whose approximate inverse is calculated. Must be quadratic.
+             * @param tag spai tag 
+             */
+            spai_precond(const MatrixType& A,
+                         const spai_tag& tag): _tag(tag){
+                
+                //VCLMatrixType vcl_Ap((unsigned int)A.size2(), (unsigned int)A.size1()), vcl_A((unsigned int)A.size1(), (unsigned int)A.size2()), 
+                //vcl_At((unsigned int)A.size1(), (unsigned int)A.size2());
+                //UBLASDenseMatrixType dA = A;
+                MatrixType pA(A.size1(), A.size2());
+                MatrixType At;
+                //std::cout<<A<<std::endl;
+                if(!_tag.getIsRight()){
+                    viennacl::linalg::detail::spai::sparse_transpose(A, At);
+                }else{
+                    At = A;
+                }
+                pA = At;
+                viennacl::linalg::detail::spai::initPreconditioner(pA, _spai_m);
+                viennacl::linalg::detail::spai::computeSPAI(At, _spai_m, _tag);
+                //(At, pA, _tag.getIsRight(), _tag.getIsStatic(), (ScalarType)_tag.getResidualNormThreshold(), (unsigned int)_tag.getIterationLimit(),
+                 //_spai_m);
+                
+            }
+            /** @brief Application of current preconditioner, multiplication on the right-hand side vector
+             * @param vec rhs vector
+             */
+            void apply(VectorType& vec) const {
+                vec = viennacl::linalg::prod(_spai_m, vec);
+            }
+        private:
+            // variables
+            spai_tag _tag;
+            // result of SPAI
+            MatrixType _spai_m;
+        };   
+        
+        //VIENNACL version
+        template <typename ScalarType, unsigned int MAT_ALIGNMENT>
+        class spai_precond< viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT> >
+        {
+            typedef viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT> MatrixType;
+            typedef boost::numeric::ublas::compressed_matrix<ScalarType> UBLASSparseMatrixType;
+            typedef viennacl::vector<ScalarType> VectorType;
+            typedef viennacl::matrix<ScalarType> VCLDenseMatrixType;
+            
+            typedef boost::numeric::ublas::vector<ScalarType> UBLASVectorType;
+        public:
+            
+            /** @brief Constructor
+             * @param A matrix whose approximate inverse is calculated. Must be quadratic.
+             * @param tag spai tag
+             */
+            spai_precond(const MatrixType& A,
+                         const spai_tag& tag): _tag(tag)
+            {
+                viennacl::linalg::kernels::spai<ScalarType, 1>::init();
+              
+                MatrixType At(A.size1(), A.size2());
+                UBLASSparseMatrixType ubls_A, ubls_spai_m;
+                UBLASSparseMatrixType ubls_At;
+                viennacl::copy(A, ubls_A);;
+                if(!_tag.getIsRight()){
+                    viennacl::linalg::detail::spai::sparse_transpose(ubls_A, ubls_At);
+                }
+                else{
+                    ubls_At = ubls_A;
+                }
+                //current pattern is A
+                //pA = ubls_At;
+                //execute SPAI with ublas matrix types
+                viennacl::linalg::detail::spai::initPreconditioner(ubls_At, ubls_spai_m);
+                viennacl::copy(ubls_At, At);
+                viennacl::linalg::detail::spai::computeSPAI(At, ubls_At, ubls_spai_m, _spai_m, _tag);
+                //viennacl::copy(ubls_spai_m, _spai_m);
+                
+            }
+            /** @brief Application of current preconditioner, multiplication on the right-hand side vector
+             * @param vec rhs vector
+             */
+            void apply(VectorType& vec) const {
+                vec = viennacl::linalg::prod(_spai_m, vec);
+            }
+        private:
+            // variables
+            spai_tag _tag;
+            // result of SPAI
+            MatrixType _spai_m;
+        };
+        
+        
+        //
+        // FSPAI
+        //
+        
+        /** @brief Implementation of the Factored SParse Approximate Inverse Algorithm
+        * @param Matrix matrix that is used for computations
+        * @param Vector vector that is used for computations
+        */
+        //UBLAS version
+        template <typename MatrixType>
+        class fspai_precond
+        {
+            typedef typename MatrixType::value_type ScalarType;
+            typedef typename boost::numeric::ublas::vector<ScalarType> VectorType;
+            typedef typename boost::numeric::ublas::matrix<ScalarType> UBLASDenseMatrixType;
+            typedef typename viennacl::matrix<ScalarType> VCLMatrixType;
+        public:
+            
+            /** @brief Constructor
+            * @param A matrix whose approximate inverse is calculated. Must be quadratic.
+            * @param tag SPAI configuration tag
+            */
+            fspai_precond(const MatrixType& A,
+                        const fspai_tag& tag): tag_(tag)
+            {
+                MatrixType pA = A;
+                viennacl::linalg::detail::spai::computeFSPAI(A, pA, L, L_trans, tag_);
+            }
+            
+            /** @brief Application of current preconditioner, multiplication on the right-hand side vector
+            * @param vec rhs vector
+            */
+            void apply(VectorType& vec) const 
+            {
+              VectorType temp = viennacl::linalg::prod(L_trans, vec);
+              vec = viennacl::linalg::prod(L, temp);
+            }
+            
+        private:
+            // variables
+            const fspai_tag & tag_;
+            // result of SPAI
+            MatrixType L;
+            MatrixType L_trans;
+        };   
+        
+
+        
+        
+        
+        //
+        // ViennaCL version
+        //
+        template <typename ScalarType, unsigned int MAT_ALIGNMENT>
+        class fspai_precond< viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT> >
+        {
+            typedef viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT>   MatrixType;
+            typedef viennacl::vector<ScalarType> VectorType;
+            typedef viennacl::matrix<ScalarType> VCLDenseMatrixType;
+            typedef boost::numeric::ublas::compressed_matrix<ScalarType> UBLASSparseMatrixType;
+            typedef boost::numeric::ublas::vector<ScalarType> UBLASVectorType;
+        public:
+            
+            /** @brief Constructor
+            * @param A matrix whose approximate inverse is calculated. Must be quadratic.
+            * @param tag SPAI configuration tag
+            */
+            fspai_precond(const MatrixType & A,
+                        const fspai_tag & tag): tag_(tag){
+                //UBLASSparseMatrixType ubls_A;
+                UBLASSparseMatrixType ublas_A(A.size1(), A.size2());
+                UBLASSparseMatrixType pA(A.size1(), A.size2());
+                UBLASSparseMatrixType ublas_L(A.size1(), A.size2());
+                UBLASSparseMatrixType ublas_L_trans(A.size1(), A.size2());
+                viennacl::copy(A, ublas_A);
+                //viennacl::copy(ubls_A, vcl_A);
+                //vcl_At = viennacl::linalg::prod(vcl_A, vcl_A);
+                //vcl_pA = viennacl::linalg::prod(vcl_A, vcl_At);
+                //viennacl::copy(vcl_pA, pA);
+                pA = ublas_A;
+                //execute SPAI with ublas matrix types
+                viennacl::linalg::detail::spai::computeFSPAI(ublas_A, pA, ublas_L, ublas_L_trans, tag_);
+                //copy back to GPU
+                viennacl::copy(ublas_L, L);
+                viennacl::copy(ublas_L_trans, L_trans);
+            }
+            
+            
+            /** @brief Application of current preconditioner, multiplication on the right-hand side vector
+            * @param vec rhs vector
+            */
+            void apply(VectorType& vec) const 
+            {
+              VectorType temp(vec.size());
+              temp = viennacl::linalg::prod(L_trans, vec);
+              vec = viennacl::linalg::prod(L, temp);
+            }
+            
+        private:
+            // variables
+            const fspai_tag & tag_;
+            MatrixType L;
+            MatrixType L_trans;
+        };
+        
+        
+    }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/tag_of.hpp b/viennacl/linalg/tag_of.hpp
deleted file mode 100644
index b588491..0000000
--- a/viennacl/linalg/tag_of.hpp
+++ /dev/null
@@ -1,310 +0,0 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-
-#ifndef _VIENNACL_TAGOF_HPP_
-#define _VIENNACL_TAGOF_HPP_
-
-/** @file tag_of.hpp
-    @brief Dispatch facility for distinguishing between ublas, STL and ViennaCL types
-*/
-
-#ifdef VIENNACL_HAVE_UBLAS  
-#include <boost/numeric/ublas/matrix_sparse.hpp>
-#include <boost/numeric/ublas/matrix.hpp>
-#include <boost/numeric/ublas/vector.hpp>
-#endif
-
-#ifdef VIENNACL_HAVE_EIGEN  
-#include <Eigen/Core>
-#include <Eigen/Sparse>
-#endif
-
-#ifdef VIENNACL_HAVE_MTL4
-#include <boost/numeric/mtl/mtl.hpp>
-#endif
-
-namespace viennacl
-{
-
-  // ----------------------------------------------------
-  // TAGS
-  //
-  struct tag_none     {};
-  struct tag_mtl4     {};
-  struct tag_eigen    {};
-  struct tag_ublas    {};
-  struct tag_stl      {};
-  struct tag_viennacl {};
-
-  namespace traits
-  {
-    // ----------------------------------------------------
-    // GENERIC BASE
-    //
-    /** @brief Generic base for wrapping other linear algebra packages
-    * 
-    *  Maps types to tags, e.g. viennacl::vector to tag_viennacl, ublas::vector to tag_ublas
-    *  if the matrix type is unknown, tag_none is returned
-    *
-    *  This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
-    *
-    * @tparam T   The type to be inspected
-    */
-    template< typename T, typename Active = void >
-    struct tag_of;
-   
-    template < typename Sequence, typename Active >
-    struct tag_of
-    {
-      typedef viennacl::tag_none  type;
-    };
-    
-    #ifdef VIENNACL_HAVE_MTL4
-    // ----------------------------------------------------
-    // MTL4
-    //
-    template <typename ScalarType>
-    struct tag_of< mtl::dense_vector<ScalarType> >
-    {
-      typedef viennacl::tag_mtl4  type;
-    };
-
-    template <typename ScalarType>
-    struct tag_of< mtl::compressed2D<ScalarType> >
-    {
-      typedef viennacl::tag_mtl4  type;
-    };
-
-    template <typename ScalarType, typename T>
-    struct tag_of< mtl::dense2D<ScalarType, T> >
-    {
-      typedef viennacl::tag_mtl4  type;
-    };
-    #endif
-    
-    
-    #ifdef VIENNACL_HAVE_EIGEN
-    // ----------------------------------------------------
-    // Eigen
-    //
-    template <>
-    struct tag_of< Eigen::VectorXf >
-    {
-      typedef viennacl::tag_eigen  type;
-    };
-
-    template <>
-    struct tag_of< Eigen::VectorXd >
-    {
-      typedef viennacl::tag_eigen  type;
-    };
-
-    template <>
-    struct tag_of< Eigen::MatrixXf >
-    {
-      typedef viennacl::tag_eigen  type;
-    };
-
-    template <>
-    struct tag_of< Eigen::MatrixXd >
-    {
-      typedef viennacl::tag_eigen  type;
-    };
-
-    template <typename ScalarType, int option>
-    struct tag_of< Eigen::SparseMatrix<ScalarType, option> >
-    {
-      typedef viennacl::tag_eigen  type;
-    };
-    
-    #endif
-    
-    #ifdef VIENNACL_HAVE_UBLAS
-    // ----------------------------------------------------
-    // UBLAS
-    //
-    template< typename T >
-    struct tag_of< boost::numeric::ublas::vector<T> >
-    {
-      typedef viennacl::tag_ublas  type;
-    };
-
-    template< typename T >
-    struct tag_of< boost::numeric::ublas::matrix<T> >
-    {
-      typedef viennacl::tag_ublas  type;
-    };
-
-    template< typename T1, typename T2 >
-    struct tag_of< boost::numeric::ublas::matrix_unary2<T1,T2> >
-    {
-      typedef viennacl::tag_ublas  type;
-    };
-
-    template< typename T1, typename T2 >
-    struct tag_of< boost::numeric::ublas::compressed_matrix<T1,T2> >
-    {
-      typedef viennacl::tag_ublas  type;
-    };
-    
-    #endif
-
-    // ----------------------------------------------------
-    // STL types
-    //
-    
-    //vector
-    template< typename T, typename A >
-    struct tag_of< std::vector<T, A> >
-    {
-      typedef viennacl::tag_stl  type;
-    };
-
-    //dense matrix
-    template< typename T, typename A >
-    struct tag_of< std::vector<std::vector<T, A>, A> >
-    {
-      typedef viennacl::tag_stl  type;
-    };
-
-    //sparse matrix (vector of maps)
-    template< typename KEY, typename DATA, typename COMPARE, typename AMAP, typename AVEC>
-    struct tag_of< std::vector<std::map<KEY, DATA, COMPARE, AMAP>, AVEC> >
-    {
-      typedef viennacl::tag_stl  type;
-    };
-    
-    
-    // ----------------------------------------------------
-    // VIENNACL
-    //
-    template< typename T, unsigned int alignment >
-    struct tag_of< viennacl::vector<T, alignment> >
-    {
-      typedef viennacl::tag_viennacl  type;
-    };
-
-    template< typename T, typename F, unsigned int alignment >
-    struct tag_of< viennacl::matrix<T, F, alignment> >
-    {
-      typedef viennacl::tag_viennacl  type;
-    };
-
-    template< typename T1, typename T2, typename OP >
-    struct tag_of< viennacl::matrix_expression<T1,T2,OP> >
-    {
-      typedef viennacl::tag_viennacl  type;
-    };
-
-    template< typename T, unsigned int I>
-    struct tag_of< viennacl::compressed_matrix<T,I> >
-    {
-      typedef viennacl::tag_viennacl  type;
-    };
-
-    template< typename T, unsigned int I>
-    struct tag_of< viennacl::coordinate_matrix<T,I> >
-    {
-      typedef viennacl::tag_viennacl  type;
-    };
-    // ----------------------------------------------------
-  } // end namespace traits
-
-
-  /** @brief Meta function which checks whether a tag is tag_mtl4 
-  *
-  *  This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
-  */
-  template <typename Tag>
-  struct is_mtl4
-  {
-     enum { value = false };  
-  };
-
-  template <>
-  struct is_mtl4< viennacl::tag_mtl4 >
-  {
-     enum { value = true };  
-  };
-
-  /** @brief Meta function which checks whether a tag is tag_eigen 
-  *
-  *  This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
-  */
-  template <typename Tag>
-  struct is_eigen
-  {
-     enum { value = false };  
-  };
-
-  template <>
-  struct is_eigen< viennacl::tag_eigen >
-  {
-     enum { value = true };  
-  };
-
-
-  /** @brief Meta function which checks whether a tag is tag_ublas 
-  *
-  *  This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
-  */
-  template <typename Tag>
-  struct is_ublas
-  {
-     enum { value = false };  
-  };
-
-  template <>
-  struct is_ublas< viennacl::tag_ublas >
-  {
-     enum { value = true };  
-  };
-
-  /** @brief Meta function which checks whether a tag is tag_ublas 
-  *
-  *  This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
-  */
-  template <typename Tag>
-  struct is_stl
-  {
-     enum { value = false };  
-  };
-
-  template <>
-  struct is_stl< viennacl::tag_stl >
-  {
-     enum { value = true };  
-  };
-
-  
-  /** @brief Meta function which checks whether a tag is tag_viennacl
-  *
-  *  This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
-  */
-  template <typename Tag>
-  struct is_viennacl
-  {
-     enum { value = false };  
-  };
-
-  template <>
-  struct is_viennacl< viennacl::tag_viennacl >
-  {
-     enum { value = true };  
-  };
-
-} // end namespace viennacl
-
-#endif
diff --git a/viennacl/linalg/toeplitz_matrix_operations.hpp b/viennacl/linalg/toeplitz_matrix_operations.hpp
new file mode 100644
index 0000000..5e1fbf9
--- /dev/null
+++ b/viennacl/linalg/toeplitz_matrix_operations.hpp
@@ -0,0 +1,216 @@
+#ifndef VIENNACL_LINALG_TOEPLITZ_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_LINALG_TOEPLITZ_MATRIX_OPERATIONS_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file toeplitz_matrix_operations.hpp
+    @brief Implementations of operations using toeplitz_matrix
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/ocl/device.hpp"
+#include "viennacl/ocl/handle.hpp"
+#include "viennacl/ocl/kernel.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/vector.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/fft.hpp"
+
+namespace viennacl
+{
+  namespace linalg
+  {
+    
+    
+    // A * x
+    /** @brief Returns a proxy class that represents matrix-vector multiplication with a compressed_matrix
+    *
+    * This is used for the convenience expression result = prod(mat, vec);
+    *
+    * @param mat    The matrix
+    * @param vec    The vector
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+    vector_expression<const toeplitz_matrix<SCALARTYPE, ALIGNMENT>,
+                      const vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                      op_prod > prod_impl(const toeplitz_matrix<SCALARTYPE, ALIGNMENT> & mat, 
+                                     const vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec)
+    {
+      return vector_expression<const toeplitz_matrix<SCALARTYPE, ALIGNMENT>,
+                               const vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                               op_prod >(mat, vec);
+    }
+    
+    // A * x
+    /** @brief Returns a proxy class that represents matrix-vector multiplication with a toeplitz_matrix
+    *
+    * This is used for the convenience expression result = prod(mat, vec);
+    *
+    * @param mat    The matrix
+    * @param vec    The vector
+    * @param NUM_THREADS Number of threads per work group. Can be used for fine-tuning.
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+    viennacl::vector_expression<const viennacl::toeplitz_matrix<SCALARTYPE, ALIGNMENT>,
+                                const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                                viennacl::op_prod > prod_impl(const viennacl::toeplitz_matrix<SCALARTYPE, ALIGNMENT> & mat, 
+                                                              const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec, 
+                                                              size_t NUM_THREADS)
+    {
+      return viennacl::vector_expression<const viennacl::toeplitz_matrix<SCALARTYPE, ALIGNMENT>,
+                               const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                               viennacl::op_prod >(mat, vec);
+    }
+    
+    /** @brief Carries out matrix-vector multiplication with a toeplitz_matrix
+    *
+    * Implementation of the convenience expression result = prod(mat, vec);
+    *
+    * @param mat    The matrix
+    * @param vec    The vector
+    * @param result The result vector
+    */
+      template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+      void prod_impl(const viennacl::toeplitz_matrix<SCALARTYPE, ALIGNMENT> & mat, 
+                     const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
+                           viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & result)
+      {
+        assert(mat.size1() == result.size());
+        assert(mat.size2() == vec.size());
+        
+        viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tep(mat.elements().size() * 2);
+        viennacl::detail::fft::real_to_complex(mat.elements(), tep, mat.elements().size());
+
+        viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp(vec.size() * 4);
+        viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp2(vec.size() * 4);
+
+        tmp.clear();
+        copy(vec, tmp);
+        viennacl::detail::fft::real_to_complex(tmp, tmp2, vec.size() * 2);
+        viennacl::linalg::convolve(tep, tmp2, tmp);
+        viennacl::detail::fft::complex_to_real(tmp, tmp2, vec.size() * 2);
+        copy(tmp2.begin(), tmp2.begin() + vec.size(), result.begin());
+      }
+
+  } //namespace linalg
+
+
+
+    /** @brief Implementation of the operation v1 = A * v2, where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> & 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=(const viennacl::vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                          const viennacl::vector<SCALARTYPE, ALIGNMENT>,
+                                                                                          viennacl::op_prod> & proxy) 
+    {
+      // check for the special case x = A * x
+      if (proxy.rhs().handle() == this->handle())
+      {
+        viennacl::vector<SCALARTYPE, ALIGNMENT> result(proxy.rhs().size());
+        viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+        *this = result;
+        return *this;
+      }
+      else
+      {
+        viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), *this);
+        return *this;
+      }
+      return *this;
+    }
+
+    //v += A * x
+    /** @brief Implementation of the operation v1 += A * v2, where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> & 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                 const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                 op_prod> & proxy) 
+    {
+      vector<SCALARTYPE, ALIGNMENT> result(proxy.lhs().size1());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      *this += result;
+      return *this;
+    }
+
+    /** @brief Implementation of the operation v1 -= A * v2, where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> & 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                 const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                 op_prod> & proxy) 
+    {
+      vector<SCALARTYPE, ALIGNMENT> result(proxy.get_lhs().size1());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      *this -= result;
+      return *this;
+    }
+    
+    
+    //free functions:
+    /** @brief Implementation of the operation 'result = v1 + A * v2', where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                op_prod> & proxy) 
+    {
+      assert(proxy.get_lhs().size1() == size());
+      vector<SCALARTYPE, ALIGNMENT> result(size());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      result += *this;
+      return result;
+    }
+
+    /** @brief Implementation of the operation 'result = v1 - A * v2', where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                op_prod> & proxy) 
+    {
+      assert(proxy.get_lhs().size1() == size());
+      vector<SCALARTYPE, ALIGNMENT> result(size());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      result = *this - result;
+      return result;
+    }
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/linalg/vandermonde_matrix_operations.hpp b/viennacl/linalg/vandermonde_matrix_operations.hpp
new file mode 100644
index 0000000..01dcb68
--- /dev/null
+++ b/viennacl/linalg/vandermonde_matrix_operations.hpp
@@ -0,0 +1,212 @@
+#ifndef VIENNACL_LINALG_VANDERMONDE_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_LINALG_VANDERMONDE_MATRIX_OPERATIONS_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file vandermonde_matrix_operations.hpp
+    @brief Implementations of operations using vandermonde_matrix
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/ocl/device.hpp"
+#include "viennacl/ocl/handle.hpp"
+#include "viennacl/ocl/kernel.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/vector.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/fft.hpp"
+//#include "viennacl/linalg/kernels/coordinate_matrix_kernels.h"
+
+namespace viennacl
+{
+  namespace linalg
+  {
+    
+    
+    // A * x
+    /** @brief Returns a proxy class that represents matrix-vector multiplication with a compressed_matrix
+    *
+    * This is used for the convenience expression result = prod(mat, vec);
+    *
+    * @param mat    The matrix
+    * @param vec    The vector
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+    vector_expression<const vandermonde_matrix<SCALARTYPE, ALIGNMENT>,
+                      const vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                      op_prod > prod_impl(const vandermonde_matrix<SCALARTYPE, ALIGNMENT> & mat, 
+                                     const vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec)
+    {
+      return vector_expression<const vandermonde_matrix<SCALARTYPE, ALIGNMENT>,
+                               const vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                               op_prod >(mat, vec);
+    }
+    
+    // A * x
+    /** @brief Returns a proxy class that represents matrix-vector multiplication with a vandermonde_matrix
+    *
+    * This is used for the convenience expression result = prod(mat, vec);
+    *
+    * @param mat    The matrix
+    * @param vec    The vector
+    * @param NUM_THREADS Number of threads per work group. Can be used for fine-tuning.
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+    viennacl::vector_expression<const viennacl::vandermonde_matrix<SCALARTYPE, ALIGNMENT>,
+                                const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                                viennacl::op_prod > prod_impl(const viennacl::vandermonde_matrix<SCALARTYPE, ALIGNMENT> & mat, 
+                                                              const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec, 
+                                                              size_t NUM_THREADS)
+    {
+      return viennacl::vector_expression<const viennacl::vandermonde_matrix<SCALARTYPE, ALIGNMENT>,
+                               const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>, 
+                               viennacl::op_prod >(mat, vec);
+    }
+    
+    /** @brief Carries out matrix-vector multiplication with a vandermonde_matrix
+    *
+    * Implementation of the convenience expression result = prod(mat, vec);
+    *
+    * @param mat    The matrix
+    * @param vec    The vector
+    * @param result The result vector
+    */
+      template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+      void prod_impl(const viennacl::vandermonde_matrix<SCALARTYPE, ALIGNMENT> & mat, 
+                     const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
+                           viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & result)
+      {
+        assert(mat.size1() == result.size());
+        assert(mat.size2() == vec.size());
+        
+        //fft::vandermonde_prod<SCALARTYPE>(mat.handle(), vec.handle(), result.handle(), mat.size1());      
+        viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+        
+        viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+                                          .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+                                          .get_kernel("vandermonde_prod");
+        viennacl::ocl::enqueue(kernel(mat, vec, result, static_cast<cl_uint>(mat.size1())));
+      }
+
+  } //namespace linalg
+
+
+
+    /** @brief Implementation of the operation v1 = A * v2, where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> & 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=(const viennacl::vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                          const viennacl::vector<SCALARTYPE, ALIGNMENT>,
+                                                                                          viennacl::op_prod> & proxy) 
+    {
+      // check for the special case x = A * x
+      if (proxy.rhs().handle() == this->handle())
+      {
+        viennacl::vector<SCALARTYPE, ALIGNMENT> result(proxy.rhs().size());
+        viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+        *this = result;
+        return *this;
+      }
+      else
+      {
+        viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), *this);
+        return *this;
+      }
+      return *this;
+    }
+
+    //v += A * x
+    /** @brief Implementation of the operation v1 += A * v2, where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> & 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                 const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                 op_prod> & proxy) 
+    {
+      vector<SCALARTYPE, ALIGNMENT> result(proxy.lhs().size1());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      *this += result;
+      return *this;
+    }
+
+    /** @brief Implementation of the operation v1 -= A * v2, where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> & 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                 const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                 op_prod> & proxy) 
+    {
+      vector<SCALARTYPE, ALIGNMENT> result(proxy.get_lhs().size1());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      *this -= result;
+      return *this;
+    }
+    
+    
+    //free functions:
+    /** @brief Implementation of the operation 'result = v1 + A * v2', where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                op_prod> & proxy) 
+    {
+      assert(proxy.get_lhs().size1() == size());
+      vector<SCALARTYPE, ALIGNMENT> result(size());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      result += *this;
+      return result;
+    }
+
+    /** @brief Implementation of the operation 'result = v1 - A * v2', where A is a matrix
+    *
+    * @param proxy  An expression template proxy class.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    template <unsigned int MAT_ALIGNMENT>
+    viennacl::vector<SCALARTYPE, ALIGNMENT> 
+    viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                                const vector<SCALARTYPE, ALIGNMENT>,
+                                                                                op_prod> & proxy) 
+    {
+      assert(proxy.get_lhs().size1() == size());
+      vector<SCALARTYPE, ALIGNMENT> result(size());
+      viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+      result = *this - result;
+      return result;
+    }
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/linalg/vector_operations.hpp b/viennacl/linalg/vector_operations.hpp
index ad92b2d..bc09f19 100644
--- a/viennacl/linalg/vector_operations.hpp
+++ b/viennacl/linalg/vector_operations.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_VECTOR_OPERATIONS_HPP_
-#define _VIENNACL_VECTOR_OPERATIONS_HPP_
+#ifndef VIENNACL_VECTOR_OPERATIONS_HPP_
+#define VIENNACL_VECTOR_OPERATIONS_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file vector_operations.hpp
     @brief Implementations of vector operations.
@@ -26,6 +28,11 @@
 #include "viennacl/scalar.hpp"
 #include "viennacl/tools/tools.hpp"
 #include "viennacl/linalg/kernels/vector_kernels.h"
+#include "viennacl/meta/predicate.hpp"
+#include "viennacl/meta/enable_if.hpp"
+#include "viennacl/traits/size.hpp"
+#include "viennacl/traits/start.hpp"
+#include "viennacl/traits/handle.hpp"
 
 namespace viennacl
 {
@@ -37,17 +44,33 @@ namespace viennacl
     * @param vec2  The second addend.
     * @param result The result vector.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void add(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1, 
-             const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2, 
-             viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+    template <typename V1, typename V2, typename V3>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_vector<V2>::value
+                                  && viennacl::is_vector<V3>::value
+                                >::type
+    add(const V1 & vec1, 
+        const V2 & vec2, 
+        V3 & result)
     {
-      assert(vec1.size() == vec2.size() && vec1.size() == result.size());
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && (viennacl::traits::size(vec1) == viennacl::traits::size(result))
+             && "Incompatible vector sizes in add()!");
 
-      unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "add");
+      //unsigned int size = std::min(viennacl::traits::internal_size(vec1),
+      //                             viennacl::traits::internal_size(vec2));
       
-      viennacl::ocl::enqueue(k(vec1, vec2, result, size));        
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "add");
+      
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+                               viennacl::traits::handle(result),  cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)) )
+                            );
     }
 
     /** @brief Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -57,17 +80,33 @@ namespace viennacl
     * @param vec1  The result. 
     * @param vec2  The addend
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void inplace_add(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-                     const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2)
+    template <typename V1, typename V2>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_vector<V2>::value
+                                >::type
+    inplace_add(V1 & vec1,
+                const V2 & vec2)
     {
-      assert(vec1.size() == vec2.size());
-      unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_add");
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && "Incompatible vector sizes in inplace_add()!");
+      
+      
+      //unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_add");
 
-      viennacl::ocl::enqueue(k(vec1, vec2, size));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)))
+                            );
     }
 
+
+
     /** @brief Subtraction of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
     *
     * result = vec1 - vec2
@@ -76,17 +115,31 @@ namespace viennacl
     * @param vec2  The second operand.
     * @param result The result vector.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void sub(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-             const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
-             viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+    template <typename V1, typename V2, typename V3>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_vector<V2>::value
+                                  && viennacl::is_vector<V3>::value
+                                >::type
+    sub(const V1 & vec1,
+        const V2 & vec2,
+        V3 & result)
     {
-      assert(vec1.size() == vec2.size());
-      result.resize(vec1.size());
-      unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "sub");
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && (viennacl::traits::size(vec1) == viennacl::traits::size(result))
+             && "Incompatible vector sizes in sub()!");
+      
+      //unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "sub");
 
-      viennacl::ocl::enqueue(k(vec1, vec2, result, size));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+                               viennacl::traits::handle(result),  cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)) )
+                            );        
     }
 
     /** @brief Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -96,15 +149,27 @@ namespace viennacl
     * @param vec1  The result. 
     * @param vec2  The subtracted vector
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void inplace_sub(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1, 
-                     const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2)
+    template <typename V1, typename V2>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_vector<V2>::value
+                                >::type
+    inplace_sub(V1 & vec1,
+                const V2 & vec2)
     {
-      assert(vec1.size() == vec2.size());
-      unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_sub");
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && "Incompatible vector sizes in inplace_sub()!");
+      
+      //unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_sub");
 
-      viennacl::ocl::enqueue(k(vec1, vec2, size));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)))
+                            );        
     }
 
 
@@ -117,15 +182,29 @@ namespace viennacl
     * @param alpha  The scaling factor.
     * @param result The result vector.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void mult(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec,
-              scalar<SCALARTYPE> const & alpha,
-              viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+    template <typename V1, typename S2, typename V3>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_scalar<S2>::value
+                                  && viennacl::is_vector<V3>::value
+                                >::type
+    mult(const V1 & vec,
+         S2 const & alpha,
+         V3 & result)
     {
-      result.resize(vec.size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "mult");
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec) == viennacl::traits::size(result))
+             && "Incompatible vector sizes in mult()!");
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "mult");
 
-      viennacl::ocl::enqueue(k(vec, alpha, result, static_cast<cl_uint>(vec.internal_size())));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+                               alpha,
+                               viennacl::traits::handle(result),  cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)))
+                            );        
     }
 
     /** @brief Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -136,15 +215,29 @@ namespace viennacl
     * @param alpha  The scaling factor.
     * @param result The result vector.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void mult(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec,
-              SCALARTYPE alpha,
-              viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+    template <typename V1, typename SCALARTYPE, typename V3>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_cpu_scalar<SCALARTYPE>::value
+                                  && viennacl::is_vector<V3>::value
+                                >::type
+    mult(V1 const & vec,
+         SCALARTYPE alpha,
+         V3 & result)
     {
-      result.resize(vec.size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "cpu_mult");
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec) == viennacl::traits::size(result))
+             && "Incompatible vector sizes in mult()!");
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "cpu_mult");
 
-      viennacl::ocl::enqueue(k(vec, alpha, result, static_cast<cl_uint>(vec.internal_size())));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+                               static_cast<value_type>(alpha),
+                               viennacl::traits::handle(result),  cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)))
+                            );        
     }
 
     /** @brief Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -154,13 +247,23 @@ namespace viennacl
     * @param vec    The vector to be scaled.
     * @param alpha  The scaling factor.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void inplace_mult(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec,
-                      scalar<SCALARTYPE> const & alpha)
+    template <typename V1, typename S2>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_scalar<S2>::value
+                                >::type
+    inplace_mult(V1 & vec,
+                 S2 const & alpha)
     {
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_mult");
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_mult");
 
-      viennacl::ocl::enqueue(k(vec, alpha, static_cast<cl_uint>(vec.internal_size())));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+                               alpha)
+                            );
     }
 
     /** @brief Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -170,13 +273,23 @@ namespace viennacl
     * @param vec    The vector to be scaled.
     * @param alpha  The scaling factor.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void inplace_mult(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec,
-                      SCALARTYPE alpha)
+    template <typename V1, typename S2>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_cpu_scalar<S2>::value
+                                >::type
+    inplace_mult(V1 & vec,
+                 S2 alpha)
     {
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "cpu_inplace_mult");
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "cpu_inplace_mult");
 
-      viennacl::ocl::enqueue(k(vec, alpha, static_cast<cl_uint>(vec.internal_size())));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)), 
+                               static_cast<value_type>(alpha))
+                            );        
     }
 
     //result = vec / scalar
@@ -188,16 +301,29 @@ namespace viennacl
     * @param alpha  The (inverse) scaling factor.
     * @param result The result vector.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void divide(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec,
-                scalar<SCALARTYPE> const & alpha,
-                viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+    template <typename V1, typename S2, typename V3>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_scalar<S2>::value
+                                  && viennacl::is_vector<V3>::value
+                                >::type
+    divide(V1 const & vec,
+           S2 const & alpha,
+           V3 & result)
     {
-      assert(vec.size() == result.size());
-      result.resize(vec.size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "divide");
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec) == viennacl::traits::size(result))
+             && "Incompatible vector sizes in divide()!");
+
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "divide");
 
-      viennacl::ocl::enqueue(k(vec, alpha, result, static_cast<cl_uint>(vec.internal_size())));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)), 
+                               alpha,
+                               viennacl::traits::handle(result), cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)))
+                            );
     }
 
     /** @brief Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -207,13 +333,23 @@ namespace viennacl
     * @param vec    The vector to be scaled.
     * @param alpha  The (inverse) scaling factor.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void inplace_divide(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec,
-                        scalar<SCALARTYPE> const & alpha)
+    template <typename V1, typename S2>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_scalar<S2>::value
+                                >::type
+    inplace_divide(V1 & vec,
+                   S2 const & alpha)
     {
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_divide");
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_divide");
 
-      viennacl::ocl::enqueue(k(vec, alpha, static_cast<cl_uint>(vec.internal_size())));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)), 
+                               alpha) 
+                            );
     }
 
     //result = factor * vec1 + vec2
@@ -226,17 +362,35 @@ namespace viennacl
     * @param vec2    The second added.
     * @param result The result vector.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void mul_add(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-                 scalar<SCALARTYPE> const & alpha,
-                 const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
-                 viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+    template <typename V1, typename S2, typename V3, typename V4>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_scalar<S2>::value
+                                  && viennacl::is_vector<V3>::value
+                                  && viennacl::is_vector<V4>::value
+                                >::type
+    mul_add(V1 const & vec1,
+            S2 const & alpha,
+            V3 const & vec2,
+            V4 & result)
     {
-      assert(vec1.size() == vec2.size() && result.size() == vec1.size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "mul_add");
-      cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
-
-      viennacl::ocl::enqueue(k(vec1, alpha, vec2, result, size));        
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && (viennacl::traits::size(vec1) == viennacl::traits::size(result))
+             && "Incompatible vector sizes in mul_add()!");
+      
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "mul_add");
+      //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)), 
+                               alpha,
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)), 
+                               viennacl::traits::handle(result), cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)))
+                            );        
     }
 
     /** @brief Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -248,17 +402,34 @@ namespace viennacl
     * @param vec2    The second added.
     * @param result  The result vector.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void mul_add(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-                 SCALARTYPE alpha,
-                 const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
-                 viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+    template <typename V1, typename SCALARTYPE, typename V3, typename V4>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_cpu_scalar<SCALARTYPE>::value
+                                  && viennacl::is_vector<V3>::value
+                                  && viennacl::is_vector<V4>::value
+                                >::type
+    mul_add(V1 const & vec1,
+            SCALARTYPE alpha,
+            V3 const & vec2,
+            V4 & result)
     {
-      assert(vec1.size() == vec2.size() && result.size() == vec1.size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "cpu_mul_add");
-      cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
-
-      viennacl::ocl::enqueue(k(vec1, alpha, vec2, result, size));        
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && (viennacl::traits::size(vec1) == viennacl::traits::size(result))
+             && "Incompatible vector sizes in mul_add()!");
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "cpu_mul_add");
+      //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)), 
+                               static_cast<value_type>(alpha),
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)), 
+                               viennacl::traits::handle(result), cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)))
+                            );
     }
 
     //vec1 += factor * vec2
@@ -270,16 +441,30 @@ namespace viennacl
     * @param alpha   The scaling factor for the first addend.
     * @param vec2    The second added.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void inplace_mul_add(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-                         const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
-                         scalar<SCALARTYPE> const & alpha)
+    template <typename V1, typename V2, typename S3>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_vector<V2>::value
+                                  && viennacl::is_scalar<S3>::value
+                                >::type
+    inplace_mul_add(V1 & vec1,
+                    V2 const & vec2,
+                    S3 const & alpha)
     {
-      assert(vec1.size() == vec2.size());
-      cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_mul_add");
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && "Incompatible vector sizes in inplace_mul_add()!");
+      
+      //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_mul_add");
 
-      viennacl::ocl::enqueue(k(vec1, vec2, alpha, size));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)), 
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)), 
+                               alpha));
     }
 
     /** @brief Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -290,16 +475,29 @@ namespace viennacl
     * @param vec2    The second added.
     * @param alpha   The scaling factor for the first addend.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void inplace_mul_add(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-                         const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
-                         SCALARTYPE alpha)
+    template <typename V1, typename V2, typename SCALARTYPE>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_vector<V2>::value
+                                  && viennacl::is_cpu_scalar<SCALARTYPE>::value
+                                >::type
+    inplace_mul_add(V1 & vec1,
+                    V2 const & vec2,
+                    SCALARTYPE alpha)
     {
-      assert(vec1.size() == vec2.size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "cpu_inplace_mul_add");
-      cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && "Incompatible vector sizes in inplace_mul_add()!");
+
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "cpu_inplace_mul_add");
+      //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
 
-      viennacl::ocl::enqueue(k(vec1, vec2, alpha, size));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)), 
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)), 
+                               value_type(alpha)));
     }
 
     /** @brief Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -311,17 +509,34 @@ namespace viennacl
     * @param vec2    The second operand.
     * @param result  The result vector.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void mul_sub(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-                 scalar<SCALARTYPE> const & alpha,
-                 const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
-                 viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+    template <typename V1, typename S2, typename V3, typename V4>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_scalar<S2>::value
+                                  && viennacl::is_vector<V3>::value
+                                  && viennacl::is_vector<V4>::value
+                                >::type
+    mul_sub(V1 const & vec1,
+            S2 const & alpha,
+            V3 const & vec2,
+            V4 & result)
     {
-      assert(vec1.size() == vec2.size() && result.size() == vec1.size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "mul_sub");
-      cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
-
-      viennacl::ocl::enqueue(k(vec1, alpha, vec2, result, size));        
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && (viennacl::traits::size(vec1) == viennacl::traits::size(result))
+             && "Incompatible vector sizes in mul_sub()!");
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "mul_sub");
+      //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)), 
+                               alpha,
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)), 
+                               viennacl::traits::handle(result), cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)))
+                            );
     }
 
 
@@ -333,16 +548,30 @@ namespace viennacl
     * @param vec2    The second operand.
     * @param alpha   The scaling factor for the vector update.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void inplace_mul_sub(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-                         const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
-                         scalar<SCALARTYPE> const & alpha)
+    template <typename V1, typename V2, typename S3>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_vector<V2>::value
+                                  && viennacl::is_scalar<S3>::value
+                                >::type
+    inplace_mul_sub(V1 & vec1,
+                    V2 const & vec2,
+                    S3 const & alpha)
     {
-      assert(vec1.size() == vec2.size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_mul_sub");
-      cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && "Incompatible vector sizes in inplace_mul_sub()!");
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_mul_sub");
+      //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
 
-      viennacl::ocl::enqueue(k(vec1, vec2, alpha, size));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)), 
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)), 
+                               alpha)
+                            );        
     }
 
     /** @brief Inplace divide-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -353,16 +582,30 @@ namespace viennacl
     * @param vec2    The vector update
     * @param alpha   The scaling factor for the second vector.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void inplace_div_add(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-                         const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
-                         scalar<SCALARTYPE> const & alpha)
+    template <typename V1, typename V2, typename S3>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_vector<V2>::value
+                                  && viennacl::is_scalar<S3>::value
+                                >::type
+    inplace_div_add(V1 & vec1,
+                    V2 const & vec2,
+                    S3 const & alpha)
     {
-      assert(vec1.size() == vec2.size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_div_add");
-      cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && "Incompatible vector sizes in inplace_div_add()!");
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_div_add");
+      //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
 
-      viennacl::ocl::enqueue(k(vec1, vec2, alpha, size));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)), 
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)), 
+                               alpha)
+                            );
     }
 
     /** @brief Inplace divide-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -373,16 +616,30 @@ namespace viennacl
     * @param vec2    The vector update
     * @param alpha   The scaling factor for the second vector.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void inplace_div_sub(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-                         const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
-                         scalar<SCALARTYPE> const & alpha)
+    template <typename V1, typename V2, typename S3>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_vector<V2>::value
+                                  && viennacl::is_scalar<S3>::value
+                                >::type
+    inplace_div_sub(V1 & vec1,
+                    V2 const & vec2,
+                    S3 const & alpha)
     {
-      assert(vec1.size() == vec2.size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_div_sub");
-      cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && "Incompatible vector sizes in inplace_div_sub()!");
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_div_sub");
+      //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
 
-      viennacl::ocl::enqueue(k(vec1, vec2, alpha, size));        
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+                               alpha)
+                            );        
     }
 
 
@@ -391,53 +648,66 @@ namespace viennacl
 
     //implementation of inner product:
     //namespace {
-      /** @brief Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2).
-      *
-      * @param vec1 The first vector
-      * @param vec2 The second vector
-      * @param result The result scalar (on the gpu)
-      */
-      template<class SCALARTYPE, unsigned int ALIGNMENT>
-      void inner_prod_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-                           const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
-                           scalar<SCALARTYPE> & result)
-      {
-        assert(vec1.size() == vec2.size());
-        viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inner_prod");
-        cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
-        unsigned int work_groups = k.global_work_size() / k.local_work_size();
-        static viennacl::vector<SCALARTYPE> temp(work_groups);
-        
-        /*unsigned int pos = 0;
-        k.argument(pos++, vec1.handle());
-        k.argument(pos++, vec2.handle());
-        k.argument(pos++, size);
-        k.local_buffer(pos++, static_cast<unsigned int>(sizeof(SCALARTYPE) * k.local_work_size()));
-        k.argument(pos++, temp.handle());*/
-        
-        //Note: Number of work groups MUST be a power of two!
-        //std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;
-        assert( work_groups * k.local_work_size() == k.global_work_size() );
-        assert( (k.global_work_size() / k.local_work_size()) == 1 
-               || (k.global_work_size() / k.local_work_size()) == 2 
-               || (k.global_work_size() / k.local_work_size()) == 4
-               || (k.global_work_size() / k.local_work_size()) == 8
-               || (k.global_work_size() / k.local_work_size()) == 16
-               || (k.global_work_size() / k.local_work_size()) == 32
-               || (k.global_work_size() / k.local_work_size()) == 64
-               || (k.global_work_size() / k.local_work_size()) == 128
-               || (k.global_work_size() / k.local_work_size()) == 256
-               || (k.global_work_size() / k.local_work_size()) == 512 );
-               
-        viennacl::ocl::enqueue(k(vec1, vec2, size, viennacl::ocl::local_mem(sizeof(SCALARTYPE) * k.local_work_size()), temp));        
-
-        viennacl::ocl::kernel & ksum = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "sum");
-        
-        ksum.local_work_size(0, work_groups);
-        ksum.global_work_size(0, work_groups);
-        viennacl::ocl::enqueue(ksum(temp, result));
-      }
-    //}
+    /** @brief Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2).
+     *
+     * @param vec1 The first vector
+     * @param vec2 The second vector
+     * @param result The result scalar (on the gpu)
+     */
+    template <typename V1, typename V2, typename S3>
+    void inner_prod_impl(V1 const & vec1,
+                         V2 const & vec2,
+                         S3 & result,
+                         typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                                       && viennacl::is_vector<V2>::value
+                                                       && viennacl::is_scalar<S3>::value
+#ifdef _MSC_VER
+                                                     >::type * dummy = 0)
+#else
+                                                     >::type * dummy)
+#endif                                                   
+    {
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+    
+      assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+             && "Incompatible vector sizes in inner_prod_impl()!");
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inner_prod");
+      //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+      unsigned int work_groups = k.global_work_size() / k.local_work_size();
+      
+      static viennacl::vector<value_type> temp(work_groups);
+      
+      //Note: Number of work groups MUST be a power of two!
+      //std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;
+      assert( work_groups * k.local_work_size() == k.global_work_size() );
+      assert( (k.global_work_size() / k.local_work_size()) == 1 
+              || (k.global_work_size() / k.local_work_size()) == 2 
+              || (k.global_work_size() / k.local_work_size()) == 4
+              || (k.global_work_size() / k.local_work_size()) == 8
+              || (k.global_work_size() / k.local_work_size()) == 16
+              || (k.global_work_size() / k.local_work_size()) == 32
+              || (k.global_work_size() / k.local_work_size()) == 64
+              || (k.global_work_size() / k.local_work_size()) == 128
+              || (k.global_work_size() / k.local_work_size()) == 256
+              || (k.global_work_size() / k.local_work_size()) == 512 );
+              
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+                               viennacl::ocl::local_mem(sizeof(value_type) * k.local_work_size()),
+                               temp));        
+
+      viennacl::ocl::kernel & ksum = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "sum");
+      
+      ksum.local_work_size(0, work_groups);
+      ksum.global_work_size(0, work_groups);
+      viennacl::ocl::enqueue(ksum(viennacl::traits::handle(temp), cl_uint(viennacl::traits::start(temp)), cl_uint(viennacl::traits::size(temp)),
+                                  result)
+                            );
+    }
 
     //public interface of inner product
     /** @brief Computes the inner product of two vectors.
@@ -446,15 +716,18 @@ namespace viennacl
     * @param vec2 The second vector
     * @return The result
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT1, unsigned int ALIGNMENT2>
-    viennacl::scalar_expression< const viennacl::vector<SCALARTYPE, ALIGNMENT1>, 
-                                 const viennacl::vector<SCALARTYPE, ALIGNMENT2>,
-                                 viennacl::op_inner_prod >
-    inner_prod_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT1> & vec1,
-                    const viennacl::vector<SCALARTYPE, ALIGNMENT2> & vec2)
+    template <typename V1, typename V2>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_vector<V2>::value,
+                                  viennacl::scalar_expression< const V1, 
+                                                               const V2,
+                                                               viennacl::op_inner_prod >
+                                >::type
+    inner_prod_impl(V1 const & vec1,
+                    V2 const & vec2)
     {
-      return viennacl::scalar_expression< const viennacl::vector<SCALARTYPE, ALIGNMENT1>, 
-                                          const viennacl::vector<SCALARTYPE, ALIGNMENT2>,
+      return viennacl::scalar_expression< const V1, 
+                                          const V2,
                                           viennacl::op_inner_prod >(vec1, vec2);
     }
 
@@ -462,15 +735,27 @@ namespace viennacl
     
     /** @brief Computes the l^1-norm of a vector
     *
-    * @param vcl_vec The vector
+    * @param vec The vector
     * @param result The result scalar
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void norm_1_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec,
-                     scalar<SCALARTYPE> & result)
+    template <typename V1, typename S2>
+    void norm_1_impl(V1 const & vec,
+                     S2 & result,
+                     typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                                   && viennacl::is_scalar<S2>::value
+#ifdef _MSC_VER
+                                                 >::type * dummy = 0)
+#else
+                                                 >::type * dummy)
+#endif                                                   
     {
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "norm_1");
-      cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "norm_1");
+      //cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
       
       if (k.local_work_size() != k.global_work_size())
       {
@@ -479,10 +764,9 @@ namespace viennacl
         k.global_work_size(0, viennacl::ocl::current_device().max_work_group_size());
       }
       
-      
       unsigned int work_groups = k.global_work_size() / k.local_work_size();
-      viennacl::vector<SCALARTYPE> temp(work_groups);
-        
+      viennacl::vector<value_type> temp(work_groups);
+
       //Note: Number of work groups MUST be a power of two!
       //std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;
       assert( work_groups * k.local_work_size() == k.global_work_size() );
@@ -497,26 +781,42 @@ namespace viennacl
              || (k.global_work_size() / k.local_work_size()) == 256
              || (k.global_work_size() / k.local_work_size()) == 512 );
                
-        viennacl::ocl::enqueue(k(vcl_vec, size, viennacl::ocl::local_mem(sizeof(SCALARTYPE) * k.local_work_size()), temp));        
-        
-        viennacl::ocl::kernel & ksum = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "sum");
-        
-        ksum.local_work_size(0, work_groups);
-        ksum.global_work_size(0, work_groups);
-        viennacl::ocl::enqueue(ksum(temp, result));
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),                                 
+                                viennacl::ocl::local_mem(sizeof(value_type) * k.local_work_size()),
+                                temp));        
+      
+      viennacl::ocl::kernel & ksum = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "sum");
+      
+      ksum.local_work_size(0, work_groups);
+      ksum.global_work_size(0, work_groups);
+      viennacl::ocl::enqueue(ksum(viennacl::traits::handle(temp), cl_uint(viennacl::traits::start(temp)), cl_uint(viennacl::traits::size(temp)),
+                                  result)
+                            );
     }
 
     /** @brief Computes the l^2-norm of a vector - implementation
     *
-    * @param vcl_vec The vector
+    * @param vec The vector
     * @param result The result scalar
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void norm_2_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec,
-                     scalar<SCALARTYPE> & result)
+    template <typename V1, typename S2>
+    void norm_2_impl(V1 const & vec,
+                     S2 & result,
+                     typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                                  && viennacl::is_scalar<S2>::value
+#ifdef _MSC_VER
+                                                 >::type * dummy = 0)
+#else
+                                                 >::type * dummy)
+#endif                                                   
     {
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "norm_2");
-      cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "norm_2");
+      //cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
       
       if (k.local_work_size() != k.global_work_size())
       {
@@ -526,7 +826,7 @@ namespace viennacl
       }
 
       unsigned int work_groups = k.global_work_size() / k.local_work_size();
-      viennacl::vector<SCALARTYPE> temp(work_groups);
+      viennacl::vector<value_type> temp(work_groups);
         
       //Note: Number of work groups MUST be a power of two!
       //std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;
@@ -542,26 +842,44 @@ namespace viennacl
              || (k.global_work_size() / k.local_work_size()) == 256
              || (k.global_work_size() / k.local_work_size()) == 512 );
                
-        viennacl::ocl::enqueue(k(vcl_vec, size, viennacl::ocl::local_mem(sizeof(SCALARTYPE) * k.local_work_size()), temp));        
+        viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),                                 
+                                 viennacl::ocl::local_mem(sizeof(value_type) * k.local_work_size()),
+                                 temp)
+                              );
 
-        viennacl::ocl::kernel & sqrt_sum = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "sqrt_sum");
+        viennacl::ocl::kernel & sqrt_sum = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "sqrt_sum");
         
         sqrt_sum.local_work_size(0, work_groups);
         sqrt_sum.global_work_size(0, work_groups);
-        viennacl::ocl::enqueue(sqrt_sum(temp, result, work_groups));
+        viennacl::ocl::enqueue(
+                        sqrt_sum(viennacl::traits::handle(temp), cl_uint(viennacl::traits::start(temp)), cl_uint(viennacl::traits::size(temp)),
+                                 result)
+                              );
     }
 
     /** @brief Computes the supremum-norm of a vector
     *
-    * @param vcl_vec The vector
+    * @param vec The vector
     * @param result The result scalar
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void norm_inf_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec,
-                  scalar<SCALARTYPE> & result)
+    template <typename V1, typename S2>
+    void norm_inf_impl(V1 const & vec,
+                       S2 & result,
+                       typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                                     && viennacl::is_scalar<S2>::value
+#ifdef _MSC_VER
+                                                   >::type * dummy = 0)
+#else
+                                                   >::type * dummy)
+#endif                                                   
     {
-      cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "norm_inf");
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      //cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "norm_inf");
 
       if (k.local_work_size() != k.global_work_size())
       {
@@ -571,7 +889,7 @@ namespace viennacl
       }
       
       unsigned int work_groups = k.global_work_size() / k.local_work_size();
-      viennacl::vector<SCALARTYPE> temp(work_groups);
+      viennacl::vector<value_type> temp(work_groups);
         
       //Note: Number of work groups MUST be a power of two!
       //std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;
@@ -587,15 +905,20 @@ namespace viennacl
              || work_groups == 256
              || work_groups == 512 );
                
-        viennacl::ocl::enqueue(k(vcl_vec, size, viennacl::ocl::local_mem(sizeof(SCALARTYPE) * k.local_work_size()), temp));
-        //viennacl::ocl::get_queue().finish();
-        
-        //part 2: parallel reduction of reduced kernel:
-        viennacl::ocl::kernel & max_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "vmax");
-        max_kernel.local_work_size(0, work_groups);
-        max_kernel.global_work_size(0, work_groups);
-        
-        viennacl::ocl::enqueue(max_kernel(temp, result, work_groups));
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),                                 
+                               viennacl::ocl::local_mem(sizeof(value_type) * k.local_work_size()),
+                               temp));
+      //viennacl::ocl::get_queue().finish();
+      
+      //part 2: parallel reduction of reduced kernel:
+      viennacl::ocl::kernel & max_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "vmax");
+      max_kernel.local_work_size(0, work_groups);
+      max_kernel.global_work_size(0, work_groups);
+      
+      viennacl::ocl::enqueue(
+                       max_kernel(viennacl::traits::handle(temp), cl_uint(viennacl::traits::start(temp)), cl_uint(viennacl::traits::size(temp)),
+                                  result)
+                            );
     }
 
     //This function should return a CPU scalar, otherwise statements like 
@@ -603,21 +926,28 @@ namespace viennacl
     // are ambiguous
     /** @brief Computes the index of the first entry that is equal to the supremum-norm in modulus.
     *
-    * @param vcl_vec The vector
+    * @param vec The vector
     * @return The result. Note that the result must be a CPU scalar (unsigned int), since gpu scalars are floating point types.
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    cl_uint index_norm_inf(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec)
+    template <typename V1>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value,
+                                  cl_uint
+                                >::type
+    index_norm_inf(V1 const & vec)
     {
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
       viennacl::ocl::handle<cl_mem> h = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(cl_uint));
       
-      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "index_norm_inf");
-      cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
+      viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "index_norm_inf");
+      //cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
 
       k.global_work_size(0, k.local_work_size());
-      viennacl::ocl::enqueue(k(vcl_vec,
-                               size,
-                               viennacl::ocl::local_mem(sizeof(SCALARTYPE) * k.local_work_size()),
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),                                 
+                               viennacl::ocl::local_mem(sizeof(value_type) * k.local_work_size()),
                                viennacl::ocl::local_mem(sizeof(cl_uint) * k.local_work_size()), h));
       
       //read value:
@@ -638,16 +968,29 @@ namespace viennacl
     * @param alpha  The first transformation coefficient
     * @param beta   The second transformation coefficient
     */
-    template<class SCALARTYPE, unsigned int ALIGNMENT>
-    void plane_rotation(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
-                        const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
-                        SCALARTYPE alpha,
-                        SCALARTYPE beta)
+    template <typename V1, typename V2, typename SCALARTYPE>
+    typename viennacl::enable_if< viennacl::is_vector<V1>::value
+                                  && viennacl::is_vector<V2>::value
+                                  && viennacl::is_cpu_scalar<SCALARTYPE>::value
+                                >::type
+    plane_rotation(V1 & vec1,
+                   V2 & vec2,
+                   SCALARTYPE alpha,
+                   SCALARTYPE beta)
     {
-      assert(vec1.size() == vec2.size());
+      typedef typename viennacl::result_of::cpu_value_type<V1>::type        value_type;
+      
+      //TODO: Ensure that correct alignment is chosen for the kernels.
+      const unsigned int ALIGNMENT = V1::alignment;
+      
+      assert(viennacl::traits::size(vec1) == viennacl::traits::size(vec2));
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "plane_rotation");
 
-      viennacl::ocl::enqueue(k(vec1, vec2, alpha, beta, static_cast<cl_uint>(vec1.size())));
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),                                 
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),                                 
+                               alpha,
+                               beta)
+                            );
     }
     
   } //namespace linalg
diff --git a/viennacl/matrix.hpp b/viennacl/matrix.hpp
index 75c33e7..10194eb 100644
--- a/viennacl/matrix.hpp
+++ b/viennacl/matrix.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_MATRIX_HPP_
-#define _VIENNACL_MATRIX_HPP_
+#ifndef VIENNACL_MATRIX_HPP_
+#define VIENNACL_MATRIX_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file matrix.hpp
     @brief Implementation of the dense matrix class
@@ -27,6 +29,7 @@
 #include "viennacl/tools/tools.hpp"
 #include "viennacl/tools/matrix_size_deducer.hpp"
 #include "viennacl/tools/matrix_kernel_class_deducer.hpp"
+#include "viennacl/meta/result_of.hpp"
 
 namespace viennacl
 {
@@ -40,19 +43,19 @@ namespace viennacl
       * @param num_rows  number of entries per row (including alignment)
       * @param num_cols  number of entries per column (including alignment)
       */
-      static unsigned int mem_index(unsigned int i, unsigned int j, unsigned int num_rows, unsigned int num_cols)
+      static vcl_size_t mem_index(vcl_size_t i, vcl_size_t j, vcl_size_t num_rows, vcl_size_t num_cols)
       {
         return i * num_cols + j;
       }
       
-      static unsigned int internal_size1(unsigned int rows, unsigned int alignment)
+      static vcl_size_t internal_size1(vcl_size_t rows, vcl_size_t alignment)
       {
-        return viennacl::tools::roundUpToNextMultiple<unsigned int>(rows, alignment);;
+        return viennacl::tools::roundUpToNextMultiple<vcl_size_t>(rows, alignment);;
       }
       
-      static unsigned int internal_size2(unsigned int cols, unsigned int alignment)
+      static vcl_size_t internal_size2(vcl_size_t cols, vcl_size_t alignment)
       {
-        return viennacl::tools::roundUpToNextMultiple<unsigned int>(cols, alignment);
+        return viennacl::tools::roundUpToNextMultiple<vcl_size_t>(cols, alignment);
       }
     };
 
@@ -65,26 +68,27 @@ namespace viennacl
       * @param num_rows  number of entries per row (including alignment)
       * @param num_cols  number of entries per column (including alignment)
       */
-      static unsigned int mem_index(unsigned int i, unsigned int j, unsigned int num_rows, unsigned int num_cols)
+      static vcl_size_t mem_index(vcl_size_t i, vcl_size_t j, vcl_size_t num_rows, vcl_size_t num_cols)
       {
         return i + j * num_rows;
       }
       
-      static unsigned int internal_size1(unsigned int rows, unsigned int alignment)
+      static vcl_size_t internal_size1(vcl_size_t rows, vcl_size_t alignment)
       {
-        return viennacl::tools::roundUpToNextMultiple<unsigned int>(rows, alignment);
+        return viennacl::tools::roundUpToNextMultiple<vcl_size_t>(rows, alignment);
       }
       
-      static unsigned int internal_size2(unsigned int cols, unsigned int alignment)
+      static vcl_size_t internal_size2(vcl_size_t cols, vcl_size_t alignment)
       {
-        return viennacl::tools::roundUpToNextMultiple<unsigned int>(cols, alignment);
+        return viennacl::tools::roundUpToNextMultiple<vcl_size_t>(cols, alignment);
       }
     };
     
-    
     template <typename LHS, typename RHS, typename OP>
     class matrix_expression
     {
+        
+      
       public:
         ///** @brief Extracts the vector type from the two operands.
         //*/
@@ -100,14 +104,14 @@ namespace viennacl
         RHS & rhs() const { return _rhs; }
         
         /** @brief Returns the size of the result vector */
-        unsigned int size1() const { return viennacl::tools::MATRIX_SIZE_DEDUCER<LHS, RHS, OP>::size1(_lhs, _rhs); }
-        unsigned int size2() const { return viennacl::tools::MATRIX_SIZE_DEDUCER<LHS, RHS, OP>::size2(_lhs, _rhs); }
+        std::size_t size1() const { return viennacl::tools::MATRIX_SIZE_DEDUCER<LHS, RHS, OP>::size1(_lhs, _rhs); }
+        std::size_t size2() const { return viennacl::tools::MATRIX_SIZE_DEDUCER<LHS, RHS, OP>::size2(_lhs, _rhs); }
         
       private:
         /** @brief The left hand side operand */
-        LHS & _lhs;
+        typename result_of::matrix_expression_internal_storage<LHS>::type _lhs;
         /** @brief The right hand side operand */
-        RHS & _rhs;
+        typename result_of::matrix_expression_internal_storage<RHS>::type _rhs;
     };
     
     
@@ -125,24 +129,26 @@ namespace viennacl
       public:
         typedef typename MATRIXTYPE::value_type       value_type;
         
-        matrix_iterator(MATRIXTYPE & mat, unsigned int start_row, unsigned int start_col) : _mat(mat), _row(start_row), _col(start_col) {};
+        matrix_iterator(MATRIXTYPE & mat, 
+                        std::size_t start_row,
+                        std::size_t start_col) : mat_(mat), row_(start_row), col_(start_col) {};
         
-        value_type operator*(void) { return _mat(_row, _col); }
-        self_type & operator++(void) { viennacl::tools::MATRIX_ITERATOR_INCREMENTER<ROWCOL, MATRIXTYPE>::apply(_mat, _row, _col); return *this; }
+        value_type operator*(void) { return mat_(row_, col_); }
+        self_type & operator++(void) { viennacl::tools::MATRIX_ITERATOR_INCREMENTER<ROWCOL, MATRIXTYPE>::apply(mat_, row_, col_); return *this; }
         self_type & operator++(int) { self_type tmp = *this; ++(*this); return tmp; }
         
-        bool operator==(self_type const & other) { return (_row == other._row) && (_col == other._col); }
+        bool operator==(self_type const & other) { return (row_ == other.row_) && (col_ == other.col_); }
         bool operator!=(self_type const & other) { return !(*this == other); }
         
-        unsigned int index1() { return _row; }
-        unsigned int index2() { return _col; }
+        vcl_size_t index1() { return row_; }
+        vcl_size_t index2() { return col_; }
         
-        MATRIXTYPE & operator()(void) const { return _mat; }
+        MATRIXTYPE & operator()(void) const { return mat_; }
       
       private:
-        MATRIXTYPE & _mat;
-        unsigned int _row;
-        unsigned int _col;
+        MATRIXTYPE & mat_;
+        vcl_size_t row_;
+        vcl_size_t col_;
     };
 
     /** @brief A dense matrix class
@@ -160,9 +166,10 @@ namespace viennacl
       typedef matrix_iterator<row_iteration, matrix<SCALARTYPE, F, ALIGNMENT> >   iterator1;
       typedef matrix_iterator<col_iteration, matrix<SCALARTYPE, F, ALIGNMENT> >   iterator2;
       typedef scalar<typename viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT<SCALARTYPE>::ResultType>   value_type;
+      typedef vcl_size_t                                                          size_type;
       
       /** @brief The default constructor. Does not allocate any memory. */
-      matrix() : _rows(0), _columns(0)
+      matrix() : rows_(0), columns_(0)
       {
         typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType    KernelClass;
         KernelClass::init();
@@ -173,29 +180,29 @@ namespace viennacl
       * @param rows     Number of rows
       * @param columns  Number of columns
       */
-      explicit matrix(unsigned int rows, unsigned int columns) :
-        _rows(rows), _columns(columns)
+      explicit matrix(size_type rows, size_type columns) :
+        rows_(rows), columns_(columns)
       {
         typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType    KernelClass;
         KernelClass::init();
-        _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*internal_size());
+        elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*internal_size());
       }
 
-      explicit matrix(cl_mem mem, unsigned int rows, unsigned int columns) :
-        _rows(rows), _columns(columns)
+      explicit matrix(cl_mem mem, size_type rows, size_type columns) :
+        rows_(rows), columns_(columns)
       {
         typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType    KernelClass;
         KernelClass::init();
-        _elements = mem;
-        _elements.inc(); //prevents that the user-provided memory is deleted once the matrix object is destroyed.
+        elements_ = mem;
+        elements_.inc(); //prevents that the user-provided memory is deleted once the matrix object is destroyed.
       }
 
       template <typename LHS, typename RHS, typename OP>
-      matrix(matrix_expression< LHS, RHS, OP> const & proxy) : _rows(proxy.size1()), _columns(proxy.size2())
+      matrix(matrix_expression< LHS, RHS, OP> const & proxy) : rows_(proxy.size1()), columns_(proxy.size2())
       {
         typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType    KernelClass;
         KernelClass::init();
-        _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*internal_size());
+        elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*internal_size());
         
         *this = proxy;
       }
@@ -203,8 +210,8 @@ namespace viennacl
 
       //copy constructor:
       matrix(const matrix<SCALARTYPE, F, ALIGNMENT> & mat) :
-        _rows(mat.size1()), _columns(mat.size2()),
-        _elements(viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*internal_size()))
+        rows_(mat.size1()), columns_(mat.size2()),
+        elements_(viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*internal_size()))
       {
         cl_int err;
         err = clEnqueueCopyBuffer(viennacl::ocl::get_queue().handle(), mat.handle(), handle(), 0, 0, sizeof(SCALARTYPE)*internal_size(), 0, NULL, NULL);
@@ -248,8 +255,8 @@ namespace viennacl
         
         std::vector<SCALARTYPE> temp_trans(internal_size());
 
-        for (size_t i=0; i<proxy.lhs().size1(); ++i)
-          for (size_t j=0; j<proxy.lhs().size2(); ++j)
+        for (vcl_size_t i=0; i<proxy.lhs().size1(); ++i)
+          for (vcl_size_t j=0; j<proxy.lhs().size2(); ++j)
             temp_trans[F::mem_index(j,i, internal_size1(), internal_size2())] 
              = temp[F::mem_index(i,j, proxy.lhs().internal_size1(), proxy.lhs().internal_size2())];
 
@@ -260,7 +267,7 @@ namespace viennacl
             std::cout << temp_trans[F::mem_index(i,j, proxy.lhs().internal_size1(), proxy.lhs().internal_size2())] << ", ";
         }*/
         
-        _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
+        elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, 
                                                                    sizeof(SCALARTYPE)*internal_size(),
                                                                    &(temp_trans[0]));
           
@@ -276,7 +283,7 @@ namespace viennacl
       * @param columns    New number of columns
       * @param preserve   If true, existing values are preserved. 
       */
-      void resize(unsigned int rows, unsigned int columns, bool preserve = true)
+      void resize(size_type rows, size_type columns, bool preserve = true)
       {
         assert(rows > 0 && columns > 0);
         if (preserve)
@@ -294,14 +301,14 @@ namespace viennacl
           
           //set up entries of new matrix:
           std::vector< SCALARTYPE > new_entries(F::internal_size1(rows, ALIGNMENT) * F::internal_size2(columns, ALIGNMENT));
-          for (unsigned int i=0; i<rows; ++i)
+          for (size_type i=0; i<rows; ++i)
           {
-            if (i >= _rows)
+            if (i >= rows_)
               continue;
               
-            for (unsigned int j=0; j<columns; ++j)
+            for (size_type j=0; j<columns; ++j)
             {
-              if (j >= _columns)
+              if (j >= columns_)
                 continue;
               new_entries[F::mem_index(i, j, F::internal_size1(rows, ALIGNMENT), F::internal_size2(columns, ALIGNMENT))] 
                  = old_entries[F::mem_index(i, j, internal_size1(), internal_size2())];
@@ -309,17 +316,17 @@ namespace viennacl
           }
           
           //copy new entries to GPU:
-          _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, new_entries);
-          _rows = rows;
-          _columns = columns;
+          elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, new_entries);
+          rows_ = rows;
+          columns_ = columns;
         }
         else //discard old entries:
         {
-          _rows = rows;
-          _columns = columns;
+          rows_ = rows;
+          columns_ = columns;
           
           std::vector< SCALARTYPE > new_entries(F::internal_size1(rows, ALIGNMENT) * F::internal_size2(columns, ALIGNMENT));
-          _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, new_entries);
+          elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, new_entries);
         }
       }
       
@@ -327,19 +334,19 @@ namespace viennacl
       //read-write access to an element of the vector
       /** @brief Read-write access to a single element of the vector
       */
-      entry_proxy<SCALARTYPE> operator()(unsigned int row_index, unsigned int col_index)
+      entry_proxy<SCALARTYPE> operator()(size_type row_index, size_type col_index)
       {
-        return entry_proxy<SCALARTYPE>(F::mem_index(row_index, col_index, internal_size1(), internal_size2()), _elements);
+        return entry_proxy<SCALARTYPE>(F::mem_index(row_index, col_index, internal_size1(), internal_size2()), elements_);
       }
       
       /** @brief Read access to a single element of the vector
       */
-      scalar<SCALARTYPE> operator()(unsigned int row_index, unsigned int col_index) const
+      scalar<SCALARTYPE> operator()(size_type row_index, size_type col_index) const
       {
         scalar<SCALARTYPE> tmp;
         cl_int err;
         err = clEnqueueCopyBuffer(viennacl::ocl::get_queue().handle(),
-                                  _elements,
+                                  elements_,
                                   tmp.handle(),
                                   sizeof(SCALARTYPE) * F::mem_index(row_index, col_index, internal_size1(), internal_size2()),
                                   0,
@@ -370,6 +377,12 @@ namespace viennacl
         return *this;
       }
 
+      matrix<SCALARTYPE, F, ALIGNMENT> & operator += (const matrix_range< matrix<SCALARTYPE, F, ALIGNMENT> > & other) 
+      {
+        viennacl::linalg::inplace_add(*this, other);
+        return *this;
+      }
+
       matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT>,
                          const matrix<SCALARTYPE, F, ALIGNMENT>,
                          op_sub >
@@ -482,32 +495,32 @@ namespace viennacl
 
 
       /** @brief Returns the number of rows */
-      const unsigned int & size1() const { return _rows;}
+      const size_type & size1() const { return rows_;}
       /** @brief Returns the number of columns */
-      const unsigned int & size2() const { return _columns; }
+      const size_type & size2() const { return columns_; }
       
       /** @brief Resets all entries to zero */
       void clear()
       {
-        unsigned int internal_size = internal_size1() * internal_size2();
+        std::size_t internal_size = internal_size1() * internal_size2();
         
         typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType    KernelClass;
         
         viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "clear");
-        viennacl::ocl::enqueue(k(_elements, internal_size));
+        viennacl::ocl::enqueue(k(elements_, static_cast<cl_uint>(internal_size)));
       }
       
       
       //const unsigned int row_stride() const { return roundUpToNextMultiple<unsigned int>(columns(), ALIGNMENT); }
       /** @brief Returns the internal number of rows. Usually required for launching OpenCL kernels only */
-      const unsigned int internal_size1() const { return F::internal_size1(size1(), ALIGNMENT); }
+      const size_type internal_size1() const { return F::internal_size1(size1(), ALIGNMENT); }
       /** @brief Returns the internal number of columns. Usually required for launching OpenCL kernels only */
-      const unsigned int internal_size2() const { return F::internal_size2(size2(), ALIGNMENT); }
+      const size_type internal_size2() const { return F::internal_size2(size2(), ALIGNMENT); }
       /** @brief Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE) */
-      const unsigned int internal_size() const { return internal_size1() * internal_size2(); }
+      const size_type internal_size() const { return internal_size1() * internal_size2(); }
       
       /** @brief Returns the OpenCL handle */
-      const viennacl::ocl::handle<cl_mem> & handle() const { return _elements; }
+      const viennacl::ocl::handle<cl_mem> & handle() const { return elements_; }
       
       #if defined(_MSC_VER) && _MSC_VER < 1500          //Visual Studio 2005 needs special treatment
       template <typename CPU_MATRIX>
@@ -568,9 +581,9 @@ namespace viennacl
       #endif                 
       
     private:
-      unsigned int _rows;
-      unsigned int _columns;
-      viennacl::ocl::handle<cl_mem> _elements;
+      size_type rows_;
+      size_type columns_;
+      viennacl::ocl::handle<cl_mem> elements_;
     }; //matrix
 
     /** @brief Prints the matrix. Output is compatible to boost::numeric::ublas
@@ -581,6 +594,8 @@ namespace viennacl
     template<class SCALARTYPE, typename F, unsigned int ALIGNMENT>
     std::ostream & operator<<(std::ostream & s, const matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix)
     {
+      typedef typename matrix<SCALARTYPE, F, ALIGNMENT>::size_type      size_type;
+      
       std::vector<SCALARTYPE> tmp(gpu_matrix.internal_size());
       cl_int err;
       err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle(), CL_TRUE, 0, sizeof(SCALARTYPE) * gpu_matrix.internal_size(), &tmp[0], 0, NULL, NULL);
@@ -590,12 +605,12 @@ namespace viennacl
       s << "[" << gpu_matrix.size1() << "," << gpu_matrix.size2() << "]";
       
       s << "(";
-      for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
+      for (size_type i = 0; i < gpu_matrix.size1(); ++i)
       {
         s << "(";
-        for (unsigned int j = 0; j < gpu_matrix.size2(); ++j)
+        for (size_type j = 0; j < gpu_matrix.size2(); ++j)
         {
-          s << tmp[ i * gpu_matrix.internal_size2() + j ];
+          s << tmp[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())];
           if (j < gpu_matrix.size2() - 1)
             s << ",";
         }
@@ -610,7 +625,7 @@ namespace viennacl
     /** @brief Prints the matrix. Output is compatible to boost::numeric::ublas
     *
     * @param s            STL output stream
-    * @param gpu_matrix   A dense ViennaCL matrix
+    * @param expr         A matrix expression
     */
     template<typename LHS, typename RHS, typename OP>
     std::ostream & operator<<(std::ostream & s, const matrix_expression<LHS, RHS, OP> & expr)
@@ -648,17 +663,31 @@ namespace viennacl
     void copy(const CPU_MATRIX & cpu_matrix,
               matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix )
     {
-      gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.size1()),
-                        static_cast<unsigned int>(cpu_matrix.size2()), false);
+      typedef typename matrix<SCALARTYPE, F, ALIGNMENT>::size_type      size_type;
+      
+      //std::cout << "Copying CPU_MATRIX!" << std::endl;
+      //std::cout << "Size at begin: " << gpu_matrix.size1() << ", " << gpu_matrix.size2() << std::endl;
+      if (gpu_matrix.size1() == 0 || gpu_matrix.size2() == 0)
+      {
+        gpu_matrix.resize(cpu_matrix.size1(),
+                          cpu_matrix.size2(), false);
+      }
+      else
+      {
+        assert( (gpu_matrix.size1() == cpu_matrix.size1()) 
+               && (gpu_matrix.size2() == cpu_matrix.size2())
+              );
+      }
 
       std::vector<SCALARTYPE> data(gpu_matrix.internal_size());
-      for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
+      for (size_type i = 0; i < gpu_matrix.size1(); ++i)
       {
-        for (unsigned int j = 0; j < gpu_matrix.size2(); ++j) 
+        for (size_type j = 0; j < gpu_matrix.size2(); ++j) 
           data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix(i,j);
       }
       
-      gpu_matrix._elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
+      gpu_matrix.elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
+      //std::cout << "Size at end: " << gpu_matrix.size1() << ", " << gpu_matrix.size2() << std::endl;
     }
     
     //
@@ -673,18 +702,29 @@ namespace viennacl
     void copy(const std::vector< std::vector<SCALARTYPE, A1>, A2> & cpu_matrix,
               matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix )
     {
-      gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.size()),
-                        static_cast<unsigned int>(cpu_matrix[0].size()),
-                        false);
+      typedef typename matrix<SCALARTYPE, F, ALIGNMENT>::size_type      size_type;
+      
+      if (gpu_matrix.size1() == 0 || gpu_matrix.size2() == 0)
+      {
+        gpu_matrix.resize(cpu_matrix.size(),
+                          cpu_matrix[0].size(),
+                          false);
+      }
+      else
+      {
+        assert( (gpu_matrix.size1() == cpu_matrix.size()) 
+               && (gpu_matrix.size2() == cpu_matrix[0].size())
+              );
+      }
 
       std::vector<SCALARTYPE> data(gpu_matrix.internal_size());
-      for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
+      for (size_type i = 0; i < gpu_matrix.size1(); ++i)
       {
-        for (unsigned int j = 0; j < gpu_matrix.size2(); ++j) 
+        for (size_type j = 0; j < gpu_matrix.size2(); ++j) 
           data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix[i][j];
       }
       
-      gpu_matrix._elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
+      gpu_matrix.elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
     }
     
     
@@ -702,7 +742,7 @@ namespace viennacl
                    SCALARTYPE * cpu_matrix_end,
                    matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix)
     {
-      gpu_matrix._elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+      gpu_matrix.elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
                                                                             sizeof(SCALARTYPE) * (cpu_matrix_end - cpu_matrix_begin),
                                                                             cpu_matrix_begin);
     }
@@ -718,18 +758,29 @@ namespace viennacl
     void copy(const Eigen::MatrixXf & cpu_matrix,
               matrix<float, F, ALIGNMENT> & gpu_matrix)
     {
-      gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.rows()),
-                        static_cast<unsigned int>(cpu_matrix.cols()),
-                        false);
+      typedef typename matrix<float, F, ALIGNMENT>::size_type      size_type;
+      
+      if (gpu_matrix.size1() == 0 || gpu_matrix.size2() == 0)
+      {
+        gpu_matrix.resize(cpu_matrix.rows(),
+                          cpu_matrix.cols(),
+                          false);
+      }
+      else
+      {
+        assert( (gpu_matrix.size1() == static_cast<std::size_t>(cpu_matrix.rows())) 
+               && (gpu_matrix.size2() == static_cast<std::size_t>(cpu_matrix.cols()))
+              );
+      }
 
       std::vector<float> data(gpu_matrix.internal_size());
-      for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
+      for (size_type i = 0; i < gpu_matrix.size1(); ++i)
       {
-        for (unsigned int j = 0; j < gpu_matrix.size2(); ++j) 
+        for (size_type j = 0; j < gpu_matrix.size2(); ++j) 
           data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix(i,j);
       }
       
-      gpu_matrix._elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
+      gpu_matrix.elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
     }
     
     /** @brief Copies a dense Eigen matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU)
@@ -741,18 +792,29 @@ namespace viennacl
     void copy(const Eigen::MatrixXd & cpu_matrix,
               matrix<double, F, ALIGNMENT> & gpu_matrix)
     {
-      gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.rows()),
-                        static_cast<unsigned int>(cpu_matrix.cols()),
-                        false);
+      typedef typename matrix<double, F, ALIGNMENT>::size_type      size_type;
+      
+      if (gpu_matrix.size1() == 0 || gpu_matrix.size2() == 0)
+      {
+        gpu_matrix.resize(cpu_matrix.rows(),
+                          cpu_matrix.cols(),
+                          false);
+      }
+      else
+      {
+        assert( (gpu_matrix.size1() == static_cast<std::size_t>(cpu_matrix.rows())) 
+               && (gpu_matrix.size2() == static_cast<std::size_t>(cpu_matrix.cols()))
+              );
+      }
 
       std::vector<double> data(gpu_matrix.internal_size());
-      for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
+      for (size_type i = 0; i < gpu_matrix.size1(); ++i)
       {
-        for (unsigned int j = 0; j < gpu_matrix.size2(); ++j) 
+        for (size_type j = 0; j < gpu_matrix.size2(); ++j) 
           data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix(i,j);
       }
       
-      gpu_matrix._elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
+      gpu_matrix.elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
     }
     #endif
     
@@ -766,18 +828,29 @@ namespace viennacl
     void copy(const mtl::dense2D<SCALARTYPE, T>& cpu_matrix,
               matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix)
     {
-      gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.num_rows()),
-                        static_cast<unsigned int>(cpu_matrix.num_cols()),
-                        false);
+      typedef typename matrix<SCALARTYPE, F, ALIGNMENT>::size_type      size_type;
+      
+      if (gpu_matrix.size1() == 0 || gpu_matrix.size2() == 0)
+      {
+        gpu_matrix.resize(cpu_matrix.num_rows(),
+                          cpu_matrix.num_cols(),
+                          false);
+      }
+      else
+      {
+        assert( (gpu_matrix.size1() == cpu_matrix.num_rows()) 
+               && (gpu_matrix.size2() == cpu_matrix.num_cols())
+              );
+      }
 
       std::vector<SCALARTYPE> data(gpu_matrix.internal_size());
-      for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
+      for (size_type i = 0; i < gpu_matrix.size1(); ++i)
       {
-        for (unsigned int j = 0; j < gpu_matrix.size2(); ++j) 
+        for (size_type j = 0; j < gpu_matrix.size2(); ++j) 
           data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix[i][j];
       }
       
-      gpu_matrix._elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
+      gpu_matrix.elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
     }
     #endif
     
@@ -796,6 +869,8 @@ namespace viennacl
     void copy(const matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix,
               CPU_MATRIX & cpu_matrix )
     {
+      typedef typename matrix<float, F, ALIGNMENT>::size_type      size_type;
+      
       if ( (gpu_matrix.size1() > 0) && (gpu_matrix.size2() > 0) )
       {
         std::vector<SCALARTYPE> temp_buffer(gpu_matrix.internal_size());
@@ -803,8 +878,8 @@ namespace viennacl
         VIENNACL_ERR_CHECK(err);
         
         //now copy entries to cpu_matrix:
-        for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
-          for (unsigned int j = 0; j < gpu_matrix.size2(); ++j) 
+        for (size_type i = 0; i < gpu_matrix.size1(); ++i)
+          for (size_type j = 0; j < gpu_matrix.size2(); ++j) 
             cpu_matrix(i,j) = temp_buffer[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())];
       }
     }
@@ -819,6 +894,8 @@ namespace viennacl
     void copy(const matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix,
               std::vector< std::vector<SCALARTYPE, A1>, A2> & cpu_matrix)
     {
+      typedef typename matrix<float, F, ALIGNMENT>::size_type      size_type;
+      
       if ( (gpu_matrix.size1() > 0) && (gpu_matrix.size2() > 0) 
          && (cpu_matrix.size() >= gpu_matrix.size1()) && (cpu_matrix[0].size() >= gpu_matrix.size2()))
       {
@@ -827,8 +904,8 @@ namespace viennacl
         VIENNACL_ERR_CHECK(err);
         
         //now copy entries to cpu_matrix:
-        for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
-          for (unsigned int j = 0; j < gpu_matrix.size2(); ++j) 
+        for (size_type i = 0; i < gpu_matrix.size1(); ++i)
+          for (size_type j = 0; j < gpu_matrix.size2(); ++j) 
             cpu_matrix[i][j] = temp_buffer[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())];
       }
     }
@@ -868,7 +945,7 @@ namespace viennacl
                                  op_prod>  operator*(const viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
                                                                                         const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
                                                                                         op_prod> & proxy,
-                                                     CPU_SCALAR val)
+                                                     CPU_SCALAR const & val)
     {
       return viennacl::matrix_expression< const viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
                                                                              const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
@@ -883,7 +960,7 @@ namespace viennacl
                                                                     const viennacl::vector<SCALARTYPE, VA2>,
                                                                     op_prod>,
                                  const SCALARTYPE,
-                                 op_prod>  operator*(CPU_SCALAR val,
+                                 op_prod>  operator*(CPU_SCALAR const & val,
                                                      viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VA1>,
                                                                                   const viennacl::vector<SCALARTYPE, VA2>,
                                                                                   op_prod> const & proxy)
diff --git a/viennacl/matrix_proxy.hpp b/viennacl/matrix_proxy.hpp
new file mode 100644
index 0000000..32354b8
--- /dev/null
+++ b/viennacl/matrix_proxy.hpp
@@ -0,0 +1,361 @@
+#ifndef VIENNACL_MATRIX_PROXY_HPP_
+#define VIENNACL_MATRIX_PROXY_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file matrix_proxy.hpp
+    @brief Proxy classes for matrices.
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/range.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/matrix_operations.hpp"
+
+namespace viennacl
+{
+
+  template <typename MatrixType>
+  class matrix_range
+  {
+    public:
+      typedef typename MatrixType::value_type     value_type;
+      typedef range::size_type                    size_type;
+      typedef range::difference_type              difference_type;
+      typedef value_type                          reference;
+      typedef const value_type &                  const_reference;
+      
+      matrix_range(MatrixType & A, 
+                   range const & row_range,
+                   range const & col_range) : A_(A), row_range_(row_range), col_range_(col_range) {}
+                   
+      size_type start1() const { return row_range_.start(); }
+      size_type size1() const { return row_range_.size(); }
+
+      size_type start2() const { return col_range_.start(); }
+      size_type size2() const { return col_range_.size(); }
+      
+      template <typename MatrixType1, typename MatrixType2>
+      matrix_range<MatrixType> & operator = (const matrix_expression< MatrixType1,
+                                                                      MatrixType2,
+                                                                      op_prod > & proxy) 
+      {
+        viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), *this);
+        return *this;
+      }
+      
+      
+      matrix_range<MatrixType> & operator += (matrix_range<MatrixType> const & other)
+      {
+        viennacl::linalg::inplace_add(*this, other);
+        return *this;
+      }
+      
+      template <typename MatrixType1, typename MatrixType2>
+      matrix_range<MatrixType> & operator += (const matrix_expression< MatrixType1,
+                                                                       MatrixType2,
+                                                                       op_prod > & proxy)
+      {
+        MatrixType1 temp = proxy;
+        viennacl::range r1(0, temp.size1());
+        viennacl::range r2(0, temp.size2());
+        viennacl::matrix_range<MatrixType> temp2(temp, r1, r2);
+        viennacl::linalg::inplace_add(*this, temp2);
+        return *this;
+      }
+      
+      template <typename MatrixType1, typename MatrixType2>
+      matrix_range<MatrixType> & operator += (const matrix_expression< const matrix_range<MatrixType1>,
+                                                                       const matrix_range<MatrixType2>,
+                                                                       op_prod > & proxy)
+      {
+        MatrixType1 temp(proxy.size1(), proxy.size2());
+        viennacl::range r1(0, temp.size1());
+        viennacl::range r2(0, temp.size2());
+        viennacl::matrix_range<MatrixType> temp2(temp, r1, r2);
+        temp2 = proxy;
+        viennacl::linalg::inplace_add(*this, temp2);
+        return *this;
+      }
+
+      //const_reference operator()(size_type i, size_type j) const { return A_(start1() + i, start2() + i); }
+      //reference operator()(size_type i, size_type j) { return A_(start1() + i, start2() + i); }
+
+      MatrixType & get() { return A_; }
+      const MatrixType & get() const { return A_; }
+
+    private:
+      MatrixType & A_;
+      range row_range_;
+      range col_range_;
+  };
+
+  
+  /** @brief Returns an expression template class representing a transposed matrix */
+  template <typename MatrixType>
+  matrix_expression< const matrix_range<MatrixType>,
+                     const matrix_range<MatrixType>,
+                     op_trans> trans(const matrix_range<MatrixType> & mat)
+  {
+    return matrix_expression< const matrix_range<MatrixType>,
+                              const matrix_range<MatrixType>,
+                              op_trans>(mat, mat);
+  }
+  
+  
+  
+  
+  /////////////////////////////////////////////////////////////
+  ///////////////////////// CPU to GPU ////////////////////////
+  /////////////////////////////////////////////////////////////
+  
+  //row_major:
+  template <typename CPU_MATRIX, typename SCALARTYPE>
+  void copy(const CPU_MATRIX & cpu_matrix,
+            matrix_range<matrix<SCALARTYPE, row_major, 1> > & gpu_matrix_range )
+  {
+    assert( (cpu_matrix.size1() == gpu_matrix_range.size1())
+           && (cpu_matrix.size2() == gpu_matrix_range.size2()) );
+    
+     if ( gpu_matrix_range.start2() != 0 ||  gpu_matrix_range.size2() !=  gpu_matrix_range.get().size2())
+     {
+       std::vector<SCALARTYPE> entries(gpu_matrix_range.size2());
+       
+       //copy each stride separately:
+       for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+       {
+         for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+           entries[j] = cpu_matrix(i,j);
+         
+         size_t start_offset = (gpu_matrix_range.start1() + i) * gpu_matrix_range.get().internal_size2() + gpu_matrix_range.start2();
+         size_t num_entries = gpu_matrix_range.size2();
+         cl_int err = clEnqueueWriteBuffer(viennacl::ocl::get_queue().handle(),
+                                          gpu_matrix_range.get().handle(), CL_TRUE, 
+                                          sizeof(SCALARTYPE)*start_offset,
+                                          sizeof(SCALARTYPE)*num_entries,
+                                          &(entries[0]), 0, NULL, NULL);
+        VIENNACL_ERR_CHECK(err);
+        //std::cout << "Strided copy worked!" << std::endl;
+       }
+     }
+     else
+     {
+       //full block can be copied: 
+       std::vector<SCALARTYPE> entries(gpu_matrix_range.size1()*gpu_matrix_range.size2());
+       
+       //copy each stride separately:
+       for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+         for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+           entries[i*gpu_matrix_range.get().internal_size2() + j] = cpu_matrix(i,j);
+       
+       size_t start_offset = gpu_matrix_range.start1() * gpu_matrix_range.get().internal_size2();
+       size_t num_entries = gpu_matrix_range.size1() * gpu_matrix_range.size2();
+       //std::cout << "start_offset: " << start_offset << std::endl;
+       cl_int err = clEnqueueWriteBuffer(viennacl::ocl::get_queue().handle(),
+                                         gpu_matrix_range.get().handle(), CL_TRUE, 
+                                         sizeof(SCALARTYPE)*start_offset,
+                                         sizeof(SCALARTYPE)*num_entries,
+                                         &(entries[0]), 0, NULL, NULL);
+       VIENNACL_ERR_CHECK(err);
+       //std::cout << "Block copy worked!" << std::endl;
+     }
+  }
+  
+  //column_major:
+  template <typename CPU_MATRIX, typename SCALARTYPE>
+  void copy(const CPU_MATRIX & cpu_matrix,
+            matrix_range<matrix<SCALARTYPE, column_major, 1> > & gpu_matrix_range )
+  {
+    assert( (cpu_matrix.size1() == gpu_matrix_range.size1())
+           && (cpu_matrix.size2() == gpu_matrix_range.size2()) );
+    
+     if ( gpu_matrix_range.start1() != 0 ||  gpu_matrix_range.size1() != gpu_matrix_range.get().size1())
+     {
+       std::vector<SCALARTYPE> entries(gpu_matrix_range.size1());
+       
+       //copy each stride separately:
+       for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+       {
+         for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+           entries[i] = cpu_matrix(i,j);
+         
+         size_t start_offset = (gpu_matrix_range.start2() + j) * gpu_matrix_range.get().internal_size1() + gpu_matrix_range.start1();
+         size_t num_entries = gpu_matrix_range.size1();
+         cl_int err = clEnqueueWriteBuffer(viennacl::ocl::get_queue().handle(),
+                                          gpu_matrix_range.get().handle(), CL_TRUE, 
+                                          sizeof(SCALARTYPE)*start_offset,
+                                          sizeof(SCALARTYPE)*num_entries,
+                                          &(entries[0]), 0, NULL, NULL);
+        VIENNACL_ERR_CHECK(err);
+        //std::cout << "Strided copy worked!" << std::endl;
+       }
+     }
+     else
+     {
+       //full block can be copied: 
+       std::vector<SCALARTYPE> entries(gpu_matrix_range.size1()*gpu_matrix_range.size2());
+       
+       //copy each stride separately:
+       for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+         for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+           entries[i + j*gpu_matrix_range.get().internal_size1()] = cpu_matrix(i,j);
+       
+       size_t start_offset = gpu_matrix_range.start2() * gpu_matrix_range.get().internal_size1();
+       size_t num_entries = gpu_matrix_range.size1() * gpu_matrix_range.size2();
+       //std::cout << "start_offset: " << start_offset << std::endl;
+       cl_int err = clEnqueueWriteBuffer(viennacl::ocl::get_queue().handle(),
+                                         gpu_matrix_range.get().handle(), CL_TRUE, 
+                                         sizeof(SCALARTYPE)*start_offset,
+                                         sizeof(SCALARTYPE)*num_entries,
+                                         &(entries[0]), 0, NULL, NULL);
+       VIENNACL_ERR_CHECK(err);
+       //std::cout << "Block copy worked!" << std::endl;
+     }
+    
+  }
+
+
+  /////////////////////////////////////////////////////////////
+  ///////////////////////// GPU to CPU ////////////////////////
+  /////////////////////////////////////////////////////////////
+  
+  
+  //row_major:
+  template <typename CPU_MATRIX, typename SCALARTYPE>
+  void copy(matrix_range<matrix<SCALARTYPE, row_major, 1> > const & gpu_matrix_range,
+            CPU_MATRIX & cpu_matrix)
+  {
+    assert( (cpu_matrix.size1() == gpu_matrix_range.size1())
+           && (cpu_matrix.size2() == gpu_matrix_range.size2()) );
+    
+     if ( gpu_matrix_range.start2() != 0 ||  gpu_matrix_range.size2() !=  gpu_matrix_range.get().size2())
+     {
+       std::vector<SCALARTYPE> entries(gpu_matrix_range.size2());
+       
+       //copy each stride separately:
+       for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+       {
+         size_t start_offset = (gpu_matrix_range.start1() + i) * gpu_matrix_range.get().internal_size2() + gpu_matrix_range.start2();
+         size_t num_entries = gpu_matrix_range.size2();
+         cl_int err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(),
+                                          gpu_matrix_range.get().handle(), CL_TRUE, 
+                                          sizeof(SCALARTYPE)*start_offset,
+                                          sizeof(SCALARTYPE)*num_entries,
+                                          &(entries[0]), 0, NULL, NULL);
+        VIENNACL_ERR_CHECK(err);
+        //std::cout << "Strided copy worked!" << std::endl;
+        
+        for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+          cpu_matrix(i,j) = entries[j];
+         
+       }
+     }
+     else
+     {
+       //full block can be copied: 
+       std::vector<SCALARTYPE> entries(gpu_matrix_range.size1()*gpu_matrix_range.size2());
+       
+       size_t start_offset = gpu_matrix_range.start1() * gpu_matrix_range.get().internal_size2();
+       size_t num_entries = gpu_matrix_range.size1() * gpu_matrix_range.size2();
+       //std::cout << "start_offset: " << start_offset << std::endl;
+       cl_int err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(),
+                                         gpu_matrix_range.get().handle(), CL_TRUE, 
+                                         sizeof(SCALARTYPE)*start_offset,
+                                         sizeof(SCALARTYPE)*num_entries,
+                                         &(entries[0]), 0, NULL, NULL);
+       VIENNACL_ERR_CHECK(err);
+       //std::cout << "Block copy worked!" << std::endl;
+
+       for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+         for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+           cpu_matrix(i,j) = entries[i*gpu_matrix_range.get().internal_size2() + j];
+    }
+    
+  }
+  
+  
+  //column_major:
+  template <typename CPU_MATRIX, typename SCALARTYPE>
+  void copy(matrix_range<matrix<SCALARTYPE, column_major, 1> > const & gpu_matrix_range,
+            CPU_MATRIX & cpu_matrix)
+  {
+    assert( (cpu_matrix.size1() == gpu_matrix_range.size1())
+           && (cpu_matrix.size2() == gpu_matrix_range.size2()) );
+    
+     if ( gpu_matrix_range.start1() != 0 ||  gpu_matrix_range.size1() !=  gpu_matrix_range.get().size1())
+     {
+       std::vector<SCALARTYPE> entries(gpu_matrix_range.size1());
+       
+       //copy each stride separately:
+       for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+       {
+         size_t start_offset = (gpu_matrix_range.start2() + j) * gpu_matrix_range.get().internal_size1() + gpu_matrix_range.start1();
+         size_t num_entries = gpu_matrix_range.size1();
+         cl_int err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(),
+                                          gpu_matrix_range.get().handle(), CL_TRUE, 
+                                          sizeof(SCALARTYPE)*start_offset,
+                                          sizeof(SCALARTYPE)*num_entries,
+                                          &(entries[0]), 0, NULL, NULL);
+        VIENNACL_ERR_CHECK(err);
+        //std::cout << "Strided copy worked!" << std::endl;
+        
+        for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+          cpu_matrix(i,j) = entries[i];
+       }
+     }
+     else
+     {
+       //full block can be copied: 
+       std::vector<SCALARTYPE> entries(gpu_matrix_range.size1()*gpu_matrix_range.size2());
+       
+       //copy each stride separately:
+       size_t start_offset = gpu_matrix_range.start2() * gpu_matrix_range.get().internal_size1();
+       size_t num_entries = gpu_matrix_range.size1() * gpu_matrix_range.size2();
+       //std::cout << "start_offset: " << start_offset << std::endl;
+       cl_int err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(),
+                                         gpu_matrix_range.get().handle(), CL_TRUE, 
+                                         sizeof(SCALARTYPE)*start_offset,
+                                         sizeof(SCALARTYPE)*num_entries,
+                                         &(entries[0]), 0, NULL, NULL);
+       VIENNACL_ERR_CHECK(err);
+       //std::cout << "Block copy worked!" << std::endl;
+       
+       for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+         for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+           cpu_matrix(i,j) = entries[i + j*gpu_matrix_range.get().internal_size1()];
+     }
+    
+  }
+
+
+/*
+  template<typename MatrixType>
+  std::ostream & operator<<(std::ostream & s, matrix_range<MatrixType> const & proxy)
+  {
+    MatrixType temp(proxy.size1(), proxy.size2());
+    viennacl::range r1(0, proxy.size1());
+    viennacl::range r2(0, proxy.size2());
+    matrix_range<MatrixType> temp2(temp, r1, r2);
+    viennacl::copy(proxy, temp2);
+    s << temp;
+    return s;
+  }*/
+
+
+}
+
+#endif
\ No newline at end of file
diff --git a/viennacl/meta/enable_if.hpp b/viennacl/meta/enable_if.hpp
new file mode 100644
index 0000000..90d3457
--- /dev/null
+++ b/viennacl/meta/enable_if.hpp
@@ -0,0 +1,48 @@
+#ifndef VIENNACL_META_ENABLE_IF_HPP_
+#define VIENNACL_META_ENABLE_IF_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file enable_if.hpp
+    @brief Simple enable-if variant that uses the SFINAE pattern
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+
+
+#include <vector>
+#include <map>
+
+namespace viennacl
+{
+    /** @brief Simple enable-if variant that uses the SFINAE pattern */
+    template <bool b, class T = void> 
+    struct enable_if
+    {
+      typedef T   type;
+    };
+
+    template <class T> 
+    struct enable_if<false, T> {};
+
+} //namespace viennacl
+    
+
+#endif
diff --git a/viennacl/meta/predicate.hpp b/viennacl/meta/predicate.hpp
new file mode 100644
index 0000000..77b947b
--- /dev/null
+++ b/viennacl/meta/predicate.hpp
@@ -0,0 +1,115 @@
+#ifndef VIENNACL_META_PREDICATE_HPP_
+#define VIENNACL_META_PREDICATE_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file predicate.hpp
+    @brief All the predicates used within ViennaCL. Checks for expressions to be vectors, etc.
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+
+namespace viennacl
+{
+    //
+    // is_cpu_scalar: checks for float or double
+    //
+    template <typename T>
+    struct is_cpu_scalar
+    {
+      enum { value = false };
+    };
+  
+    template <>
+    struct is_cpu_scalar<float>
+    {
+      enum { value = true };
+    };
+
+    template <>
+    struct is_cpu_scalar<double>
+    {
+      enum { value = true };
+    };
+    
+    //
+    // is_scalar: checks for viennacl::scalar
+    //
+    template <typename T>
+    struct is_scalar
+    {
+      enum { value = false };
+    };
+  
+    template <typename T>
+    struct is_scalar<viennacl::scalar<T> >
+    {
+      enum { value = true };
+    };
+  
+    //
+    // is_vector
+    //
+    template <typename T>
+    struct is_vector
+    {
+      enum { value = false };
+    };
+
+    template <typename ScalarType, unsigned int ALIGNMENT>
+    struct is_vector<viennacl::vector<ScalarType, ALIGNMENT> >
+    {
+      enum { value = true };
+    };
+
+    template <typename T>
+    struct is_vector<viennacl::vector_range<T> >
+    {
+      enum { value = true };
+    };
+    
+    
+    
+    //
+    // is_matrix
+    //
+    template <typename T>
+    struct is_matrix
+    {
+      enum { value = false };
+    };
+
+    template <typename ScalarType, typename F, unsigned int ALIGNMENT>
+    struct is_matrix<viennacl::matrix<ScalarType, F, ALIGNMENT> >
+    {
+      enum { value = true };
+    };
+
+    template <typename T>
+    struct is_matrix<viennacl::matrix_range<T> >
+    {
+      enum { value = true };
+    };
+    
+
+} //namespace viennacl
+    
+
+#endif
diff --git a/viennacl/meta/result_of.hpp b/viennacl/meta/result_of.hpp
new file mode 100644
index 0000000..1c3d658
--- /dev/null
+++ b/viennacl/meta/result_of.hpp
@@ -0,0 +1,219 @@
+#ifndef VIENNACL_META_RESULT_OF_HPP_
+#define VIENNACL_META_RESULT_OF_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file result_of.hpp
+    @brief A collection of compile time type deductions
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+
+
+#ifdef VIENNACL_HAVE_UBLAS  
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#endif
+
+#ifdef VIENNACL_HAVE_EIGEN  
+#include <Eigen/Core>
+#include <Eigen/Sparse>
+#endif
+
+#ifdef VIENNACL_HAVE_MTL4
+#include <boost/numeric/mtl/mtl.hpp>
+#endif
+
+#include <vector>
+#include <map>
+
+namespace viennacl
+{
+    namespace result_of
+    {
+      //
+      // Retrieve size_type 
+      //
+      template <typename T>
+      struct size_type
+      {
+        typedef typename T::size_type   type;
+      };
+
+      #ifdef VIENNACL_HAVE_EIGEN
+      template <class T, int a, int b, int c, int d, int e>
+      struct size_type< Eigen::Matrix<T, a, b, c, d, e> >
+      {
+        typedef std::size_t   type;
+      };
+      
+      template <>
+      struct size_type<Eigen::VectorXf>
+      {
+        typedef std::size_t   type;
+      };
+      
+      template <>
+      struct size_type<Eigen::VectorXd>
+      {
+        typedef std::size_t   type;
+      };
+
+      template <typename T, int options>
+      struct size_type<Eigen::SparseMatrix<T, options> >
+      {
+        typedef std::size_t   type;
+      };
+      #endif
+      
+      //
+      // Retrieve value_type:
+      //
+      template <typename T>
+      struct value_type
+      {
+        typedef typename T::value_type    type; 
+      };
+
+      //
+      // Retrieve cpu value_type:
+      //
+      template <typename T>
+      struct cpu_value_type
+      {
+        typedef typename T::ERROR_CANNOT_DEDUCE_CPU_SCALAR_TYPE_FOR_T    type; 
+      };
+
+      template <>
+      struct cpu_value_type<float>
+      {
+        typedef float    type; 
+      };
+      
+      template <>
+      struct cpu_value_type<double>
+      {
+        typedef double    type; 
+      };
+      
+      template <typename T>
+      struct cpu_value_type<viennacl::scalar<T> >
+      {
+        typedef T    type; 
+      };
+
+      template <typename T, unsigned int ALIGNMENT>
+      struct cpu_value_type<viennacl::vector<T, ALIGNMENT> >
+      {
+        typedef T    type; 
+      };
+
+      template <typename T>
+      struct cpu_value_type<viennacl::vector_range<T> >
+      {
+        typedef typename cpu_value_type<T>::type    type; 
+      };
+      
+      template <typename T1, typename T2, typename OP>
+      struct cpu_value_type<viennacl::vector_expression<T1, T2, OP> >
+      {
+        typedef typename cpu_value_type<T1>::type    type; 
+      };
+      
+      
+      
+      template <typename T, typename F, unsigned int ALIGNMENT>
+      struct cpu_value_type<viennacl::matrix<T, F, ALIGNMENT> >
+      {
+        typedef T    type; 
+      };
+      
+      template <typename T>
+      struct cpu_value_type<viennacl::matrix_range<T> >
+      {
+        typedef typename cpu_value_type<T>::type    type; 
+      };
+
+      template <typename T1, typename T2, typename OP>
+      struct cpu_value_type<viennacl::matrix_expression<T1, T2, OP> >
+      {
+        typedef typename cpu_value_type<T1>::type    type; 
+      };
+      
+      
+    #ifdef VIENNACL_HAVE_EIGEN  
+      template <>
+      struct value_type<Eigen::MatrixXf>
+      {
+        typedef Eigen::MatrixXf::RealScalar    type; 
+      };
+      
+      template <>
+      struct value_type<Eigen::MatrixXd>
+      {
+        typedef Eigen::MatrixXd::RealScalar    type; 
+      };
+
+      template <typename ScalarType, int option>
+      struct value_type<Eigen::SparseMatrix<ScalarType, option> >
+      {
+        typedef ScalarType    type; 
+      };
+
+      template <>
+      struct value_type<Eigen::VectorXf>
+      {
+        typedef Eigen::VectorXf::RealScalar    type; 
+      };
+
+      template <>
+      struct value_type<Eigen::VectorXd>
+      {
+        typedef Eigen::VectorXd::RealScalar    type; 
+      };
+      
+    #endif
+      
+      
+      
+      template <typename T>
+      struct matrix_expression_internal_storage
+      {
+        typedef T &     type;
+      };
+     
+      template <>
+      struct matrix_expression_internal_storage<const float>
+      {
+        typedef float type;
+      };
+      
+      template <>
+      struct matrix_expression_internal_storage<const double>
+      {
+        typedef double type;
+      };
+      
+      
+    } //namespace result_of
+} //namespace viennacl
+    
+
+#endif
diff --git a/viennacl/meta/tag_of.hpp b/viennacl/meta/tag_of.hpp
new file mode 100644
index 0000000..6f6c51d
--- /dev/null
+++ b/viennacl/meta/tag_of.hpp
@@ -0,0 +1,344 @@
+#ifndef VIENNACL_META_TAGOF_HPP_
+#define VIENNACL_META_TAGOF_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+/** @file tag_of.hpp
+    @brief Dispatch facility for distinguishing between ublas, STL and ViennaCL types
+*/
+
+#ifdef VIENNACL_HAVE_UBLAS  
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/vector.hpp>
+#endif
+
+#ifdef VIENNACL_HAVE_EIGEN  
+#include <Eigen/Core>
+#include <Eigen/Sparse>
+#endif
+
+#ifdef VIENNACL_HAVE_MTL4
+#include <boost/numeric/mtl/mtl.hpp>
+#endif
+
+namespace viennacl
+{
+
+  // ----------------------------------------------------
+  // TAGS
+  //
+  struct tag_none     {};
+  struct tag_mtl4     {};
+  struct tag_eigen    {};
+  struct tag_ublas    {};
+  struct tag_stl      {};
+  struct tag_viennacl {};
+
+  namespace traits
+  {
+    // ----------------------------------------------------
+    // GENERIC BASE
+    //
+    /** @brief Generic base for wrapping other linear algebra packages
+    * 
+    *  Maps types to tags, e.g. viennacl::vector to tag_viennacl, ublas::vector to tag_ublas
+    *  if the matrix type is unknown, tag_none is returned
+    *
+    *  This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
+    *
+    * @tparam T   The type to be inspected
+    */
+    template< typename T, typename Active = void >
+    struct tag_of;
+   
+    template < typename Sequence, typename Active >
+    struct tag_of
+    {
+      typedef viennacl::tag_none  type;
+    };
+    
+    #ifdef VIENNACL_HAVE_MTL4
+    // ----------------------------------------------------
+    // MTL4
+    //
+    template <typename ScalarType>
+    struct tag_of< mtl::dense_vector<ScalarType> >
+    {
+      typedef viennacl::tag_mtl4  type;
+    };
+
+    template <typename ScalarType>
+    struct tag_of< mtl::compressed2D<ScalarType> >
+    {
+      typedef viennacl::tag_mtl4  type;
+    };
+
+    template <typename ScalarType, typename T>
+    struct tag_of< mtl::dense2D<ScalarType, T> >
+    {
+      typedef viennacl::tag_mtl4  type;
+    };
+    #endif
+    
+    
+    #ifdef VIENNACL_HAVE_EIGEN
+    // ----------------------------------------------------
+    // Eigen
+    //
+    template <>
+    struct tag_of< Eigen::VectorXf >
+    {
+      typedef viennacl::tag_eigen  type;
+    };
+
+    template <>
+    struct tag_of< Eigen::VectorXd >
+    {
+      typedef viennacl::tag_eigen  type;
+    };
+
+    template <>
+    struct tag_of< Eigen::MatrixXf >
+    {
+      typedef viennacl::tag_eigen  type;
+    };
+
+    template <>
+    struct tag_of< Eigen::MatrixXd >
+    {
+      typedef viennacl::tag_eigen  type;
+    };
+
+    template <typename ScalarType, int option>
+    struct tag_of< Eigen::SparseMatrix<ScalarType, option> >
+    {
+      typedef viennacl::tag_eigen  type;
+    };
+    
+    #endif
+    
+    #ifdef VIENNACL_HAVE_UBLAS
+    // ----------------------------------------------------
+    // UBLAS
+    //
+    template< typename T >
+    struct tag_of< boost::numeric::ublas::vector<T> >
+    {
+      typedef viennacl::tag_ublas  type;
+    };
+
+    template< typename T >
+    struct tag_of< boost::numeric::ublas::matrix<T> >
+    {
+      typedef viennacl::tag_ublas  type;
+    };
+
+    template< typename T1, typename T2 >
+    struct tag_of< boost::numeric::ublas::matrix_unary2<T1,T2> >
+    {
+      typedef viennacl::tag_ublas  type;
+    };
+
+    template< typename T1, typename T2 >
+    struct tag_of< boost::numeric::ublas::compressed_matrix<T1,T2> >
+    {
+      typedef viennacl::tag_ublas  type;
+    };
+    
+    #endif
+
+    // ----------------------------------------------------
+    // STL types
+    //
+    
+    //vector
+    template< typename T, typename A >
+    struct tag_of< std::vector<T, A> >
+    {
+      typedef viennacl::tag_stl  type;
+    };
+
+    //dense matrix
+    template< typename T, typename A >
+    struct tag_of< std::vector<std::vector<T, A>, A> >
+    {
+      typedef viennacl::tag_stl  type;
+    };
+
+    //sparse matrix (vector of maps)
+    template< typename KEY, typename DATA, typename COMPARE, typename AMAP, typename AVEC>
+    struct tag_of< std::vector<std::map<KEY, DATA, COMPARE, AMAP>, AVEC> >
+    {
+      typedef viennacl::tag_stl  type;
+    };
+    
+    
+    // ----------------------------------------------------
+    // VIENNACL
+    //
+    template< typename T, unsigned int alignment >
+    struct tag_of< viennacl::vector<T, alignment> >
+    {
+      typedef viennacl::tag_viennacl  type;
+    };
+
+    template< typename T, typename F, unsigned int alignment >
+    struct tag_of< viennacl::matrix<T, F, alignment> >
+    {
+      typedef viennacl::tag_viennacl  type;
+    };
+
+    template< typename T1, typename T2, typename OP >
+    struct tag_of< viennacl::matrix_expression<T1,T2,OP> >
+    {
+      typedef viennacl::tag_viennacl  type;
+    };
+
+    template< typename T >
+    struct tag_of< viennacl::matrix_range<T> >
+    {
+      typedef viennacl::tag_viennacl  type;
+    };
+    
+    template< typename T, unsigned int I>
+    struct tag_of< viennacl::compressed_matrix<T,I> >
+    {
+      typedef viennacl::tag_viennacl  type;
+    };
+
+    template< typename T, unsigned int I>
+    struct tag_of< viennacl::coordinate_matrix<T,I> >
+    {
+      typedef viennacl::tag_viennacl  type;
+    };
+    
+    template< typename T, unsigned int I>
+    struct tag_of< viennacl::circulant_matrix<T,I> >
+    {
+      typedef viennacl::tag_viennacl  type;
+    };
+
+    template< typename T, unsigned int I>
+    struct tag_of< viennacl::hankel_matrix<T,I> >
+    {
+      typedef viennacl::tag_viennacl  type;
+    };
+    
+    template< typename T, unsigned int I>
+    struct tag_of< viennacl::toeplitz_matrix<T,I> >
+    {
+      typedef viennacl::tag_viennacl  type;
+    };
+    
+    template< typename T, unsigned int I>
+    struct tag_of< viennacl::vandermonde_matrix<T,I> >
+    {
+      typedef viennacl::tag_viennacl  type;
+    };
+    
+    
+    // ----------------------------------------------------
+  } // end namespace traits
+
+
+  /** @brief Meta function which checks whether a tag is tag_mtl4 
+  *
+  *  This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
+  */
+  template <typename Tag>
+  struct is_mtl4
+  {
+     enum { value = false };  
+  };
+
+  template <>
+  struct is_mtl4< viennacl::tag_mtl4 >
+  {
+     enum { value = true };  
+  };
+
+  /** @brief Meta function which checks whether a tag is tag_eigen 
+  *
+  *  This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
+  */
+  template <typename Tag>
+  struct is_eigen
+  {
+     enum { value = false };  
+  };
+
+  template <>
+  struct is_eigen< viennacl::tag_eigen >
+  {
+     enum { value = true };  
+  };
+
+
+  /** @brief Meta function which checks whether a tag is tag_ublas 
+  *
+  *  This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
+  */
+  template <typename Tag>
+  struct is_ublas
+  {
+     enum { value = false };  
+  };
+
+  template <>
+  struct is_ublas< viennacl::tag_ublas >
+  {
+     enum { value = true };  
+  };
+
+  /** @brief Meta function which checks whether a tag is tag_ublas 
+  *
+  *  This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
+  */
+  template <typename Tag>
+  struct is_stl
+  {
+     enum { value = false };  
+  };
+
+  template <>
+  struct is_stl< viennacl::tag_stl >
+  {
+     enum { value = true };  
+  };
+
+  
+  /** @brief Meta function which checks whether a tag is tag_viennacl
+  *
+  *  This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
+  */
+  template <typename Tag>
+  struct is_viennacl
+  {
+     enum { value = false };  
+  };
+
+  template <>
+  struct is_viennacl< viennacl::tag_viennacl >
+  {
+     enum { value = true };  
+  };
+
+} // end namespace viennacl
+
+#endif
diff --git a/viennacl/misc/bandwidth_reduction.hpp b/viennacl/misc/bandwidth_reduction.hpp
new file mode 100644
index 0000000..fa9691d
--- /dev/null
+++ b/viennacl/misc/bandwidth_reduction.hpp
@@ -0,0 +1,37 @@
+#ifndef VIENNACL_MISC_BANDWIDTH_REDUCTION_HPP
+#define VIENNACL_MISC_BANDWIDTH_REDUCTION_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+/** @file viennacl/misc/bandwidth_reduction.hpp
+    @brief Convenience include for bandwidth reduction algorithms such as Cuthill-McKee or Gibbs-Poole-Stockmeyer.  Experimental in 1.2.x.
+*/
+
+#include "viennacl/misc/cuthill_mckee.hpp"
+#include "viennacl/misc/gibbs_poole_stockmeyer.hpp"
+
+
+namespace viennacl
+{
+  //TODO: Add convenience overload here. Which should be default?
+  
+  
+} //namespace viennacl
+    
+
+#endif
diff --git a/viennacl/misc/cuthill_mckee.hpp b/viennacl/misc/cuthill_mckee.hpp
new file mode 100644
index 0000000..01a88bf
--- /dev/null
+++ b/viennacl/misc/cuthill_mckee.hpp
@@ -0,0 +1,468 @@
+#ifndef VIENNACL_MISC_CUTHILL_MCKEE_HPP
+#define VIENNACL_MISC_CUTHILL_MCKEE_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+/** @file viennacl/misc/cuthill_mckee.hpp
+*    @brief Implementation of several flavors of the Cuthill-McKee algorithm.  Experimental in 1.2.x.
+*    
+*   Contributed by Philipp Grabenweger, interface adjustments by Karl Rupp.
+*/
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <map>
+#include <vector>
+#include <deque>
+#include <cmath>
+
+
+namespace viennacl
+{
+  
+  namespace detail
+  {
+    
+    // function to calculate the increment of combination comb.
+    // parameters:
+    // comb: pointer to vector<int> of size m, m <= n
+    //       1 <= comb[i] <= n for 0 <= i < m
+    //       comb[i] < comb[i+1] for 0 <= i < m - 1
+    //       comb represents an unordered selection of m values out of n
+    // n: int
+    //    total number of values out of which comb is taken as selection
+    inline bool comb_inc(std::vector<int> & comb, int n)
+    {
+        int m;
+        int k;
+        
+        m = comb.size();
+        // calculate k as highest possible index such that (*comb)[k-1] can be incremented
+        k = m;
+        while ( (k > 0) && ( ((k == m) && (comb[k-1] == n)) || 
+                            ((k < m) && (comb[k-1] == comb[k] - 1) )) )
+        {
+            k--;
+        }
+        if (k == 0) // no further increment of comb possible -> return false
+        {
+            return false;
+        }
+        else
+        {
+            (comb[k-1])++; // increment (*comb)[k-1],
+            for (int i = k; i < m; i++) // and all higher index positions of comb are 
+            // calculated just as directly following integer values (lowest possible values)
+            {
+                comb[i] = comb[k-1] + (i - k + 1);
+            }
+            return true;
+        }
+    }
+
+
+    // function to generate a node layering as a tree structure rooted at
+    // node s
+    template <typename MatrixType>
+    void generate_layering(MatrixType const & matrix, 
+                           std::vector< std::vector<int> > & l,
+                           int s)
+    {
+      std::size_t n = matrix.size();
+      //std::vector< std::vector<int> > l;
+      std::vector<bool> inr(n, false);
+      std::vector<int> nlist;
+      
+      nlist.push_back(s);
+      inr[s] = true;
+      l.push_back(nlist);
+      
+      for (;;)
+      {
+          nlist.clear();
+          for (std::vector<int>::iterator it  = l.back().begin(); 
+                                          it != l.back().end();
+                                          it++)
+          {
+              for (typename MatrixType::value_type::const_iterator it2  = matrix[*it].begin(); 
+                                                         it2 != matrix[*it].end();
+                                                         it2++)
+              {
+                  if (it2->first == *it) continue;
+                  if (inr[it2->first]) continue;
+                  
+                  nlist.push_back(it2->first);
+                  inr[it2->first] = true;
+              }
+          }
+          
+          if (nlist.size() == 0)
+              break;
+
+          l.push_back(nlist);
+      }
+      
+    }
+
+    
+    // comparison function for comparing two vector<int> values by their 
+    // [1]-element
+    inline bool cuthill_mckee_comp_func(std::vector<int> const & a,
+                                        std::vector<int> const & b)
+    {
+        return (a[1] < b[1]);
+    }
+    
+  }
+  
+  //
+  // Part 1: The original Cuthill-McKee algorithm
+  //
+  
+  
+  struct cuthill_mckee_tag {};
+  
+  /** @brief Function for the calculation of a node number permutation to reduce the bandwidth of an incidence matrix by the Cuthill-McKee algorithm
+   * 
+   * references:
+   *    Algorithm was implemented similary as described in 
+   *      "Tutorial: Bandwidth Reduction - The CutHill-
+   *      McKee Algorithm" posted by Ciprian Zavoianu as weblog at
+   *    http://ciprian-zavoianu.blogspot.com/2009/01/project-bandwidth-reduction.html
+   *    on January 15, 2009
+   *    (URL taken on June 14, 2011) 
+   * 
+   * @param matrix  vector of n matrix rows, where each row is a map<int, double> containing only the nonzero elements
+   * @return permutation vector r. r[l] = i means that the new label of node i will be l.
+   *
+   */
+  template <typename MatrixType>
+  std::vector<int> reorder(MatrixType const & matrix, cuthill_mckee_tag)
+  {
+    std::size_t n = matrix.size();
+    std::vector<int> r;
+    std::vector<bool> inr(n, false); // status array which remembers which nodes have been added to r
+    std::deque<int> q;
+    std::vector< std::vector<int> > nodes;
+    std::vector<int> tmp(2);
+    int p = 0;
+    int c;
+    
+    int deg;
+    int deg_min;
+    
+    r.reserve(n);
+    nodes.reserve(n);
+    
+    do
+    {
+        // under all nodes not yet in r determine one with minimal degree
+        deg_min = -1;
+        for (std::size_t i = 0; i < n; i++)
+        {
+            if (!inr[i])
+            {
+                deg = matrix[i].size() - 1; // node degree
+                if (deg_min < 0 || deg < deg_min)
+                {
+                    p = i; // node number
+                    deg_min = deg;
+                }
+            }
+        }
+        q.push_back(p); // push that node p with minimal degree on q
+        
+        do
+        {
+            c = q.front();
+            q.pop_front();
+            if (!inr[c])
+            {
+                r.push_back(c);
+                inr[c] = true;
+                
+                // add all neighbouring nodes of c which are not yet in r to nodes
+                nodes.resize(0);
+                for (typename MatrixType::value_type::const_iterator it =  matrix[c].begin(); it != matrix[c].end(); it++)
+                {
+                    if (it->first == c) continue;
+                    if (inr[it->first]) continue;
+                    
+                    tmp[0] = it->first;
+                    tmp[1] = matrix[it->first].size() - 1;
+                    nodes.push_back(tmp);
+                }
+                
+                // sort nodes by node degree
+                std::sort(nodes.begin(), nodes.end(), detail::cuthill_mckee_comp_func);
+                for (std::vector< std::vector<int> >::iterator it = nodes.begin(); it != nodes.end(); it++)
+                {
+                    q.push_back((*it)[0]);
+                }
+            }
+        } while (q.size() != 0);
+    } while (r.size() < n);
+    
+    return r;
+  }
+  
+  
+  //
+  // Part 2: Advanced Cuthill McKee
+  //
+
+  /** @brief Tag for the advanced Cuthill-McKee algorithm */ 
+  class advanced_cuthill_mckee_tag
+  {
+    public:
+      /** @brief CTOR which may take the additional parameters for the advanced algorithm.
+        * 
+        * additional parameters for CTOR:
+        *   a:  0 <= a <= 1
+        *     parameter which specifies which nodes are tried as starting nodes
+        *     of generated node layering (tree structure whith one ore more 
+        *     starting nodes).
+        *     the relation deg_min <= deg <= deg_min + a * (deg_max - deg_min) 
+        *     must hold for node degree deg for a starting node, where deg_min/
+        *     deg_max is the minimal/maximal node degree of all yet unnumbered
+        *     nodes.
+        *    gmax:
+        *      integer which specifies maximum number of nodes in the root
+        *      layer of the tree structure (gmax = 0 means no limit)
+        * 
+        * @return permutation vector r. r[l] = i means that the new label of node i will be l.
+        *
+       */
+      advanced_cuthill_mckee_tag(double a = 0.0, std::size_t gmax = 1) : starting_node_param_(a), max_root_nodes_(gmax) {}
+      
+      double starting_node_param() const { return starting_node_param_;}
+      void starting_node_param(double a) { if (a >= 0) starting_node_param_ = a; }
+      
+      std::size_t max_root_nodes() const { return max_root_nodes_; }
+      void max_root_nodes(std::size_t gmax) { max_root_nodes_ = gmax; }      
+      
+    private:
+      double starting_node_param_;
+      std::size_t max_root_nodes_;
+  };
+  
+
+
+  /** @brief Function for the calculation of a node number permutation to reduce the bandwidth of an incidence matrix by the advanced Cuthill-McKee algorithm
+   * 
+   *
+   *  references:
+   *    see description of original Cuthill McKee implementation, and
+   *    E. Cuthill and J. McKee: "Reducing the Bandwidth of sparse symmetric Matrices".
+   *    Naval Ship Research and Development Center, Washington, D. C., 20007
+   */
+  template <typename MatrixType>
+  std::vector<int> reorder(MatrixType const & matrix,
+                           advanced_cuthill_mckee_tag const & tag)
+  {
+    std::size_t n = matrix.size();
+    double a = tag.starting_node_param();
+    std::size_t gmax = tag.max_root_nodes();
+    std::vector<int> r;
+    std::vector<int> r_tmp;
+    std::vector<int> r_best;
+    std::vector<int> r2(n);
+    std::vector<bool> inr(n, false);
+    std::vector<bool> inr_tmp(n);
+    std::vector<bool> inr_best(n);
+    std::deque<int> q;
+    std::vector< std::vector<int> > nodes;
+    std::vector<int> nodes_p;
+    std::vector<int> tmp(2);
+    std::vector< std::vector<int> > l;
+    int deg_min;
+    int deg_max;
+    int deg_a;
+    int deg;
+    int bw;
+    int bw_best;
+    std::vector<int> comb;
+    std::size_t g;
+    int c;
+    
+    r.reserve(n);
+    r_tmp.reserve(n);
+    r_best.reserve(n);
+    nodes.reserve(n);
+    nodes_p.reserve(n);
+    comb.reserve(n);
+    
+    do
+    {   
+        // add to nodes_p all nodes not yet in r which are candidates for the root node layer  
+        // search unnumbered node and generate layering 
+        for (std::size_t i = 0; i < n; i++)
+        {
+            if (!inr[i])
+            {
+                detail::generate_layering(matrix, l, i);
+                break;
+            }
+        }
+        nodes.resize(0);
+        for (std::vector< std::vector<int> >::iterator it = l.begin();
+          it != l.end(); it++)
+        {
+            for (std::vector<int>::iterator it2 = it->begin();
+              it2 != it->end(); it2++)
+            {
+                tmp[0] = *it2;
+                tmp[1] = matrix[*it2].size() - 1;
+                nodes.push_back(tmp);
+            }
+        }
+        // determine minimum and maximum node degree
+        deg_min = -1;
+        deg_max = -1;
+        for (std::vector< std::vector<int> >::iterator it = nodes.begin(); 
+          it != nodes.end(); it++)
+        {
+            deg = (*it)[1];
+            if (deg_min < 0 || deg < deg_min)
+            {
+                deg_min = deg;
+            }
+            if (deg_max < 0 || deg > deg_max)
+            {
+                deg_max = deg;
+            }
+        }
+        deg_a = deg_min + (int) (a * (deg_max - deg_min));
+        nodes_p.resize(0);
+        for (std::vector< std::vector<int> >::iterator it = nodes.begin(); 
+          it != nodes.end(); it++)
+        {
+            if ((*it)[1] <= deg_a)
+            {
+                nodes_p.push_back((*it)[0]);
+            }
+        }
+        
+        inr_tmp = inr;
+        g = 1;
+        comb.resize(1);
+        comb[0] = 1;
+        bw_best = -1;
+        
+        for (;;) // for all combinations of g <= gmax root nodes repeat
+        {
+            inr = inr_tmp;
+            r_tmp.resize(0);
+            
+            // add the selected root nodes according to actual combination comb to q
+            for (std::vector<int>::iterator it = comb.begin(); 
+              it != comb.end(); it++)
+            {
+                q.push_back(nodes_p[(*it)-1]);
+            }
+  
+            do // perform normal CutHill-McKee algorithm for given root nodes with 
+            // resulting numbering stored in r_tmp
+            {
+                c = q.front();
+                q.pop_front();
+                if (!inr[c])
+                {
+                    r_tmp.push_back(c);
+                    inr[c] = true;
+                    
+                    nodes.resize(0);
+                    for (typename MatrixType::value_type::const_iterator it = matrix[c].begin(); it != matrix[c].end(); it++)
+                    {
+                        if (it->first == c) continue;
+                        if (inr[it->first]) continue;
+                        
+                        tmp[0] = it->first;
+                        tmp[1] = matrix[it->first].size() - 1;
+                        nodes.push_back(tmp);
+                    }
+                    std::sort(nodes.begin(), nodes.end(), detail::cuthill_mckee_comp_func);
+                    for (std::vector< std::vector<int> >::iterator it = 
+                      nodes.begin(); it != nodes.end(); it++)
+                    {
+                        q.push_back((*it)[0]);
+                    }
+                }
+            } while (q.size() != 0);
+            
+            // calculate resulting bandwith for root node combination
+            // comb for current numbered component of the node graph
+            for (std::size_t i = 0; i < r_tmp.size(); i++)
+            {
+                r2[r_tmp[i]] = r.size() + i;
+            }
+            bw = 0;
+            for (std::size_t i = 0; i < r_tmp.size(); i++)
+            {
+                for (typename MatrixType::value_type::const_iterator it  = matrix[r_tmp[i]].begin(); 
+                                                                     it != matrix[r_tmp[i]].end();
+                                                                     it++)
+                {
+                    bw = std::max(bw, std::abs(static_cast<int>(r.size() + i) - r2[it->first]));
+                }
+            }
+            
+            // remember ordering r_tmp in r_best for smallest bandwith
+            if (bw_best < 0 || bw < bw_best)
+            {
+                r_best = r_tmp;
+                bw_best = bw;
+                inr_best = inr;
+            }
+            
+            // calculate next combination comb, if not existing
+            // increment g if g stays <= gmax, or else terminate loop
+            if (!detail::comb_inc(comb, nodes_p.size()))
+            {
+                g++;
+                if ( (gmax > 0 && g > gmax) || g > nodes_p.size())
+                {
+                    break;
+                }
+                comb.resize(g);
+                for (std::size_t i = 0; i < g; i++)
+                {
+                    comb[i] = i + 1;
+                }
+            }
+        }
+        
+        // store best order r_best in result array r
+        for (std::vector<int>::iterator it = r_best.begin(); 
+          it != r_best.end(); it++)
+        {
+            r.push_back((*it));
+        }
+        inr = inr_best;
+        
+    } while (r.size() < n);
+    
+    return r;
+  }
+  
+} //namespace viennacl
+    
+
+#endif
diff --git a/viennacl/misc/gibbs_poole_stockmeyer.hpp b/viennacl/misc/gibbs_poole_stockmeyer.hpp
new file mode 100644
index 0000000..6af4eb3
--- /dev/null
+++ b/viennacl/misc/gibbs_poole_stockmeyer.hpp
@@ -0,0 +1,450 @@
+#ifndef VIENNACL_MISC_GIBBS_POOLE_STOCKMEYER_HPP
+#define VIENNACL_MISC_GIBBS_POOLE_STOCKMEYER_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+/** @file viennacl/misc/gibbs_poole_stockmeyer.hpp
+ *  @brief Implementation of the Gibbs-Poole-Stockmeyer algorithm.  Experimental in 1.2.x.
+ *    
+ *  Contributed by Philipp Grabenweger, interface adjustments by Karl Rupp.
+ */
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <map>
+#include <vector>
+#include <deque>
+#include <cmath>
+
+#include "viennacl/misc/cuthill_mckee.hpp"
+
+namespace viennacl
+{
+  
+  namespace detail
+  {
+
+    // calculates width of a node layering
+    inline int calc_layering_width(std::vector< std::vector<int> > const & l)
+    {
+        int w;
+        
+        w = 0;
+        for (std::size_t i = 0; i < l.size(); i++)
+        {
+            w = std::max(w, static_cast<int>(l[i].size()));
+        }
+        
+        return w;
+    }
+    
+    // function to decompose a list of nodes rg into connected components
+    // sorted by decreasing number of nodes per component
+    template <typename MatrixType>
+    std::vector< std::vector<int> > gps_rg_components(MatrixType const & matrix, int n,
+                                                      std::vector<int> const & rg)
+    {
+        std::vector< std::vector<int> > rgc;
+        std::vector< std::vector<int> > rgc_sorted;
+        std::vector< std::vector<int> > sort_ind;
+        std::vector<int> ind(2);
+        std::vector<int> tmp;
+        int c;
+        std::vector<bool> inr(n, true);
+        std::deque<int> q;
+        
+        for (std::size_t i = 0; i < rg.size(); i++)
+        {
+            inr[rg[i]] = false;
+        }
+        
+        do
+        {
+            for (int i = 0; i < n; i++)
+            {
+                if (!inr[i])
+                {
+                    q.push_front(i);
+                    break;
+                }
+            }
+            if (q.size() == 0)
+            {
+                break;
+            }
+            
+            tmp.resize(0);
+            while (q.size() > 0)
+            {
+                c = q.front();
+                q.pop_front();
+
+                if (!inr[c])
+                {
+                    tmp.push_back(c);
+                    inr[c] = true;
+                    
+                    for (typename MatrixType::value_type::const_iterator it = matrix[c].begin(); it != matrix[c].end(); it++)
+                    {
+                        if (it->first == c) continue;
+                        if (inr[it->first]) continue;
+                        
+                        q.push_back(it->first);
+                    }
+                }
+            }
+            rgc.push_back(tmp);
+        } while (true);
+        
+        for (std::size_t i = 0; i < rgc.size(); i++)
+        {
+            ind[0] = i;
+            ind[1] = rgc[i].size();
+            sort_ind.push_back(ind);
+        }
+        std::sort(sort_ind.begin(), sort_ind.end(), detail::cuthill_mckee_comp_func);
+        for (std::size_t i = 0; i < rgc.size(); i++)
+        {
+            rgc_sorted.push_back(rgc[sort_ind[rgc.size()-1-i][0]]);
+        }
+        
+        return rgc_sorted;
+    }
+    
+  } // namespace detail
+  
+  
+  struct gibbs_poole_stockmeyer_tag {};
+  
+
+  /** @brief Function for the calculation of a node numbering permutation vector to reduce the bandwidth of a incidence matrix by the Gibbs-Poole-Stockmeyer algorithm
+   * 
+   * references:
+   *   Werner Neudorf: "Bandbreitenreduktion - Teil 3. Algorithmus von 
+   *   Gibbs-Poole-Stockmeyer. Testbeispiele mit CM und GPS", Preprint No.
+   *   M 08/02, September 2002. Technische Universität Ilmenau, Fakultät
+   *   für Mathematik und Naturwissenschaften, Institut für Mathematik.
+   *   http://www.db-thueringen.de/servlets/DerivateServlet/Derivate-8673/IfM_Preprint_M_02_08.pdf
+   *   (URL taken on June 14, 2011)
+   * 
+   * @param matrix  vector of n matrix rows, where each row is a map<int, double> containing only the nonzero elements
+   * @return permutation vector r. r[l] = i means that the new label of node i will be l.
+   */
+  template <typename MatrixType>
+  std::vector<int> reorder(MatrixType const & matrix,
+                           gibbs_poole_stockmeyer_tag)
+  {
+    std::size_t n = matrix.size();
+    std::vector<int> r;
+    std::vector< std::vector<int> > rl;
+    std::size_t l = 0;
+    int state;
+    bool state_end;
+    std::vector< std::vector<int> > nodes;
+    std::vector<bool> inr(n, false);
+    std::vector<bool> isn(n, false);
+    std::vector<int> tmp(2);
+    int g = 0;
+    int h = 0;
+    std::vector< std::vector<int> > lg;
+    std::vector< std::vector<int> > lh;
+    std::vector< std::vector<int> > ls;
+    std::map< int, std::vector<int> > lap;
+    std::vector<int> rg;
+    std::vector< std::vector<int> > rgc;
+    int m;
+    int m_min;
+    bool new_g = true;
+    int k1, k2, k3, k4;
+    std::vector<int> wvs;
+    std::vector<int> wvsg;
+    std::vector<int> wvsh;
+    int deg_min;
+    int deg;
+    int ind_min;
+    
+    r.reserve(n);
+    nodes.reserve(n);
+    
+    while (r.size() < n) // for all components of the graph apply GPS algorithm
+    {
+        // determine node g with mimimal degree among all nodes which
+        // are not yet in result array r
+        deg_min = -1;
+        for (std::size_t i = 0; i < n; i++)
+        {
+            if (!inr[i])
+            {
+                deg = matrix[i].size() - 1; // node degree
+                if (deg_min < 0 || deg < deg_min)
+                {
+                    g = i; // node number
+                    deg_min = deg;
+                }
+            }
+        }
+        
+        // algorithm for determining nodes g, h as endpoints of a pseudo graph diameter
+        while (new_g) 
+        {
+          lg.clear();
+          detail::generate_layering(matrix, lg, g);
+            
+          nodes.resize(0);
+          for (std::size_t i = 0; i < lg.back().size(); i++)
+          {
+              tmp[0] = lg.back()[i];
+              tmp[1] = matrix[lg.back()[i]].size() - 1;
+              nodes.push_back(tmp);
+          }
+          std::sort(nodes.begin(), nodes.end(), detail::cuthill_mckee_comp_func);
+          for (std::size_t i = 0; i < nodes.size(); i++)
+          {
+              lg.back()[i] = nodes[i][0];
+          }
+          
+          m_min = -1;
+          new_g = false;
+          for (std::size_t i = 0; i < lg.back().size(); i++)
+          {
+              lh.clear();
+              detail::generate_layering(matrix, lh, lg.back()[i]);
+              if (lh.size() > lg.size())
+              {
+                  g = lg.back()[i];
+                  new_g = true;
+                  break;
+              }
+              m = detail::calc_layering_width(lh);
+              if (m_min < 0 || m < m_min)
+              {
+                  m_min = m;
+                  h = lg.back()[i];
+              }
+          }
+        }
+        
+        lh.clear();
+        detail::generate_layering(matrix, lh, h);
+        
+        // calculate ls as layering intersection and rg as remaining
+        // graph
+        lap.clear();
+        for (std::size_t i = 0; i < lg.size(); i++)
+        {
+            for (std::size_t j = 0; j < lg[i].size(); j++)
+            {
+                lap[lg[i][j]].resize(2);
+                lap[lg[i][j]][0] = i;
+            }
+        }
+        for (std::size_t i = 0; i < lh.size(); i++)
+        {
+            for (std::size_t j = 0; j < lh[i].size(); j++)
+            {
+                lap[lh[i][j]][1] = lg.size() - 1 - i;
+            }
+        }
+        rg.clear();
+        ls.clear();
+        ls.resize(lg.size());
+        for (std::map< int, std::vector<int> >::iterator it = lap.begin(); 
+          it != lap.end(); it++)
+        {
+            if ((it->second)[0] == (it->second)[1])
+            {
+                ls[(it->second)[0]].push_back(it->first);
+            }
+            else
+            {
+                rg.push_back(it->first);
+            }
+        }
+        // partition remaining graph in connected components 
+        rgc = detail::gps_rg_components(matrix, n, rg);
+
+        // insert nodes of each component of rgc
+        k1 = detail::calc_layering_width(lg);
+        k2 = detail::calc_layering_width(lh);
+        wvs.resize(ls.size());
+        wvsg.resize(ls.size());
+        wvsh.resize(ls.size());
+        for (std::size_t i = 0; i < rgc.size(); i++)
+        {
+            for (std::size_t j = 0; j < ls.size(); j++)
+            {
+                wvs[j] = ls[j].size();
+                wvsg[j] = ls[j].size();
+                wvsh[j] = ls[j].size();
+            }
+            for (std::size_t j = 0; j < rgc[i].size(); j++)
+            {
+                (wvsg[lap[rgc[i][j]][0]])++;
+                (wvsh[lap[rgc[i][j]][1]])++;
+            }
+            k3 = 0;
+            k4 = 0;
+            for (std::size_t j = 0; j < ls.size(); j++)
+            {
+                if (wvsg[j] > wvs[j])
+                {
+                    k3 = std::max(k3, wvsg[j]);
+                }
+                if (wvsh[j] > wvs[j])
+                {
+                    k4 = std::max(k4, wvsh[j]);
+                }
+            }
+            if (k3 < k4 || (k3 == k4 && k1 <= k2) )
+            {
+                for (std::size_t j = 0; j < rgc[i].size(); j++)
+                {
+                    ls[lap[rgc[i][j]][0]].push_back(rgc[i][j]);
+                }
+            }
+            else
+            {
+                for (std::size_t j = 0; j < rgc[i].size(); j++)
+                {
+                    ls[lap[rgc[i][j]][1]].push_back(rgc[i][j]);
+                }
+            }
+        }
+        
+        // renumber nodes in ls
+        rl.clear();
+        rl.resize(ls.size());
+        state = 1;
+        state_end = false;
+        while (!state_end)
+        {
+            switch(state)
+            {
+              case 1:
+                l = 0;
+                state = 4;
+                break;
+                
+              case 2:
+                for (std::size_t i = 0; i < rl[l-1].size(); i++)
+                {
+                    isn.assign(n, false);
+                    for (std::map<int, double>::const_iterator it = matrix[rl[l-1][i]].begin();  
+                                                               it != matrix[rl[l-1][i]].end();
+                                                               it++)
+                    {
+                        if (it->first == rl[l-1][i]) continue;
+                        isn[it->first] = true;
+                    }
+                    nodes.resize(0);
+                    for (std::size_t j = 0; j < ls[l].size(); j++)
+                    {
+                        if (inr[ls[l][j]]) continue;
+                        if (!isn[ls[l][j]]) continue;
+                        tmp[0] = ls[l][j];
+                        tmp[1] = matrix[ls[l][j]].size() - 1;
+                        nodes.push_back(tmp);
+                    }
+                    std::sort(nodes.begin(), nodes.end(), detail::cuthill_mckee_comp_func);
+                    for (std::size_t j = 0; j < nodes.size(); j++)
+                    {
+                        rl[l].push_back(nodes[j][0]);
+                        r.push_back(nodes[j][0]);
+                        inr[nodes[j][0]] = true;
+                    }
+                }
+                
+              case 3:
+                for (std::size_t i = 0; i < rl[l].size(); i++)
+                {
+                    isn.assign(n, false);
+                    for (std::map<int, double>::const_iterator it = matrix[rl[l][i]].begin(); 
+                                                               it != matrix[rl[l][i]].end();
+                                                               it++)
+                    {
+                        if (it->first == rl[l][i]) continue;
+                        isn[it->first] = true;
+                    }
+                    nodes.resize(0);
+                    for (std::size_t j = 0; j < ls[l].size(); j++)
+                    {
+                        if (inr[ls[l][j]]) continue;
+                        if (!isn[ls[l][j]]) continue;
+                        tmp[0] = ls[l][j];
+                        tmp[1] = matrix[ls[l][j]].size() - 1;
+                        nodes.push_back(tmp);
+                    }
+                    std::sort(nodes.begin(), nodes.end(), detail::cuthill_mckee_comp_func);
+                    for (std::size_t j = 0; j < nodes.size(); j++)
+                    {
+                        rl[l].push_back(nodes[j][0]);
+                        r.push_back(nodes[j][0]);
+                        inr[nodes[j][0]] = true;
+                    }
+                }
+                
+              case 4:
+                if (rl[l].size() < ls[l].size())
+                {
+                    deg_min = -1;
+                    for (std::size_t j = 0; j < ls[l].size(); j++)
+                    {
+                        if (inr[ls[l][j]]) continue;
+                        deg = matrix[ls[l][j]].size() - 1;
+                        if (deg_min < 0 || deg < deg_min)
+                        {
+                            ind_min = ls[l][j];
+                            deg_min = deg;
+                        }
+                    }
+                    rl[l].push_back(ind_min);
+                    r.push_back(ind_min);
+                    inr[ind_min] = true;
+                    state = 3;
+                    break;
+                }
+                
+              case 5:
+                l++;
+                if (l < ls.size())
+                {
+                    state = 2;
+                }
+                else
+                {
+                    state_end = true;
+                }
+                break;
+                
+            default:
+                break;
+            }
+        }
+
+    }
+    
+    return r;
+  }
+  
+  
+} //namespace viennacl
+    
+
+#endif
diff --git a/viennacl/ocl/backend.hpp b/viennacl/ocl/backend.hpp
index 54b25fd..199ab8c 100644
--- a/viennacl/ocl/backend.hpp
+++ b/viennacl/ocl/backend.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_BACKEND_HPP_
+#define VIENNACL_OCL_BACKEND_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_BACKEND_HPP_
-#define _VIENNACL_BACKEND_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file backend.hpp
     @brief Implementations of the OpenCL backend, where all contexts are stored in.
diff --git a/viennacl/ocl/command_queue.hpp b/viennacl/ocl/command_queue.hpp
index abeb26d..c176cb7 100644
--- a/viennacl/ocl/command_queue.hpp
+++ b/viennacl/ocl/command_queue.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_COMMAND_QUEUE_HPP_
+#define VIENNACL_OCL_COMMAND_QUEUE_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_COMMAND_QUEUE_HPP_
-#define _VIENNACL_COMMAND_QUEUE_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file command_queue.hpp
     @brief Implementations of command queue representations
diff --git a/viennacl/ocl/context.hpp b/viennacl/ocl/context.hpp
index 89beeee..e2355fc 100644
--- a/viennacl/ocl/context.hpp
+++ b/viennacl/ocl/context.hpp
@@ -1,21 +1,23 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_CONTEXT_HPP_
+#define VIENNACL_OCL_CONTEXT_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_CONTEXT_HPP_
-#define _VIENNACL_CONTEXT_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
 
-/** @file command_queue.hpp
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/ocl/context.hpp
     @brief Represents an OpenCL context within ViennaCL
 */
 
@@ -44,8 +46,17 @@ namespace viennacl
       typedef std::vector< viennacl::ocl::program >   ProgramContainer;
       
       public:
-        context() : initialized_(false), device_type_(CL_DEVICE_TYPE_DEFAULT), current_device_id(0) {}
+        context() : initialized_(false),
+                    device_type_(CL_DEVICE_TYPE_DEFAULT),
+                    current_device_id(0),
+                    default_device_num_(1) {}
+        
+        //////// Get and set default number of devices per context */
+        /** @brief Returns the maximum number of devices to be set up for the context */
+        std::size_t default_device_num() const { return default_device_num_; }
         
+        /** @brief Sets the maximum number of devices to be set up for the context */
+        void default_device_num(std::size_t new_num) { default_device_num_ = new_num; }
         
         ////////// get and set preferred device type /////////////////////
         /** @brief Returns the default device type for the context */
@@ -175,7 +186,7 @@ namespace viennacl
         template < typename SCALARTYPE, typename A, template <typename, typename> class VectorType >
         viennacl::ocl::handle<cl_mem> create_memory(cl_mem_flags flags, const VectorType<SCALARTYPE, A> & _buffer)
         {
-          return create_memory(flags, static_cast<unsigned int>(sizeof(SCALARTYPE) * _buffer.size()), (void*)&_buffer[0]);
+          return create_memory(flags, static_cast<cl_uint>(sizeof(SCALARTYPE) * _buffer.size()), (void*)&_buffer[0]);
         }
         
         //////////////////// create queues ////////////////////////////////
@@ -263,6 +274,7 @@ namespace viennacl
             clGetProgramBuildInfo(temp, devices_[0].id(), CL_PROGRAM_BUILD_LOG, sizeof(char)*1024, &buffer, NULL);
             std::cout << "Build Scalar: Err = " << err << " Status = " << status << std::endl;
             std::cout << "Log: " << buffer << std::endl;
+            //std::cout << "Sources: " << source << std::endl;
           #endif
           VIENNACL_ERR_CHECK(err);
 
@@ -360,7 +372,11 @@ namespace viennacl
                                                                   ++iter)
             device_id_array.push_back(iter->id());
             
-          h_ = clCreateContext(0, device_id_array.size(), &(device_id_array[0]), NULL, NULL, &err);
+          cl_uint device_num = std::max(default_device_num_, device_id_array.size());
+          h_ = clCreateContext(0, 
+                               device_num,
+                               &(device_id_array[0]),
+                               NULL, NULL, &err);
           VIENNACL_ERR_CHECK(err);
           
           initialized_ = true;
@@ -419,6 +435,7 @@ namespace viennacl
         viennacl::ocl::handle<cl_context> h_;
         std::vector< viennacl::ocl::device > devices_;
         unsigned int current_device_id;
+        std::size_t default_device_num_;
         ProgramContainer programs_;
         std::map< cl_device_id, std::vector< viennacl::ocl::command_queue> > queues_;
     }; //context
diff --git a/viennacl/ocl/device.hpp b/viennacl/ocl/device.hpp
index 2098891..73d6263 100644
--- a/viennacl/ocl/device.hpp
+++ b/viennacl/ocl/device.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_DEVICE_HPP_
+#define VIENNACL_OCL_DEVICE_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_DEVICE_HPP_
-#define _VIENNACL_DEVICE_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file device.hpp
     @brief Represents an OpenCL device within ViennaCL
diff --git a/viennacl/ocl/enqueue.hpp b/viennacl/ocl/enqueue.hpp
index 7ab3047..3e75c61 100644
--- a/viennacl/ocl/enqueue.hpp
+++ b/viennacl/ocl/enqueue.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_ENQUEUE_HPP_
+#define VIENNACL_OCL_ENQUEUE_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_ENQUEUE_HPP_
-#define _VIENNACL_ENQUEUE_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file enqueue.hpp
     @brief Enqueues kernels into command queues
diff --git a/viennacl/ocl/error.hpp b/viennacl/ocl/error.hpp
index b7a5321..5a767c9 100644
--- a/viennacl/ocl/error.hpp
+++ b/viennacl/ocl/error.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_ERROR_HPP_
+#define VIENNACL_OCL_ERROR_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_ERROR_HPP_
-#define _VIENNACL_ERROR_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file error.hpp
     @brief Error handling for the OpenCL layer of ViennaCL
diff --git a/viennacl/ocl/forwards.h b/viennacl/ocl/forwards.h
index 4ea9d83..b57c49d 100644
--- a/viennacl/ocl/forwards.h
+++ b/viennacl/ocl/forwards.h
@@ -1,24 +1,26 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+#ifndef VIENNACL_OCL_FORWARDS_H_
+#define VIENNACL_OCL_FORWARDS_H_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file ocl/forwards.h
     @brief This file provides the forward declarations for the OpenCL layer of ViennaCL
 */
 
-#ifndef _VIENNACL_OCL_FORWARDS_H_
-#define _VIENNACL_OCL_FORWARDS_H_
-
 #define VIENNACL_OCL_MAX_DEVICE_NUM  8
 
 #include <stddef.h>
diff --git a/viennacl/ocl/handle.hpp b/viennacl/ocl/handle.hpp
index f83481f..30ccaed 100644
--- a/viennacl/ocl/handle.hpp
+++ b/viennacl/ocl/handle.hpp
@@ -1,19 +1,25 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_HANDLE_HPP_
+#define VIENNACL_OCL_HANDLE_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_HANDLE_HPP_
-#define _VIENNACL_HANDLE_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/ocl/handle.hpp
+    @brief Implementation of a smart-pointer-like class for handling OpenCL handles.
+*/
 
 #ifdef __APPLE__
 #include <OpenCL/cl.h>
diff --git a/viennacl/ocl/kernel.hpp b/viennacl/ocl/kernel.hpp
index 03709a8..97811cd 100644
--- a/viennacl/ocl/kernel.hpp
+++ b/viennacl/ocl/kernel.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_KERNEL_HPP_
-#define _VIENNACL_KERNEL_HPP_
+#ifndef VIENNACL_OCL_KERNEL_HPP_
+#define VIENNACL_OCL_KERNEL_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file kernel.hpp
     @brief Representation of an OpenCL kernel in ViennaCL.
@@ -178,7 +180,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting two kernel parameter */
+      /** @brief Convenience function for setting two kernel parameters */
       template <typename T0, typename T1>
       kernel & operator()(T0 const & t0, T1 const & t1)
       {
@@ -186,7 +188,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting three kernel parameter */
+      /** @brief Convenience function for setting three kernel parameters */
       template <typename T0, typename T1, typename T2>
       kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2)
       {
@@ -194,7 +196,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting four kernel parameter */
+      /** @brief Convenience function for setting four kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3>
       kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3)
       {
@@ -202,7 +204,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting five kernel parameter */
+      /** @brief Convenience function for setting five kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4>
       kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4)
       {
@@ -210,7 +212,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting six kernel parameter */
+      /** @brief Convenience function for setting six kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
       kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5)
       {
@@ -218,7 +220,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting seven kernel parameter */
+      /** @brief Convenience function for setting seven kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
       kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6)
       {
@@ -226,7 +228,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting eight kernel parameter */
+      /** @brief Convenience function for setting eight kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
       kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7)
       {
@@ -234,7 +236,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting nine kernel parameter */
+      /** @brief Convenience function for setting nine kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
       kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8)
       {
@@ -242,7 +244,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting ten kernel parameter */
+      /** @brief Convenience function for setting ten kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4,
                 typename T5, typename T6, typename T7, typename T8, typename T9>
       kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4,
@@ -252,7 +254,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting eleven kernel parameter */
+      /** @brief Convenience function for setting eleven kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
                 typename T6, typename T7, typename T8, typename T9, typename T10>
       kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
@@ -262,7 +264,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting twelve kernel parameter */
+      /** @brief Convenience function for setting twelve kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
                 typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
       kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
@@ -273,7 +275,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting thirteen kernel parameter */
+      /** @brief Convenience function for setting thirteen kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
                 typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
       kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
@@ -284,7 +286,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting fourteen kernel parameter */
+      /** @brief Convenience function for setting fourteen kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
                 typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
                 typename T12, typename T13>
@@ -298,7 +300,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting fifteen kernel parameter */
+      /** @brief Convenience function for setting fifteen kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
                 typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
                 typename T12, typename T13, typename T14>
@@ -312,7 +314,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting sixteen kernel parameter */
+      /** @brief Convenience function for setting sixteen kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
                 typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
                 typename T12, typename T13, typename T14, typename T15>
@@ -326,7 +328,7 @@ namespace viennacl
          return *this;
       }     
 
-      /** @brief Convenience function for setting seventeen kernel parameter */
+      /** @brief Convenience function for setting seventeen kernel parameters */
       template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
                 typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
                 typename T12, typename T13, typename T14, typename T15, typename T16>
@@ -340,6 +342,110 @@ namespace viennacl
          return *this;
       }     
 
+      /** @brief Convenience function for setting eighteen kernel parameters */
+      template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+                typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
+                typename T12, typename T13, typename T14, typename T15, typename T16, typename T17>
+      kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
+                          T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11,
+                          T12 const & t12, T13 const & t13, T14 const & t14, T15 const & t15, T16 const & t16, T17 const & t17)
+      {
+         arg(0, t0); arg(1, t1); arg(2, t2); arg(3, t3); arg(4, t4); arg(5, t5);
+         arg(6, t6); arg(7, t7); arg(8, t8); arg(9, t9); arg(10, t10); arg(11, t11);
+         arg(12, t12); arg(13, t13); arg(14, t14); arg(15, t15); arg(16, t16); arg(17, t17);
+         return *this;
+      }     
+
+      /** @brief Convenience function for setting nineteen kernel parameters */
+      template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+                typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
+                typename T12, typename T13, typename T14, typename T15, typename T16, typename T17,
+                typename T18>
+      kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
+                          T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11,
+                          T12 const & t12, T13 const & t13, T14 const & t14, T15 const & t15, T16 const & t16, T17 const & t17,
+                          T18 const & t18
+                         )
+      {
+         arg(0, t0); arg(1, t1); arg(2, t2); arg(3, t3); arg(4, t4); arg(5, t5);
+         arg(6, t6); arg(7, t7); arg(8, t8); arg(9, t9); arg(10, t10); arg(11, t11);
+         arg(12, t12); arg(13, t13); arg(14, t14); arg(15, t15); arg(16, t16); arg(17, t17);
+         arg(18, t18);
+         return *this;
+      }     
+
+      /** @brief Convenience function for setting twenty kernel parameters */
+      template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+                typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
+                typename T12, typename T13, typename T14, typename T15, typename T16, typename T17,
+                typename T18, typename T19>
+      kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
+                          T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11,
+                          T12 const & t12, T13 const & t13, T14 const & t14, T15 const & t15, T16 const & t16, T17 const & t17,
+                          T18 const & t18, T19 const & t19
+                         )
+      {
+         arg(0, t0); arg(1, t1); arg(2, t2); arg(3, t3); arg(4, t4); arg(5, t5);
+         arg(6, t6); arg(7, t7); arg(8, t8); arg(9, t9); arg(10, t10); arg(11, t11);
+         arg(12, t12); arg(13, t13); arg(14, t14); arg(15, t15); arg(16, t16); arg(17, t17);
+         arg(18, t18); arg(19, t19);
+         return *this;
+      }     
+
+      /** @brief Convenience function for setting twentyone kernel parameters */
+      template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+                typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
+                typename T12, typename T13, typename T14, typename T15, typename T16, typename T17,
+                typename T18, typename T19, typename T20>
+      kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
+                          T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11,
+                          T12 const & t12, T13 const & t13, T14 const & t14, T15 const & t15, T16 const & t16, T17 const & t17,
+                          T18 const & t18, T19 const & t19, T20 const & t20
+                         )
+      {
+         arg(0, t0); arg(1, t1); arg(2, t2); arg(3, t3); arg(4, t4); arg(5, t5);
+         arg(6, t6); arg(7, t7); arg(8, t8); arg(9, t9); arg(10, t10); arg(11, t11);
+         arg(12, t12); arg(13, t13); arg(14, t14); arg(15, t15); arg(16, t16); arg(17, t17);
+         arg(18, t18); arg(19, t19); arg(20, t20);
+         return *this;
+      }     
+
+      /** @brief Convenience function for setting twentytwo kernel parameters */
+      template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+                typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
+                typename T12, typename T13, typename T14, typename T15, typename T16, typename T17,
+                typename T18, typename T19, typename T20, typename T21>
+      kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
+                          T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11,
+                          T12 const & t12, T13 const & t13, T14 const & t14, T15 const & t15, T16 const & t16, T17 const & t17,
+                          T18 const & t18, T19 const & t19, T20 const & t20, T21 const & t21
+                         )
+      {
+         arg(0, t0); arg(1, t1); arg(2, t2); arg(3, t3); arg(4, t4); arg(5, t5);
+         arg(6, t6); arg(7, t7); arg(8, t8); arg(9, t9); arg(10, t10); arg(11, t11);
+         arg(12, t12); arg(13, t13); arg(14, t14); arg(15, t15); arg(16, t16); arg(17, t17);
+         arg(18, t18); arg(19, t19); arg(20, t20); arg(21, t21);
+         return *this;
+      }     
+
+      /** @brief Convenience function for setting twentythree kernel parameters */
+      template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+                typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
+                typename T12, typename T13, typename T14, typename T15, typename T16, typename T17,
+                typename T18, typename T19, typename T20, typename T21, typename T22>
+      kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
+                          T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11,
+                          T12 const & t12, T13 const & t13, T14 const & t14, T15 const & t15, T16 const & t16, T17 const & t17,
+                          T18 const & t18, T19 const & t19, T20 const & t20, T21 const & t21, T22 const & t22
+                         )
+      {
+         arg(0, t0); arg(1, t1); arg(2, t2); arg(3, t3); arg(4, t4); arg(5, t5);
+         arg(6, t6); arg(7, t7); arg(8, t8); arg(9, t9); arg(10, t10); arg(11, t11);
+         arg(12, t12); arg(13, t13); arg(14, t14); arg(15, t15); arg(16, t16); arg(17, t17);
+         arg(18, t18); arg(19, t19); arg(20, t20); arg(21, t21);  arg(22, t22);
+         return *this;
+      }     
+
       /** @brief Returns the local work size at the respective dimension
       *
       * @param index   Dimension index (currently either 0 or 1)
@@ -388,6 +494,9 @@ namespace viennacl
 
       std::string const & name() const { return name_; }
 
+      viennacl::ocl::handle<cl_kernel> const & handle() const { return handle_; }
+
+
     private:
       void create_kernel()
       {
@@ -400,9 +509,9 @@ namespace viennacl
         if (err != CL_SUCCESS)
         {
           #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)
-          std::cout << "ViennaCL: Could not build kernel '" << name_ << "'." << std::endl;
+          std::cout << "ViennaCL: Could not create kernel '" << name_ << "'." << std::endl;
           #endif
-          std::cerr << "Could not build kernel '" << name_ << "'." << std::endl;
+          //std::cerr << "Could not build kernel '" << name_ << "'." << std::endl;
         }
         VIENNACL_ERR_CHECK(err);
       }
@@ -431,8 +540,6 @@ namespace viennacl
         }
       }
       
-      viennacl::ocl::handle<cl_kernel> const & handle() const { return handle_; }
-
       viennacl::ocl::handle<cl_kernel> handle_;
       viennacl::ocl::handle<cl_program> program_;
       std::string name_;
diff --git a/viennacl/ocl/local_mem.hpp b/viennacl/ocl/local_mem.hpp
index 8152d20..24b58f0 100644
--- a/viennacl/ocl/local_mem.hpp
+++ b/viennacl/ocl/local_mem.hpp
@@ -1,20 +1,22 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-
-#ifndef _VIENNACL_LOCAL_MEM_HPP_
-#define _VIENNACL_LOCAL_MEM_HPP_
+#ifndef VIENNACL_OCL_LOCAL_MEM_HPP_
+#define VIENNACL_OCL_LOCAL_MEM_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
 
 /** @file local_mem.hpp
     @brief A local (shared) memory object for OpenCL
diff --git a/viennacl/ocl/platform.hpp b/viennacl/ocl/platform.hpp
index 93790d4..e954ee9 100644
--- a/viennacl/ocl/platform.hpp
+++ b/viennacl/ocl/platform.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_PLATFORM_HPP_
+#define VIENNACL_OCL_PLATFORM_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_PLATFORM_HPP_
-#define _VIENNACL_PLATFORM_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file platform.hpp
     @brief Implements a OpenCL platform within ViennaCL
diff --git a/viennacl/ocl/program.hpp b/viennacl/ocl/program.hpp
index 04d8560..e978c20 100644
--- a/viennacl/ocl/program.hpp
+++ b/viennacl/ocl/program.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_PROGRAM_HPP_
+#define VIENNACL_OCL_PROGRAM_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_PROGRAM_HPP_
-#define _VIENNACL_PROGRAM_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file program.hpp
     @brief Implements an OpenCL program class for ViennaCL
@@ -76,6 +78,7 @@ namespace viennacl
             return *it;
         }
         std::cerr << "ViennaCL: FATAL ERROR: Could not find kernel '" << name << "'" << std::endl;
+        std::cout << "Number of kernels in program: " << kernels_.size() << std::endl;
         assert(!"Kernel not found");
         return kernels_[0];  //return a defined object
       }
diff --git a/viennacl/ocl/utils.hpp b/viennacl/ocl/utils.hpp
index e03ddf9..2769a55 100644
--- a/viennacl/ocl/utils.hpp
+++ b/viennacl/ocl/utils.hpp
@@ -1,22 +1,24 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_OCL_UTILS_HPP_
-#define _VIENNACL_OCL_UTILS_HPP_
-
-/** @file backend.hpp
-    @brief Implementations of the OpenCL backend, where all contexts are stored in.
+#ifndef VIENNACL_OCL_UTILS_HPP_
+#define VIENNACL_OCL_UTILS_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/ocl/utils.hpp
+    @brief Provides OpenCL-related utilities.
 */
 
 #include <vector>
diff --git a/viennacl/range.hpp b/viennacl/range.hpp
new file mode 100644
index 0000000..9197c83
--- /dev/null
+++ b/viennacl/range.hpp
@@ -0,0 +1,75 @@
+#ifndef VIENNACL_RANGE_HPP_
+#define VIENNACL_RANGE_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file range.hpp
+    @brief Implementation of a range object for use with proxy objects
+*/
+
+#include <vector>
+#include <stddef.h>
+#include <assert.h>
+#include "viennacl/forwards.h"
+
+namespace viennacl
+{
+
+  /** @brief A range class that refers to an interval [start, stop), where 'start' is included, and 'stop' is excluded.
+   * 
+   * Similar to the boost::numeric::ublas::basic_range class.
+   */
+  template <typename SizeType /* see forwards.h for default argument*/,
+            typename DistanceType /* see forwards.h for default argument*/>
+  class basic_range
+  {
+    public:
+      typedef SizeType             size_type;
+      typedef DistanceType         difference_type;
+      typedef size_type            value_type;
+      typedef value_type           const_reference;
+      typedef const_reference      reference;
+      
+      basic_range() : start_(0), size_(0) {}
+      basic_range(size_type start_index, size_type stop_index) : start_(start_index), size_(stop_index - start_index)
+      {
+        assert(start_index <= stop_index);
+      }
+        
+        
+      size_type start() const { return start_; }
+      size_type size() const { return size_; }
+      
+      const_reference operator()(size_type i) const 
+      {
+        assert(i < size());
+        return start_ + i;
+      }
+      const_reference operator[](size_type i) const { return operator()(i); }
+      
+      bool operator==(const basic_range & r) const { return (start_ == r.start_) && (size_ == r.size_); }
+      bool operator!=(const basic_range & r) const { return !(*this == r); }
+      
+    private:
+      size_type start_;
+      size_type size_;
+  };
+  
+  
+}
+
+#endif
\ No newline at end of file
diff --git a/viennacl/scalar.hpp b/viennacl/scalar.hpp
index a536609..303fdb5 100644
--- a/viennacl/scalar.hpp
+++ b/viennacl/scalar.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_SCALAR_HPP_
-#define _VIENNACL_SCALAR_HPP_
+#ifndef VIENNACL_SCALAR_HPP_
+#define VIENNACL_SCALAR_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file scalar.hpp
     @brief Implementation of the ViennaCL scalar class
diff --git a/viennacl/toeplitz_matrix.hpp b/viennacl/toeplitz_matrix.hpp
new file mode 100644
index 0000000..1f67fe3
--- /dev/null
+++ b/viennacl/toeplitz_matrix.hpp
@@ -0,0 +1,280 @@
+#ifndef VIENNACL_TOEPLITZ_MATRIX_HPP
+#define VIENNACL_TOEPLITZ_MATRIX_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file toeplitz_matrix.hpp
+    @brief Implementation of the toeplitz_matrix class for efficient manipulation of Toeplitz matrices.  Experimental in 1.2.x.
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/vector.hpp"
+#include "viennacl/ocl/context.hpp"
+
+#include "viennacl/fft.hpp"
+
+#include "viennacl/linalg/toeplitz_matrix_operations.hpp"
+
+
+namespace viennacl {
+
+    /** @brief A Toeplitz matrix class
+    *
+    * @tparam SCALARTYPE   The underlying scalar type (either float or double)
+    * @tparam ALIGNMENT   The internal memory size is given by (size()/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory.
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT>
+    class toeplitz_matrix
+    {
+      public:
+
+        /**
+         * @brief The default constructor. Does not allocate any memory.
+         *
+         */
+        explicit toeplitz_matrix()
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+        }
+
+        /** @brief         Creates the matrix with the given size
+        *
+        * @param rows      Number of rows of the matrix
+        * @param cols      Number of columns of the matrix
+        */
+        explicit toeplitz_matrix(std::size_t rows, std::size_t cols) : elements_(rows * 2)
+        {
+          assert(rows == cols && "Toeplitz matrix must be square!");
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+        }
+        
+
+        /** @brief Resizes the matrix.
+        *   Existing entries can be preserved
+        *
+        * @param sz         New size of matrix
+        * @param preserve   If true, existing values are preserved.
+        */
+        void resize(size_t sz, bool preserve = true) {
+            elements_.resize(sz * 2, preserve);
+        }
+
+        /** @brief Returns the OpenCL handle
+        *
+        *   @return OpenCL handle
+        */
+        viennacl::ocl::handle<cl_mem> handle() const { return elements_.handle(); }
+
+        /**
+         * @brief Returns an internal viennacl::vector, which represents a Toeplitz matrix elements
+         *
+         */
+        viennacl::vector<SCALARTYPE, ALIGNMENT> & elements() { return elements_; }
+        viennacl::vector<SCALARTYPE, ALIGNMENT> const & elements() const { return elements_; }
+
+
+        /**
+         * @brief Returns the number of rows of the matrix
+         */
+        std::size_t size1() const { return elements_.size() / 2; }
+        
+        /**
+         * @brief Returns the number of columns of the matrix
+         */
+        std::size_t size2() const { return elements_.size() / 2; }
+
+        /** @brief Returns the internal size of matrix representtion.
+        *   Usually required for launching OpenCL kernels only
+        *
+        *   @return Internal size of matrix representation
+        */
+        std::size_t internal_size() const { return elements_.internal_size(); }
+
+
+        /**
+         * @brief Read-write access to a single element of the matrix
+         *
+         * @param row_index  Row index of accessed element
+         * @param col_index  Column index of accessed element
+         * @return Proxy for matrix entry
+         */
+        entry_proxy<SCALARTYPE> operator()(std::size_t row_index, std::size_t col_index) 
+        {
+            assert(row_index < size1() && col_index < size2() && "Invalid access");
+            
+            int index = static_cast<int>(col_index) - static_cast<int>(row_index);
+            
+            if (index < 0)
+              index = -index;
+            else if
+              (index > 0) index = 2 * size1() - index;
+            return elements_[index];
+        }
+
+
+        /**
+         * @brief += operation for Toeplitz matrices
+         *
+         * @param that Matrix which will be added
+         * @return Result of addition
+         */
+        toeplitz_matrix<SCALARTYPE, ALIGNMENT>& operator +=(toeplitz_matrix<SCALARTYPE, ALIGNMENT>& that) {
+            elements_ += that.elements();
+            return *this;
+        }
+
+    private:
+        toeplitz_matrix(toeplitz_matrix const & t) {}
+        toeplitz_matrix & operator=(toeplitz_matrix const & t) {}
+        
+      
+        viennacl::vector<SCALARTYPE, ALIGNMENT> elements_;
+    };
+
+    /** @brief Copies a Toeplitz matrix from the std::vector to the OpenCL device (either GPU or multi-core CPU)
+    *
+    *
+    * @param cpu_vec   A std::vector on the host.
+    * @param gpu_mat   A toeplitz_matrix from ViennaCL
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    void copy(std::vector<SCALARTYPE> const & cpu_vec, toeplitz_matrix<SCALARTYPE, ALIGNMENT>& gpu_mat)
+    {
+        std::size_t size = gpu_mat.size1();
+        assert((size * 2 - 1)  == cpu_vec.size() && "Size mismatch");
+        std::vector<SCALARTYPE> rvrs(cpu_vec.size());
+        std::copy(cpu_vec.begin(), cpu_vec.end(), rvrs.begin());
+        std::reverse(rvrs.begin(), rvrs.end());
+
+        std::vector<SCALARTYPE> tmp(size * 2);
+        std::copy(rvrs.begin() + size - 1, rvrs.end(), tmp.begin());
+        std::copy(rvrs.begin(), rvrs.begin() + size - 1, tmp.begin() + size + 1);
+        tmp[size] = 0.0;
+        copy(tmp, gpu_mat.elements());
+    }
+
+    /** @brief Copies a Toeplitz matrix from the OpenCL device (either GPU or multi-core CPU) to the std::vector
+    *
+    *
+    * @param gpu_mat   A toeplitz_matrix from ViennaCL
+    * @param cpu_vec   A std::vector on the host.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    void copy(toeplitz_matrix<SCALARTYPE, ALIGNMENT> const & gpu_mat, std::vector<SCALARTYPE> & cpu_vec)
+    {
+        std::size_t size = gpu_mat.size1();
+        assert((size * 2 - 1)  == cpu_vec.size() && "Size mismatch");
+        std::vector<SCALARTYPE> tmp(size * 2);
+        copy(gpu_mat.elements(), tmp);
+        std::reverse(tmp.begin(), tmp.end());
+
+        std::copy(tmp.begin(), tmp.begin() + size - 1, cpu_vec.begin() + size);
+        std::copy(tmp.begin() + size, tmp.end(), cpu_vec.begin());
+
+    }
+
+    /** @brief Copies a Toeplitz matrix from the OpenCL device (either GPU or multi-core CPU) to the matrix-like object
+    *
+    *
+    * @param tep_src   A toeplitz_matrix from ViennaCL
+    * @param com_dst   A matrix-like object
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+    void copy(toeplitz_matrix<SCALARTYPE, ALIGNMENT> const & tep_src, MATRIXTYPE & com_dst)
+    {
+        std::size_t size = tep_src.size1();
+        assert(size == com_dst.size1() && "Size mismatch");
+        assert(size == com_dst.size2() && "Size mismatch");
+        std::vector<SCALARTYPE> tmp(tep_src.size1() * 2 - 1);
+        copy(tep_src, tmp);
+
+        for(std::size_t i = 0; i < size; i++)
+            for(std::size_t j = 0; j < size; j++)
+                com_dst(i, j) = tmp[static_cast<int>(j) - static_cast<int>(i) + static_cast<int>(size) - 1];
+    }
+
+    /** @brief Copies a the matrix-like object to the Toeplitz matrix from the OpenCL device (either GPU or multi-core CPU)
+    *
+    *
+    * @param com_src   A std::vector on the host
+    * @param tep_dst   A toeplitz_matrix from ViennaCL
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+    void copy(MATRIXTYPE const & com_src, toeplitz_matrix<SCALARTYPE, ALIGNMENT>& tep_dst)
+    {
+        std::size_t size = tep_dst.size1();
+        assert(size == com_src.size1() && "Size mismatch");
+        assert(size == com_src.size2() && "Size mismatch");
+
+        std::vector<SCALARTYPE> tmp(2*size - 1);
+
+        for(int i = size - 1; i >= 0; i--)
+            tmp[size - i - 1] = com_src(i, 0);
+
+        for(std::size_t i = 1; i < size; i++)
+            tmp[size + i - 1] = com_src(0, i);
+
+        copy(tmp, tep_dst);
+    }
+
+    /*template <typename SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+    void prod_impl(toeplitz_matrix<SCALARTYPE, ALIGNMENT>& mat,
+                   vector<SCALARTYPE, VECTOR_ALIGNMENT>& vec,
+                   vector<SCALARTYPE, VECTOR_ALIGNMENT>& result) {
+        viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tep(mat.elements().size() * 2);
+        fft::real_to_complex(mat.elements(), tep, mat.elements().size());
+
+        viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp(vec.size() * 4);
+        viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp2(vec.size() * 4);
+
+        tmp.clear();
+        copy(vec, tmp);
+        fft::real_to_complex(tmp, tmp2, vec.size() * 2);
+        fft::convolve(tep, tmp2, tmp);
+        fft::complex_to_real(tmp, tmp2, vec.size() * 2);
+        copy(tmp2.begin(), tmp2.begin() + vec.size(), result.begin());
+    }*/
+
+    /** @brief Prints the matrix. Output is compatible to boost::numeric::ublas
+    *
+    * @param s            STL output stream
+    * @param gpu_matrix   A ViennaCL Toeplitz matrix
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT>
+    std::ostream & operator<<(std::ostream & s, toeplitz_matrix<SCALARTYPE, ALIGNMENT>& gpu_matrix)
+    {
+        std::size_t size = gpu_matrix.size1();
+        std::vector<SCALARTYPE> tmp(2*size - 1);
+        copy(gpu_matrix, tmp);
+        s << "[" << size << "," << size << "](";
+
+        for(std::size_t i = 0; i < size; i++) {
+            s << "(";
+            for(std::size_t j = 0; j < size; j++) {
+                s << tmp[(int)j - (int)i + (int)size - 1];
+                //s << (int)i - (int)j;
+                if(j < (size - 1)) s << ",";
+            }
+            s << ")";
+        }
+        s << ")";
+        return s;
+    }
+
+}
+
+#endif // _VIENNACL_TOEPLITZ_MATRIX_HPP
diff --git a/viennacl/tools/adapter.hpp b/viennacl/tools/adapter.hpp
index 458d1a4..c544a24 100644
--- a/viennacl/tools/adapter.hpp
+++ b/viennacl/tools/adapter.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_TOOLS_ADAPTER_HPP_
+#define VIENNACL_TOOLS_ADAPTER_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_TOOLS_ADAPTER_HPP_
-#define _VIENNACL_TOOLS_ADAPTER_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file adapter.hpp
     @brief Adapter classes for sparse matrices made of the STL type std::vector<std::map<unsigned int, SCALARTYPE> >
@@ -49,13 +51,14 @@ namespace viennacl
       public:
         typedef self_type     iterator1;
         typedef self_type     iterator2;
+        typedef std::size_t   size_type;
         
         const_sparse_matrix_adapted_iterator(std::vector<std::map<unsigned int, SCALARTYPE> > const & mat, int i, int j)
          : _mat(mat), _i(i), _j(j)
         {
           if (i < 0) //reverse iterator end
           {
-           // iter2 = _mat[0].rend();  //reverse iterator end
+            //iter2 = _mat[0].rend();  //reverse iterator end
           }
           else  //_i is valid
           {
@@ -65,16 +68,18 @@ namespace viennacl
             }
             else //_j is valid
             {
-              int mat_size = _mat.size();
-              if (_i < mat_size && _j < mat_size )
+              if (_i < _mat.size() && _mat[i].size() > 0 )
               {
-                //TODO: Start at entry j, not at the begin
-                iter2 = _mat[i].begin();
+                //TODO: Start at entry j, not at the beginning
+                if (static_cast<int>(_mat[i].rbegin()->first) < j)
+                  iter2 = _mat[i].end();
+                else
+                  iter2 = _mat[i].begin();
               }
-              else if (_i < mat_size  && _j >= mat_size )
+              else if (_i < _mat.size() && _mat[i].size() == 0)
                 iter2 = _mat[i].end();
               else //i is out of range -> end iterator requested
-                iter2 = _mat[_mat.size() - 1].end(); //forward iterator end
+                iter2 = _mat.back().end(); //forward iterator end
             }
           }
         }
@@ -133,6 +138,7 @@ namespace viennacl
             return (_i == other._i);
           return (iter2 == other.iter2);
         }
+        
         bool operator!=(self_type const & other) const { return !(*this == other); }
         
         int index1() const { return _i; }
@@ -146,18 +152,21 @@ namespace viennacl
         
         const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true> begin() const
         {
-          return const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true>(_mat, _i, iter2->first);
+          return const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true>(_mat, _i, 0);
         }
         const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true> end() const
         {
-          return const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true>(_mat, _i, static_cast<unsigned int>(_mat.size()));
+          int end_ = static_cast<int>(_mat[_i].size());
+          if (end_ > 0)
+            end_ = _mat[_i].rbegin()->first;
+          return const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true>(_mat, _i, end_ + 1);
         }
         
       private:
         std::vector<std::map<unsigned int, SCALARTYPE> > const & _mat;
         typename std::map<unsigned int, SCALARTYPE>::const_iterator iter2;
-        int _i;
-        int _j;
+        size_type _i;
+        size_type _j;
     };
     
     /** @brief Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility.
@@ -173,13 +182,15 @@ namespace viennacl
 
         typedef const_sparse_matrix_adapted_iterator<SCALARTYPE, true, false>   const_reverse_iterator1;
         typedef SCALARTYPE    value_type;
+        typedef std::size_t   size_type;
         
         const_sparse_matrix_adapter(std::vector<std::map<unsigned int, SCALARTYPE> > const & mat) 
          : _mat(mat) {};
         
-        unsigned int size1() const { return static_cast<unsigned int>(_mat.size()); }
-        unsigned int size2() const { return static_cast<unsigned int>(_mat.size()); }  //we allow only square matrices
-        
+        size_type size1() const { return _mat.size(); }
+        size_type size2() const { return _mat.size(); }
+        //size_type size2() const { return (_mat.size() > 0) ? _mat.back().size() : 0; }
+
         const_iterator1 begin1() const { return const_iterator1(_mat, 0, 0); }
         const_iterator1 end1() const   { return const_iterator1(_mat, size1(), size2()); }
 
@@ -187,8 +198,8 @@ namespace viennacl
         const_reverse_iterator1 rend1() const   { return const_reverse_iterator1(_mat, -1, size2()); }
 
         const_iterator2 begin2() const { return const_iterator2(_mat, 0, 0); }
-        const_iterator2 end2() const   { return const_iterator2(_mat, 0, size2()); }
-        
+        const_iterator2 end2() const   { return const_iterator2(_mat, size1(), size2()); }
+
         SCALARTYPE operator()(unsigned int i, unsigned int j) const
         {
           typedef typename std::map<unsigned int, SCALARTYPE>::const_iterator  col_iterator;
@@ -236,15 +247,18 @@ namespace viennacl
             }
             else //_j is valid
             {
-              if (_i < _mat.size() && _j < _mat.size() )
+              if (_i < _mat.size() && _mat[i].size() > 0 )
               {
-                //TODO: Start at entry j, not at the begin
-                iter2 = _mat[i].begin();
+                //TODO: Start at entry j, not at the beginning
+                if (static_cast<int>(_mat[i].rbegin()->first) < j)
+                  iter2 = _mat[i].end();
+                else
+                  iter2 = _mat[i].begin();
               }
-              else if (_i < _mat.size() && _j >= _mat.size())
+              else if (_i < _mat.size() && _mat[i].size() == 0)
                 iter2 = _mat[i].end();
               else //i is out of range -> end iterator requested
-                iter2 = _mat[_mat.size() - 1].end(); //forward iterator end
+                iter2 = _mat.back().end(); //forward iterator end
             }
           }
         }
@@ -300,11 +314,14 @@ namespace viennacl
         
         sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1> begin() const
         {
-          return sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1>(_mat, _i, iter2->first);
+          return sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1>(_mat, _i, 0);
         }
         sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1> end() const
         {
-          return sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1>(_mat, _i, static_cast<int>(_mat.size()));
+          int end_ = static_cast<int>(_mat[_i].size());
+          if (end_ > 0)
+            end_ = _mat[_i].rbegin()->first;
+          return sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1>(_mat, _i, end_ + 1);
         }
         
       private:
@@ -332,10 +349,10 @@ namespace viennacl
          : BaseType(mat), _mat(mat) { };
         
         iterator1 begin1() { return iterator1(_mat, 0, 0); }
-        iterator1 end1() { return iterator1(_mat, _mat.size(), _mat.size()); }
+        iterator1 end1() { return iterator1(_mat, _mat.size(), _mat.back().size()); }
 
         iterator2 begin2() { return iterator2(_mat, 0, 0); }
-        iterator2 end2() { return iterator2(_mat, _mat.size(), _mat.size()); }
+        iterator2 end2() { return iterator2(_mat, _mat.size(), _mat.back().size()); }
         
         SCALARTYPE & operator()(unsigned int i, unsigned int j) { return _mat[i][j]; }
         
@@ -357,8 +374,8 @@ namespace viennacl
         size_t size1() const { return _mat.size(); } //Note: Due to name hiding it is not sufficient to have it in the base class
         
         //assume a square matrix
-        size_t size2() { return _mat.size(); }
-        size_t size2() const { return _mat.size(); } //Note: Due to name hiding it is not sufficient to have it in the base class
+        size_t size2() { return (_mat.size() > 0) ? (_mat.back().size() > 0 ? _mat.back().size() : _mat.size()) : 0; }
+        size_t size2() const { return (_mat.size() > 0) ? (_mat.back().size() > 0 ? _mat.back().size() : _mat.size()) : 0; } //Note: Due to name hiding it is not sufficient to have it in the base class
         
       private:
         std::vector<std::map<unsigned int, SCALARTYPE> > & _mat;
diff --git a/viennacl/tools/entry_proxy.hpp b/viennacl/tools/entry_proxy.hpp
index 5b00674..af5d7fa 100644
--- a/viennacl/tools/entry_proxy.hpp
+++ b/viennacl/tools/entry_proxy.hpp
@@ -1,23 +1,26 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+#ifndef VIENNACL_TOOLS_ENTRY_PROXY_HPP_
+#define VIENNACL_TOOLS_ENTRY_PROXY_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file entry_proxy.hpp
     @brief A proxy class for entries in a vector
 */
 
-#ifndef _VIENNACL_TOOLS_ENTRY_PROXY_HPP_
-#define _VIENNACL_TOOLS_ENTRY_PROXY_HPP_
 
 #include "viennacl/forwards.h"
 #include "viennacl/ocl/backend.hpp"
diff --git a/viennacl/tools/matrix_kernel_class_deducer.hpp b/viennacl/tools/matrix_kernel_class_deducer.hpp
index 7bbe602..0cd256d 100644
--- a/viennacl/tools/matrix_kernel_class_deducer.hpp
+++ b/viennacl/tools/matrix_kernel_class_deducer.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_TOOLS_MATRIX_KERNEL_CLASS_DEDUCER_HPP_
-#define _VIENNACL_TOOLS_MATRIX_KERNEL_CLASS_DEDUCER_HPP_
+#ifndef VIENNACL_TOOLS_MATRIX_KERNEL_CLASS_DEDUCER_HPP_
+#define VIENNACL_TOOLS_MATRIX_KERNEL_CLASS_DEDUCER_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file matrix_kernel_class_deducer.hpp
     @brief Implementation of a helper meta class for deducing the correct kernels for the supplied matrix
@@ -50,6 +52,14 @@ namespace viennacl
       typedef viennacl::linalg::kernels::matrix_col<SCALARTYPE, ALIGNMENT>     ResultType;
     };
 
+    //support for matrix range:
+    template <typename T>
+    struct MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix_range<T> >
+    {
+      typedef typename MATRIX_KERNEL_CLASS_DEDUCER<T>::ResultType    ResultType;
+    };
+    
+    
   }
 
 }
diff --git a/viennacl/tools/matrix_prod_kernel_class_deducer.hpp b/viennacl/tools/matrix_prod_kernel_class_deducer.hpp
index 010ba45..9438be2 100644
--- a/viennacl/tools/matrix_prod_kernel_class_deducer.hpp
+++ b/viennacl/tools/matrix_prod_kernel_class_deducer.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_TOOLS_MATRIX_PROD_KERNEL_CLASS_DEDUCER_HPP_
+#define VIENNACL_TOOLS_MATRIX_PROD_KERNEL_CLASS_DEDUCER_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_TOOLS_MATRIX_PROD_KERNEL_CLASS_DEDUCER_HPP_
-#define _VIENNACL_TOOLS_MATRIX_PROD_KERNEL_CLASS_DEDUCER_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file matrix_prod_kernel_class_deducer.hpp
     @brief Implementation of a helper meta class for deducing the correct kernels for matrix-matrix products
diff --git a/viennacl/tools/matrix_size_deducer.hpp b/viennacl/tools/matrix_size_deducer.hpp
index d03cbd5..b572a5a 100644
--- a/viennacl/tools/matrix_size_deducer.hpp
+++ b/viennacl/tools/matrix_size_deducer.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_
+#define VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_
-#define _VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file matrix_size_deducer.hpp
     @brief Helper implementations that deduce the dimensions of the supplied matrix-valued expressions.
diff --git a/viennacl/tools/matrix_solve_kernel_class_deducer.hpp b/viennacl/tools/matrix_solve_kernel_class_deducer.hpp
index 500ad09..31dcc9b 100644
--- a/viennacl/tools/matrix_solve_kernel_class_deducer.hpp
+++ b/viennacl/tools/matrix_solve_kernel_class_deducer.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_
+#define VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_
 
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
 
-#ifndef _VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_
-#define _VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file matrix_solve_kernel_class_deducer.hpp
     @brief Implementation of a helper meta class for deducing the correct kernels for the dense matrix solver
diff --git a/viennacl/tools/tools.hpp b/viennacl/tools/tools.hpp
index e908aef..43699ba 100644
--- a/viennacl/tools/tools.hpp
+++ b/viennacl/tools/tools.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_TOOLS_HPP_
-#define _VIENNACL_TOOLS_HPP_
+#ifndef VIENNACL_TOOLS_TOOLS_HPP_
+#define VIENNACL_TOOLS_TOOLS_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file tools.hpp
     @brief Various little tools used here and there in ViennaCL.
@@ -47,137 +49,6 @@ namespace viennacl
 {
   namespace tools
   {
-    namespace traits
-    {
-      
-      //Resize:
-      template <typename MatrixType>
-      void resize(MatrixType & matrix, size_t rows, size_t cols)
-      {
-        matrix.resize(rows, cols); 
-      }
-      
-      template <typename VectorType>
-      void resize(VectorType & vec, size_t new_size)
-      {
-        vec.resize(new_size); 
-      }
-      
-      #ifdef VIENNACL_HAVE_UBLAS  
-      //ublas needs separate treatment:
-      template <typename ScalarType>
-      void resize(boost::numeric::ublas::compressed_matrix<ScalarType> & matrix,
-                  size_t rows,
-                  size_t cols)
-      {
-        matrix.resize(rows, cols, false); //Note: omitting third parameter leads to compile time error (not implemented in ublas <= 1.42) 
-      }
-      #endif  
-      
-      
-      #ifdef VIENNACL_HAVE_MTL4
-      template <typename ScalarType>
-      void resize(mtl::compressed2D<ScalarType> & matrix,
-                  size_t rows,
-                  size_t cols)
-      {
-        matrix.change_dim(rows, cols);
-      }
-      
-      template <typename ScalarType>
-      void resize(mtl::dense_vector<ScalarType> & vec,
-                  size_t new_size)
-      {
-        vec.change_dim(new_size);
-      }
-      #endif      
-      
-      //clear:
-      template <typename VectorType>
-      void clear(VectorType & vec)
-      {
-        vec.clear(); 
-      }
-      
-      #ifdef VIENNACL_HAVE_EIGEN
-      void clear(Eigen::VectorXf & vec) { for (int i=0; i<vec.size(); ++i) vec[i] = 0; }
-      void clear(Eigen::VectorXd & vec) { for (int i=0; i<vec.size(); ++i) vec[i] = 0; }
-      #endif
-      
-      #ifdef VIENNACL_HAVE_MTL4
-      template <typename ScalarType>
-      void clear(mtl::dense_vector<ScalarType> & vec)
-      {
-        for (typename mtl::dense_vector<ScalarType>::size_type i=0;
-             i<vec.used_memory();
-             ++i)
-          vec[i] = 0; 
-      }
-      #endif
-      
-      
-      //size:
-      template <typename VectorType>
-      unsigned int size(VectorType & vec)
-      {
-        return vec.size(); 
-      }
-
-      #ifdef VIENNACL_HAVE_MTL4
-      template <typename ScalarType>
-      unsigned int size(mtl::dense_vector<ScalarType> const & vec) { return vec.used_memory(); }
-      #endif
-
-    }
-
-    
-    
-    namespace result_of
-    {
-      //value type:
-      template <typename T>
-      struct value_type
-      {
-        typedef typename T::value_type    type; 
-      };
-      
-    #ifdef VIENNACL_HAVE_EIGEN  
-      template <>
-      struct value_type<Eigen::MatrixXf>
-      {
-        typedef Eigen::MatrixXf::RealScalar    type; 
-      };
-      
-      template <>
-      struct value_type<Eigen::MatrixXd>
-      {
-        typedef Eigen::MatrixXd::RealScalar    type; 
-      };
-
-      template <typename ScalarType, int option>
-      struct value_type<Eigen::SparseMatrix<ScalarType, option> >
-      {
-        typedef ScalarType    type; 
-      };
-
-      template <>
-      struct value_type<Eigen::VectorXf>
-      {
-        typedef Eigen::VectorXf::RealScalar    type; 
-      };
-
-      template <>
-      struct value_type<Eigen::VectorXd>
-      {
-        typedef Eigen::VectorXd::RealScalar    type; 
-      };
-      
-    #endif
-      
-    }
-    
-    
-    
     
     /** @brief Supply suitable increment functions for the iterators: */
     template <class SCALARTYPE, typename F, unsigned int ALIGNMENT>
@@ -193,17 +64,6 @@ namespace viennacl
     };
 
     
-    /** @brief Simple enable-if variant that uses the SFINAE pattern */
-    template <bool b, class T = void> 
-    struct enable_if
-    {
-      typedef T   type;
-    };
-
-    template <class T> 
-    struct enable_if<false, T> {};
-    
-    
     /** @brief A guard that checks whether the floating point type of GPU types is either float or double */
     template <typename T>
     struct CHECK_SCALAR_TEMPLATE_ARGUMENT
@@ -389,6 +249,13 @@ namespace viennacl
     };
 
     template <typename ScalarType, unsigned int Amat, unsigned int A>
+    struct VECTOR_SIZE_DEDUCER<const viennacl::circulant_matrix<ScalarType, Amat>, const viennacl::vector<ScalarType, A>, viennacl::op_prod>
+    {
+      static size_t size(const viennacl::circulant_matrix<ScalarType, Amat> & lhs,
+                         const viennacl::vector<ScalarType, A> & rhs) { return lhs.size1(); }
+    };
+    
+    template <typename ScalarType, unsigned int Amat, unsigned int A>
     struct VECTOR_SIZE_DEDUCER<const viennacl::compressed_matrix<ScalarType, Amat>, const viennacl::vector<ScalarType, A>, viennacl::op_prod>
     {
       static size_t size(const viennacl::compressed_matrix<ScalarType, Amat> & lhs,
diff --git a/viennacl/traits/clear.hpp b/viennacl/traits/clear.hpp
new file mode 100644
index 0000000..d6c3479
--- /dev/null
+++ b/viennacl/traits/clear.hpp
@@ -0,0 +1,72 @@
+#ifndef VIENNACL_TRAITS_CLEAR_HPP_
+#define VIENNACL_TRAITS_CLEAR_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/traits/clear.hpp
+    @brief Generic clear functionality for different vector and matrix types
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+
+#ifdef VIENNACL_HAVE_UBLAS  
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#endif
+
+#ifdef VIENNACL_HAVE_EIGEN  
+#include <Eigen/Core>
+#include <Eigen/Sparse>
+#endif
+
+#ifdef VIENNACL_HAVE_MTL4
+#include <boost/numeric/mtl/mtl.hpp>
+#endif
+
+#include "viennacl/traits/size.hpp"
+
+#include <vector>
+#include <map>
+
+namespace viennacl
+{
+  namespace traits
+  {
+    
+    //clear:
+    template <typename VectorType>
+    void clear(VectorType & vec)
+    {
+      typedef typename viennacl::result_of::size_type<VectorType>::type  size_type;
+      
+      for (size_type i=0; i<viennacl::traits::size(vec); ++i)
+        vec[i] = 0;  //TODO: Quantity access can also be wrapped...
+    }
+
+    template <typename ScalarType, unsigned int ALIGNMENT>
+    void clear(viennacl::vector<ScalarType, ALIGNMENT> & vec)
+    {
+      vec.clear();
+    }
+  } //namespace traits
+} //namespace viennacl
+    
+
+#endif
diff --git a/viennacl/traits/fill.hpp b/viennacl/traits/fill.hpp
new file mode 100644
index 0000000..21e6636
--- /dev/null
+++ b/viennacl/traits/fill.hpp
@@ -0,0 +1,69 @@
+#ifndef VIENNACL_TRAITS_FILL_HPP_
+#define VIENNACL_TRAITS_FILL_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file fill.hpp
+    @brief Generic fill functionality for different matrix types
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+#include "viennacl/meta/result_of.hpp"
+
+#ifdef VIENNACL_HAVE_EIGEN  
+#include <Eigen/Core>
+#include <Eigen/Sparse>
+#endif
+
+#include <vector>
+#include <map>
+
+namespace viennacl
+{
+
+  namespace traits
+  {
+    //
+    // Resize: Change the size of vectors and matrices
+    //
+    template <typename MatrixType, typename SCALARTYPE>
+    void fill(MatrixType & matrix, std::size_t row_index, std::size_t col_index, SCALARTYPE value)
+    {
+      matrix(row_index, col_index) = value; 
+    }
+    
+    #ifdef VIENNACL_HAVE_EIGEN
+    template <typename T, int options, typename SCALARTYPE>
+    inline void fill(Eigen::SparseMatrix<T, options> & m,
+                     std::size_t row_index,
+                     std::size_t col_index,
+                     SCALARTYPE value
+                    )
+    {
+      m.fill(row_index, col_index) = value;
+    }    
+    #endif
+
+ 
+  } //namespace traits
+} //namespace viennacl
+    
+
+#endif
diff --git a/viennacl/traits/handle.hpp b/viennacl/traits/handle.hpp
new file mode 100644
index 0000000..1d08741
--- /dev/null
+++ b/viennacl/traits/handle.hpp
@@ -0,0 +1,75 @@
+#ifndef VIENNACL_TRAITS_HANDLE_HPP_
+#define VIENNACL_TRAITS_HANDLE_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file traits/handle.hpp
+    @brief Extracts the underlying OpenCL handle from a vector, a matrix, an expression etc.
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+
+#ifdef __APPLE__
+#include <OpenCL/cl.h>
+#else
+#include <CL/cl.h>
+#endif
+
+namespace viennacl
+{
+  namespace traits
+  {
+    
+    // Returns the OpenCL handle of a ViennaCL object
+    template <typename T>
+    viennacl::ocl::handle<cl_mem> handle(T & obj)
+    {
+      return obj.handle();
+    }
+
+    template <typename T>
+    viennacl::ocl::handle<cl_mem> handle(viennacl::vector_range<T> & obj)
+    {
+      return handle(obj.get());
+    }
+
+    template <typename T>
+    viennacl::ocl::handle<cl_mem> handle(viennacl::vector_range<T> const & obj)
+    {
+      return handle(obj.get());
+    }
+
+    template <typename T>
+    viennacl::ocl::handle<cl_mem> handle(viennacl::matrix_range<T> & obj)
+    {
+      return handle(obj.get());
+    }
+
+    template <typename T>
+    viennacl::ocl::handle<cl_mem> handle(viennacl::matrix_range<T> const & obj)
+    {
+      return handle(obj.get());
+    }
+
+  } //namespace traits
+} //namespace viennacl
+    
+
+#endif
diff --git a/viennacl/traits/size.hpp b/viennacl/traits/size.hpp
new file mode 100644
index 0000000..b9a7da5
--- /dev/null
+++ b/viennacl/traits/size.hpp
@@ -0,0 +1,225 @@
+#ifndef VIENNACL_TRAITS_SIZE_HPP_
+#define VIENNACL_TRAITS_SIZE_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file size.hpp
+    @brief Generic size and resize functionality for different vector and matrix types
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+#include "viennacl/meta/result_of.hpp"
+
+#ifdef VIENNACL_HAVE_UBLAS  
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#endif
+
+#ifdef VIENNACL_HAVE_EIGEN  
+#include <Eigen/Core>
+#include <Eigen/Sparse>
+#endif
+
+#ifdef VIENNACL_HAVE_MTL4
+#include <boost/numeric/mtl/mtl.hpp>
+#endif
+
+#include <vector>
+#include <map>
+
+namespace viennacl
+{
+
+  namespace traits
+  {
+    //
+    // Resize: Change the size of vectors and matrices
+    //
+    template <typename MatrixType>
+    void resize(MatrixType & matrix, size_t rows, size_t cols)
+    {
+      matrix.resize(rows, cols); 
+    }
+    
+    template <typename VectorType>
+    void resize(VectorType & vec, size_t new_size)
+    {
+      vec.resize(new_size); 
+    }
+    
+    #ifdef VIENNACL_HAVE_UBLAS  
+    //ublas needs separate treatment:
+    template <typename ScalarType>
+    void resize(boost::numeric::ublas::compressed_matrix<ScalarType> & matrix,
+                size_t rows,
+                size_t cols)
+    {
+      matrix.resize(rows, cols, false); //Note: omitting third parameter leads to compile time error (not implemented in ublas <= 1.42) 
+    }
+    #endif  
+    
+    
+    #ifdef VIENNACL_HAVE_MTL4
+    template <typename ScalarType>
+    void resize(mtl::compressed2D<ScalarType> & matrix,
+                size_t rows,
+                size_t cols)
+    {
+      matrix.change_dim(rows, cols);
+    }
+    
+    template <typename ScalarType>
+    void resize(mtl::dense_vector<ScalarType> & vec,
+                size_t new_size)
+    {
+      vec.change_dim(new_size);
+    }
+    #endif      
+
+    #ifdef VIENNACL_HAVE_EIGEN
+    inline void resize(Eigen::MatrixXf & m,
+                       std::size_t new_rows,
+                       std::size_t new_cols)
+    {
+      m.resize(new_rows, new_cols);
+    }
+    
+    inline void resize(Eigen::MatrixXd & m,
+                       std::size_t new_rows,
+                       std::size_t new_cols)
+    {
+      m.resize(new_rows, new_cols);
+    }
+    
+    template <typename T, int options>
+    inline void resize(Eigen::SparseMatrix<T, options> & m,
+                       std::size_t new_rows,
+                       std::size_t new_cols)
+    {
+      m.resize(new_rows, new_cols);
+    }    
+    
+    inline void resize(Eigen::VectorXf & v,
+                       std::size_t new_size)
+    {
+      v.resize(new_size);
+    }
+    
+    inline void resize(Eigen::VectorXd & v,
+                       std::size_t new_size)
+    {
+      v.resize(new_size);
+    }
+    #endif
+
+
+    //
+    // size: Returns the length of vectors
+    //
+    template <typename VectorType>
+    typename result_of::size_type<VectorType>::type size(VectorType const & vec)
+    {
+      return vec.size(); 
+    }
+
+    #ifdef VIENNACL_HAVE_MTL4
+    template <typename ScalarType>
+    typename result_of::size_type< mtl::dense_vector<ScalarType> >::type
+    size(mtl::dense_vector<ScalarType> const & vec) { return vec.used_memory(); }
+    #endif
+    
+    #ifdef VIENNACL_HAVE_EIGEN
+    inline std::size_t size(Eigen::VectorXf const & v) { return v.rows(); }
+    inline std::size_t size(Eigen::VectorXd const & v) { return v.rows(); }
+    #endif
+
+    //
+    // size1: No. of rows for matrices
+    //
+    template <typename MatrixType>
+    typename result_of::size_type<MatrixType>::type
+    size1(MatrixType const & mat) { return mat.size1(); }
+
+    #ifdef VIENNACL_HAVE_EIGEN
+    inline std::size_t size1(Eigen::MatrixXf const & m) { return m.rows(); }
+    inline std::size_t size1(Eigen::MatrixXd const & m) { return m.rows(); }
+    template <typename T, int options>
+    inline std::size_t size1(Eigen::SparseMatrix<T, options> & m) { return m.rows(); }    
+    #endif
+
+    //
+    // size2: No. of columns for matrices
+    //
+    template <typename MatrixType>
+    typename result_of::size_type<MatrixType>::type
+    size2(MatrixType const & mat) { return mat.size2(); }
+ 
+    #ifdef VIENNACL_HAVE_EIGEN
+    inline std::size_t size2(Eigen::MatrixXf const & m) { return m.cols(); }
+    inline std::size_t size2(Eigen::MatrixXd const & m) { return m.cols(); }
+    template <typename T, int options>
+    inline std::size_t size2(Eigen::SparseMatrix<T, options> & m) { return m.cols(); }    
+    #endif
+ 
+    //
+    // internal_size: Returns the internal (padded) length of vectors
+    //
+    template <typename VectorType>
+    typename result_of::size_type<VectorType>::type 
+    internal_size(VectorType const & vec)
+    {
+      return vec.internal_size(); 
+    }
+
+    template <typename VectorType>
+    typename result_of::size_type<VectorType>::type 
+    internal_size(viennacl::vector_range<VectorType> const & vec)
+    {
+      return vec.get().internal_size(); 
+    }
+
+    //
+    // internal_size1: No. of internal (padded) rows for matrices
+    //
+    template <typename MatrixType>
+    typename result_of::size_type<MatrixType>::type
+    internal_size1(MatrixType const & mat) { return mat.internal_size1(); }
+
+    template <typename MatrixType>
+    typename result_of::size_type<MatrixType>::type
+    internal_size1(viennacl::matrix_range<MatrixType> const & mat) { return mat.get().internal_size1(); }
+
+    //
+    // internal_size2: No. of internal (padded) columns for matrices
+    //
+    template <typename MatrixType>
+    typename result_of::size_type<MatrixType>::type
+    internal_size2(MatrixType const & mat) { return mat.internal_size2(); }
+ 
+    template <typename MatrixType>
+    typename result_of::size_type<MatrixType>::type
+    internal_size2(viennacl::matrix_range<MatrixType> const & mat) { return mat.get().internal_size2(); }
+
+ 
+  } //namespace traits
+} //namespace viennacl
+    
+
+#endif
diff --git a/viennacl/traits/start.hpp b/viennacl/traits/start.hpp
new file mode 100644
index 0000000..eac447b
--- /dev/null
+++ b/viennacl/traits/start.hpp
@@ -0,0 +1,97 @@
+#ifndef VIENNACL_TRAITS_START_HPP_
+#define VIENNACL_TRAITS_START_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file start.hpp
+    @brief Extracts the underlying OpenCL start index handle from a vector, a matrix, an expression etc.
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+
+namespace viennacl
+{
+  namespace traits
+  {
+    //
+    // start: Mostly for vectors
+    //
+    
+    // Default: Try to get the start index from the .start() member function
+    template <typename T>
+    typename result_of::size_type<T>::type
+    start(T const & obj)
+    {
+      return obj.start();
+    }
+    
+    //ViennaCL vector leads to start index 0:
+    template <typename ScalarType, unsigned int ALIGNMENT>
+    typename result_of::size_type<viennacl::vector<ScalarType, ALIGNMENT> >::type
+    start(viennacl::vector<ScalarType, ALIGNMENT> const & v)
+    {
+      return 0; 
+    }
+
+    //
+    // start1: Row start index
+    //
+    
+    // Default: Try to get the start index from the .start1() member function
+    template <typename T>
+    typename result_of::size_type<T>::type
+    start1(T const & obj)
+    {
+      return obj.start1();
+    }
+
+    //ViennaCL matrix leads to start index 0:
+    template <typename ScalarType, typename F, unsigned int ALIGNMENT>
+    typename result_of::size_type<viennacl::matrix<ScalarType, F, ALIGNMENT> >::type
+    start1(viennacl::matrix<ScalarType, F, ALIGNMENT> const & v)
+    {
+      return 0; 
+    }
+
+
+    //
+    // start2: Column start index
+    //
+    template <typename T>
+    typename result_of::size_type<T>::type
+    start2(T const & obj)
+    {
+      return obj.start2();
+    }
+
+    //ViennaCL matrix leads to start index 0:
+    template <typename ScalarType, typename F, unsigned int ALIGNMENT>
+    typename result_of::size_type<viennacl::matrix<ScalarType, F, ALIGNMENT> >::type
+    start2(viennacl::matrix<ScalarType, F, ALIGNMENT> const & v)
+    {
+      return 0; 
+    }
+    
+
+  } //namespace traits
+} //namespace viennacl
+    
+
+#endif
diff --git a/viennacl/vandermonde_matrix.hpp b/viennacl/vandermonde_matrix.hpp
new file mode 100644
index 0000000..6da7c9c
--- /dev/null
+++ b/viennacl/vandermonde_matrix.hpp
@@ -0,0 +1,241 @@
+#ifndef VIENNACL_VANDERMONDE_MATRIX_HPP
+#define VIENNACL_VANDERMONDE_MATRIX_HPP
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <cmath>
+
+/** @file vandermonde_matrix.hpp
+    @brief Implementation of the vandermonde_matrix class for efficient manipulation of Vandermonde matrices.  Experimental in 1.2.x.
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/vector.hpp"
+#include "viennacl/ocl/context.hpp"
+
+#include "viennacl/fft.hpp"
+
+#include "viennacl/linalg/vandermonde_matrix_operations.hpp"
+
+namespace viennacl {
+    /** @brief A Vandermonde matrix class
+    *
+    * @tparam SCALARTYPE   The underlying scalar type (either float or double)
+    * @tparam ALIGNMENT    The internal memory size is given by (size()/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory.
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT>
+    class vandermonde_matrix
+    {
+      public:
+        /**
+         * @brief The default constructor. Does not allocate any memory.
+         *
+         */
+        explicit vandermonde_matrix()
+        {
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+        }
+
+        /**
+         * @brief         Creates the matrix with the given size
+         *
+         * @param rows      Number of rows of the matrix
+         * @param cols      Number of columns of the matrix
+         */
+        explicit vandermonde_matrix(std::size_t rows, std::size_t cols) : elements_(rows)
+        {
+          assert(rows == cols && "Vandermonde matrix must be square in this release!");
+          viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+        }
+
+        /** @brief Resizes the matrix.
+        *   Existing entries can be preserved
+        *
+        * @param sz         New size of matrix
+        * @param preserve   If true, existing values are preserved.
+        */
+        void resize(std::size_t sz, bool preserve = true) {
+            elements_.resize(sz, preserve);
+        }
+
+        /** @brief Returns the OpenCL handle
+        *
+        *   @return OpenCL handle
+        */
+        viennacl::ocl::handle<cl_mem> handle() const { return elements_.handle(); }
+
+        /**
+         * @brief Returns an internal viennacl::vector, which represents a Vandermonde matrix elements
+         *
+         */
+        viennacl::vector<SCALARTYPE, ALIGNMENT> & elements() { return elements_; }
+        viennacl::vector<SCALARTYPE, ALIGNMENT> const & elements() const { return elements_; }
+
+        /**
+         * @brief Returns the number of rows of the matrix
+         */
+        std::size_t size1() const { return elements_.size(); }
+        
+        /**
+         * @brief Returns the number of columns of the matrix
+         */
+        std::size_t size2() const { return elements_.size(); }
+
+        /** @brief Returns the internal size of matrix representtion.
+        *   Usually required for launching OpenCL kernels only
+        *
+        *   @return Internal size of matrix representation
+        */
+        std::size_t internal_size() const { return elements_.internal_size(); }
+
+        /**
+         * @brief Read-write access to a base element of the matrix
+         *
+         * @param row_index  Row index of accessed element
+         * @return Proxy for matrix entry
+         */
+        entry_proxy<SCALARTYPE> operator()(std::size_t row_index)
+        {
+            return elements_[row_index];
+        }
+
+        /**
+         * @brief Read access to a element of the matrix
+         *
+         * @param row_index  Row index of accessed element
+         * @param col_index  Column index of accessed element
+         * @return Proxy for matrix entry
+         */
+        SCALARTYPE operator()(std::size_t row_index, std::size_t col_index) const
+        {
+            assert(row_index < size1() && col_index < size2() && "Invalid access");
+            
+            return pow(elements_[row_index], static_cast<int>(col_index));
+        }
+
+    private:
+        vandermonde_matrix(vandermonde_matrix const & t) {}
+        vandermonde_matrix & operator=(vandermonde_matrix const & t) {}
+        
+        viennacl::vector<SCALARTYPE, ALIGNMENT> elements_;
+    };
+
+    /** @brief Copies a Vandermonde matrix from the std::vector to the OpenCL device (either GPU or multi-core CPU)
+    *
+    *
+    * @param cpu_vec   A std::vector on the host.
+    * @param gpu_mat   A vandermonde_matrix from ViennaCL
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    void copy(std::vector<SCALARTYPE>& cpu_vec, vandermonde_matrix<SCALARTYPE, ALIGNMENT>& gpu_mat)
+    {
+        assert(cpu_vec.size() == gpu_mat.size1()  && "Size mismatch");
+        copy(cpu_vec, gpu_mat.elements());
+    }
+
+    /** @brief Copies a Vandermonde matrix from the OpenCL device (either GPU or multi-core CPU) to the std::vector
+    *
+    *
+    * @param gpu_mat   A vandermonde_matrix from ViennaCL
+    * @param cpu_vec   A std::vector on the host.
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT>
+    void copy(vandermonde_matrix<SCALARTYPE, ALIGNMENT>& gpu_mat, std::vector<SCALARTYPE>& cpu_vec)
+    {
+        assert(cpu_vec.size() == gpu_mat.size1() && "Size mismatch");
+        copy(gpu_mat.elements(), cpu_vec);
+    }
+
+    /** @brief Copies a Vandermonde matrix from the OpenCL device (either GPU or multi-core CPU) to the matrix-like object
+    *
+    *
+    * @param vander_src   A vandermonde_matrix from ViennaCL
+    * @param com_dst   A matrix-like object
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+    void copy(vandermonde_matrix<SCALARTYPE, ALIGNMENT>& vander_src, MATRIXTYPE& com_dst)
+    {
+        std::size_t size = vander_src.size1();
+        assert(size == com_dst.size1() && "Size mismatch");
+        assert(size == com_dst.size2() && "Size mismatch");
+        std::vector<SCALARTYPE> tmp(size);
+        copy(vander_src, tmp);
+
+        for(std::size_t i = 0; i < size; i++) {
+            for(std::size_t j = 0; j < size; j++) {
+                com_dst(i, j) = pow(tmp[i], static_cast<int>(j));
+            }
+        }
+    }
+    
+    /** @brief Copies a the matrix-like object to the Vandermonde matrix from the OpenCL device (either GPU or multi-core CPU)
+    *
+    *
+    * @param com_src   A std::vector on the host
+    * @param vander_dst   A vandermonde_matrix from ViennaCL
+    */
+    template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+    void copy(MATRIXTYPE& com_src, vandermonde_matrix<SCALARTYPE, ALIGNMENT>& vander_dst) 
+    {
+        std::size_t size = vander_dst.size1();
+        assert(size == com_src.size1() && "Size mismatch");
+        assert(size == com_src.size2() && "Size mismatch");
+        std::vector<SCALARTYPE> tmp(size);
+
+        for(std::size_t i = 0; i < size; i++)
+            tmp[i] = com_src(i, 1);
+
+        copy(tmp, vander_dst);
+    }
+
+    /*template <typename SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+    void prod_impl(vandermonde_matrix<SCALARTYPE, ALIGNMENT>& mat,
+                   vector<SCALARTYPE, VECTOR_ALIGNMENT>& vec,
+                   vector<SCALARTYPE, VECTOR_ALIGNMENT>& result) {
+        assert(mat.size1() == vec.size());
+
+        fft::vandermonde_prod<SCALARTYPE>(mat.handle(), vec.handle(), result.handle(), mat.size1());
+    } */
+
+    /** @brief Prints the matrix. Output is compatible to boost::numeric::ublas
+    *
+    * @param s            STL output stream
+    * @param gpu_matrix   A ViennaCL Vandermonde matrix
+    */
+    template<class SCALARTYPE, unsigned int ALIGNMENT>
+    std::ostream & operator<<(std::ostream& s, vandermonde_matrix<SCALARTYPE, ALIGNMENT>& gpu_matrix)
+    {
+        std::size_t size = gpu_matrix.size1();
+        std::vector<SCALARTYPE> tmp(size);
+        copy(gpu_matrix, tmp);
+        s << "[" << size << "," << size << "](\n";
+
+        for(std::size_t i = 0; i < size; i++) {
+            s << "(";
+            for(std::size_t j = 0; j < size; j++) {
+                s << pow(tmp[i], j);
+                if(j < (size - 1)) s << ",";
+            }
+            s << ")";
+        }
+        s << ")";
+        return s;
+    }
+
+}
+
+#endif // _VIENNACL_VANDERMONDE_MATRIX_HPP
diff --git a/viennacl/vector.hpp b/viennacl/vector.hpp
index 8162c4b..fd5971a 100644
--- a/viennacl/vector.hpp
+++ b/viennacl/vector.hpp
@@ -1,24 +1,27 @@
-/* =======================================================================
-   Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
-   http://www.iue.tuwien.ac.at
-                             -----------------
-                     ViennaCL - The Vienna Computing Library
-                             -----------------
-                            
-   authors:    Karl Rupp                          rupp at iue.tuwien.ac.at
-               Florian Rudolf                     flo.rudy+viennacl at gmail.com
-               Josef Weinbub                      weinbub at iue.tuwien.ac.at
-
-   license:    MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+#ifndef VIENNACL_VECTOR_HPP_
+#define VIENNACL_VECTOR_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
 
 /** @file vector.hpp
     @brief The vector type with operator-overloads and proxy classes is defined here. 
            Linear algebra operations such as norms and inner products are located in linalg/vector_operations.hpp
 */
 
-#ifndef _VIENNACL_VECTOR_HPP_
-#define _VIENNACL_VECTOR_HPP_
 
 #include "viennacl/forwards.h"
 #include "viennacl/ocl/backend.hpp"
@@ -60,7 +63,7 @@ namespace viennacl
         RHS & rhs() const { return _rhs; }
         
         /** @brief Returns the size of the result vector */
-        unsigned int size() const { return viennacl::tools::VECTOR_SIZE_DEDUCER<LHS, RHS, OP>::size(_lhs, _rhs); }
+        std::size_t size() const { return viennacl::tools::VECTOR_SIZE_DEDUCER<LHS, RHS, OP>::size(_lhs, _rhs); }
         
       private:
         /** @brief The left hand side operand */
@@ -126,13 +129,13 @@ namespace viennacl
         difference_type operator-(self_type const & other) const { difference_type result = index_; return result - other.index_; }
         self_type operator+(difference_type diff) const { return self_type(elements_, index_ + diff); }
         
-        unsigned int index() const { return index_; }
+        std::size_t index() const { return index_; }
         viennacl::ocl::handle<cl_mem> const & handle() const { return elements_; }
 
       protected:
         /** @brief  The index of the entry the iterator is currently pointing to */
         viennacl::ocl::handle<cl_mem> elements_;
-        unsigned int index_;
+        std::size_t index_;
     };
     
 
@@ -162,7 +165,7 @@ namespace viennacl
         typedef vector_iterator<SCALARTYPE, ALIGNMENT>        self_type;
       public:
         vector_iterator() : base_type(){};
-        vector_iterator(viennacl::ocl::handle<cl_mem> const & elements, unsigned int index)  : base_type(elements, index) {};
+        vector_iterator(viennacl::ocl::handle<cl_mem> const & elements, std::size_t index)  : base_type(elements, index) {};
         /** @brief Constructor
         *   @param vec    The vector over which to iterate
         *   @param index  The starting index of the iterator
@@ -204,6 +207,8 @@ namespace viennacl
       typedef vcl_ptrdiff_t                                     difference_type;
       typedef const_vector_iterator<SCALARTYPE, ALIGNMENT>      const_iterator;
       typedef vector_iterator<SCALARTYPE, ALIGNMENT>            iterator;
+      
+      static const int alignment = ALIGNMENT;
 
       /** @brief Default constructor in order to be compatible with various containers.
       */
@@ -481,8 +486,9 @@ namespace viennacl
                                                                        op_prod> & proxy);
                                                                        
                                                                        
-                                                                       
+      //                                                                 
       //////////// compressed_matrix<>
+      //
       /** @brief Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type compressed_matrix.
       *
       * @param proxy An expression template proxy class
@@ -528,8 +534,9 @@ namespace viennacl
                                                                        const vector<SCALARTYPE, ALIGNMENT>,
                                                                        op_prod> & proxy);
 
-
-      //coordinate_matrix<>
+      //
+      // coordinate_matrix<>
+      //
       /** @brief Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type coordinate_matrix.
       *
       * @param proxy An expression template proxy class
@@ -575,6 +582,202 @@ namespace viennacl
                                                                        const vector<SCALARTYPE, ALIGNMENT>,
                                                                        op_prod> & proxy);
 
+      //
+      // circulant_matrix<>
+      //
+      /** @brief Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> & operator=(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                const vector<SCALARTYPE, ALIGNMENT>,
+                                                op_prod> & proxy);
+
+      /** @brief Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> & operator+=(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                          const vector<SCALARTYPE, ALIGNMENT>,
+                                                                          op_prod> & proxy);
+                                                
+      /** @brief Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> & operator-=(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                          const vector<SCALARTYPE, ALIGNMENT>,
+                                                                          op_prod> & proxy);
+
+      /** @brief Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> operator+(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                       const vector<SCALARTYPE, ALIGNMENT>,
+                                                                       op_prod> & proxy);
+
+      /** @brief Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> operator-(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                       const vector<SCALARTYPE, ALIGNMENT>,
+                                                                       op_prod> & proxy);
+
+
+      //
+      // hankel_matrix<>
+      //
+      /** @brief Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> & operator=(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                const vector<SCALARTYPE, ALIGNMENT>,
+                                                op_prod> & proxy);
+
+      /** @brief Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> & operator+=(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                          const vector<SCALARTYPE, ALIGNMENT>,
+                                                                          op_prod> & proxy);
+                                                
+      /** @brief Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> & operator-=(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                          const vector<SCALARTYPE, ALIGNMENT>,
+                                                                          op_prod> & proxy);
+
+      /** @brief Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> operator+(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                       const vector<SCALARTYPE, ALIGNMENT>,
+                                                                       op_prod> & proxy);
+
+      /** @brief Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> operator-(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                       const vector<SCALARTYPE, ALIGNMENT>,
+                                                                       op_prod> & proxy);
+
+      //
+      // toeplitz_matrix<>
+      //
+      /** @brief Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> & operator=(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                const vector<SCALARTYPE, ALIGNMENT>,
+                                                op_prod> & proxy);
+
+      /** @brief Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> & operator+=(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                          const vector<SCALARTYPE, ALIGNMENT>,
+                                                                          op_prod> & proxy);
+                                                
+      /** @brief Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> & operator-=(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                          const vector<SCALARTYPE, ALIGNMENT>,
+                                                                          op_prod> & proxy);
+
+      /** @brief Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> operator+(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                       const vector<SCALARTYPE, ALIGNMENT>,
+                                                                       op_prod> & proxy);
+
+      /** @brief Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> operator-(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                       const vector<SCALARTYPE, ALIGNMENT>,
+                                                                       op_prod> & proxy);
+
+      
+      //
+      // vandermonde_matrix<>
+      //
+      /** @brief Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> & operator=(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                const vector<SCALARTYPE, ALIGNMENT>,
+                                                op_prod> & proxy);
+
+      /** @brief Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> & operator+=(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                          const vector<SCALARTYPE, ALIGNMENT>,
+                                                                          op_prod> & proxy);
+                                                
+      /** @brief Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> & operator-=(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                          const vector<SCALARTYPE, ALIGNMENT>,
+                                                                          op_prod> & proxy);
+
+      /** @brief Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> operator+(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                       const vector<SCALARTYPE, ALIGNMENT>,
+                                                                       op_prod> & proxy);
+
+      /** @brief Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+      *
+      * @param proxy An expression template proxy class
+      */
+      template <unsigned int MAT_ALIGNMENT>
+      vector<SCALARTYPE, ALIGNMENT> operator-(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+                                                                       const vector<SCALARTYPE, ALIGNMENT>,
+                                                                       op_prod> & proxy);
+
+      
+      
       ///////////////////////////// Matrix Vector interaction end ///////////////////////////////////
 
       //enlarge or reduce allocated memory and set unused memory to zero
@@ -589,7 +792,7 @@ namespace viennacl
         
         if (new_size != size_)
         {
-          unsigned int new_internal_size = viennacl::tools::roundUpToNextMultiple<unsigned int>(new_size, ALIGNMENT);
+          std::size_t new_internal_size = viennacl::tools::roundUpToNextMultiple<std::size_t>(new_size, ALIGNMENT);
         
           std::vector<SCALARTYPE> temp(size_);
           if (preserve && size_ > 0)
@@ -1017,7 +1220,10 @@ namespace viennacl
       {
         viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "clear");
         
-        viennacl::ocl::enqueue(k(elements_, static_cast<cl_uint>(internal_size())));
+        viennacl::ocl::enqueue(k(elements_,
+                                 cl_uint(0),
+                                 cl_uint(internal_size()))
+                              );
       }
       //void swap(vector & other){}
       
@@ -1167,6 +1373,7 @@ namespace viennacl
               CPU_ITERATOR const & cpu_end,
               vector_iterator<SCALARTYPE, ALIGNMENT> gpu_begin)
     {
+      assert(cpu_end - cpu_begin > 0);
       if (cpu_begin != cpu_end)
       {
         //we require that the size of the gpu_vector is larger or equal to the cpu-size
@@ -1348,17 +1555,19 @@ namespace viennacl
     *
     * @param vec1   The first vector
     * @param vec2   The second vector
-    * @param NUM_THREADS  The number of threads per work group
     */
     template<class SCALARTYPE, unsigned int ALIGNMENT>
     void swap(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
               viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2)
     {
-      assert(vec1.size() == vec2.size());
+      assert(viennacl::traits::size(vec1) == viennacl::traits::size(vec2)
+             && "Incompatible vector sizes in swap()");
 
       viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "swap");
 
-      viennacl::ocl::enqueue(k(vec1, vec2, static_cast<cl_uint>(vec1.size())));
+      viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+                               viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)))
+                            );
     }
     
     /** @brief Swaps the content of two vectors by swapping OpenCL handles only, NO data is copied
diff --git a/viennacl/vector_proxy.hpp b/viennacl/vector_proxy.hpp
new file mode 100644
index 0000000..b8ca885
--- /dev/null
+++ b/viennacl/vector_proxy.hpp
@@ -0,0 +1,150 @@
+#ifndef VIENNACL_VECTOR_PROXY_HPP_
+#define VIENNACL_VECTOR_PROXY_HPP_
+
+/* =========================================================================
+   Copyright (c) 2010-2011, Institute for Microelectronics,
+                            Institute for Analysis and Scientific Computing,
+                            TU Wien.
+
+                            -----------------
+                  ViennaCL - The Vienna Computing Library
+                            -----------------
+
+   Project Head:    Karl Rupp                   rupp at iue.tuwien.ac.at
+               
+   (A list of authors and contributors can be found in the PDF manual)
+
+   License:         MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file vector_proxy.hpp
+    @brief Proxy classes for vectors.
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/range.hpp"
+#include "viennacl/vector.hpp"
+
+namespace viennacl
+{
+
+  template <typename VectorType>
+  class vector_range
+  {
+      typedef vector_range<VectorType>            self_type;
+    
+    public:
+      typedef typename VectorType::value_type     value_type;
+      typedef range::size_type                    size_type;
+      typedef range::difference_type              difference_type;
+      typedef value_type                          reference;
+      typedef const value_type &                  const_reference;
+      
+      static const int alignment = VectorType::alignment;
+      
+      vector_range(VectorType & v, 
+                   range const & entry_range) : v_(v), entry_range_(entry_range) {}
+                   
+      size_type start() const { return entry_range_.start(); }
+      size_type size() const { return entry_range_.size(); }
+
+      template <typename LHS, typename RHS, typename OP>
+      self_type & operator = (const vector_expression< LHS,
+                                                       RHS,
+                                                       OP > & proxy) 
+      {
+        assert( false && "Not implemented!");
+        return *this;
+      }      
+      
+      self_type & operator += (self_type const & other)
+      {
+        viennacl::linalg::inplace_add(*this, other);
+        return *this;
+      }
+      
+
+      //const_reference operator()(size_type i, size_type j) const { return A_(start1() + i, start2() + i); }
+      //reference operator()(size_type i, size_type j) { return A_(start1() + i, start2() + i); }
+
+      VectorType & get() { return v_; }
+      const VectorType & get() const { return v_; }
+
+    private:
+      VectorType & v_;
+      range entry_range_;
+  };
+
+  
+  template<typename VectorType>
+  std::ostream & operator<<(std::ostream & s, vector_range<VectorType> const & proxy)
+  {
+    typedef typename VectorType::value_type   ScalarType;
+    std::vector<ScalarType> temp(proxy.size());
+    viennacl::copy(proxy, temp);
+    
+    //instead of printing 'temp' directly, let's reuse the existing functionality for viennacl::vector. It certainly adds overhead, but printing a vector is typically not about performance...
+    VectorType temp2(temp.size());
+    viennacl::copy(temp, temp2);
+    s << temp2;
+    return s;
+  }
+  
+  
+  
+  
+  /////////////////////////////////////////////////////////////
+  ///////////////////////// CPU to GPU ////////////////////////
+  /////////////////////////////////////////////////////////////
+  
+  //row_major:
+  template <typename VectorType, typename SCALARTYPE>
+  void copy(const VectorType & cpu_vector,
+            vector_range<vector<SCALARTYPE> > & gpu_vector_range )
+  {
+    assert(cpu_vector.end() - cpu_vector.begin() >= 0);
+    
+    if (cpu_vector.end() - cpu_vector.begin() > 0)
+    {
+      //we require that the size of the gpu_vector is larger or equal to the cpu-size
+      std::vector<SCALARTYPE> temp_buffer(cpu_vector.end() - cpu_vector.begin());
+      std::copy(cpu_vector.begin(), cpu_vector.end(), temp_buffer.begin());
+      cl_int err = clEnqueueWriteBuffer(viennacl::ocl::get_queue().handle(),
+                                        gpu_vector_range.get().handle(), CL_TRUE, sizeof(SCALARTYPE)*gpu_vector_range.start(),
+                                        sizeof(SCALARTYPE)*temp_buffer.size(),
+                                        &(temp_buffer[0]), 0, NULL, NULL);
+      VIENNACL_ERR_CHECK(err);
+    }
+  }
+  
+
+  /////////////////////////////////////////////////////////////
+  ///////////////////////// GPU to CPU ////////////////////////
+  /////////////////////////////////////////////////////////////
+  
+
+  template <typename VectorType, typename SCALARTYPE>
+  void copy(vector_range<vector<SCALARTYPE> > const & gpu_vector_range,
+            VectorType & cpu_vector)
+  {
+    assert(cpu_vector.end() - cpu_vector.begin() >= 0);
+    
+    if (cpu_vector.end() > cpu_vector.begin())
+    {
+      std::vector<SCALARTYPE> temp_buffer(cpu_vector.end() - cpu_vector.begin());
+      cl_int err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(),
+                                        gpu_vector_range.get().handle(), CL_TRUE, sizeof(SCALARTYPE)*gpu_vector_range.start(), 
+                                        sizeof(SCALARTYPE)*temp_buffer.size(),
+                                        &(temp_buffer[0]), 0, NULL, NULL);
+      VIENNACL_ERR_CHECK(err);
+      viennacl::ocl::get_queue().finish();
+      
+      //now copy entries to cpu_vec:
+      std::copy(temp_buffer.begin(), temp_buffer.end(), cpu_vector.begin());
+    }
+  }
+
+
+}
+
+#endif
\ No newline at end of file

-- 
ViennaCL packaging



More information about the debian-science-commits mailing list